2013年12月31日星期二

2013年12月28日星期六

創建圓角的EditText

創建圓角的EditText:


首先創建/res/drawable/roundcorner.xml文件.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="5dp"
    android:shape="rectangle" >
    <solid android:color="#B0B0B0" />
    <corners
        android:bottomLeftRadius="10dp"
        android:bottomRightRadius="10dp"
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp" />
</shape>


在佈局文件, 設置android:background="@drawable/roundcorner".
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10sp"
        android:drawablePadding="5dp"
        android:drawableStart="@drawable/ic_launcher"
        android:gravity="left|bottom"
        android:textColor="#F0F0F0"
        android:background="@drawable/roundcorner"
        android:hint="hello" >
    </EditText>

</LinearLayout>

在EditText上添加圖標

在EditText上添加圖標的實例:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10sp"
        android:drawablePadding="5dp"
        android:drawableStart="@drawable/ic_launcher"
        android:gravity="left|bottom"
        android:textColor="#F0F0F0"
        android:background="#B0B0B0"
        android:hint="hello" >
    </EditText>

</LinearLayout>

2013年12月24日星期二

Google Maps Android API Utility Library (谷歌地圖AndroidAPI工具庫)

Google Maps Android API Utility Library (谷歌地圖AndroidAPI工具庫) 是一個開放源碼的類庫, 為地圖應用程序提供先進的功能. 這是提供源代碼的 GitHub 網站.

Maps Shortcuts: Android Maps Utility Library

2013年12月18日星期三

谷歌時代精神 - Here's to 2013

Google Zeitgeist | Here's to 2013

2013年時代精神. 認識世界搜索了什麼, 與谷歌的一年回顧.
http://www.google.com/zeitgeist

2013年12月10日星期二

2013年12月8日星期日

實現 GestureDetector.OnGestureListener 檢測手勢

這個示例代碼通過實現 GestureDetector.OnGestureListener 檢測用戶的手勢操作:
實現 GestureDetector.OnGestureListener 檢測手勢
實現 GestureDetector.OnGestureListener 檢測手勢

package com.example.androidgesturedetector;

import android.os.Bundle;
import android.app.Activity;
import android.support.v4.view.GestureDetectorCompat;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.TextView;

public class MainActivity extends Activity {

 String info;
 TextView infoView;
 private GestureDetectorCompat myGestureDetectorCompat;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // setContentView(R.layout.activity_main);
  infoView = new TextView(this);
  setContentView(infoView);

  info = "";
  infoView.setText(info);

  myGestureDetectorCompat = new GestureDetectorCompat(this,
    myOnGestureListener);
 }

 @Override
 public boolean onTouchEvent(MotionEvent event) {
  myGestureDetectorCompat.onTouchEvent(event);
  return super.onTouchEvent(event);
 }

 GestureDetector.OnGestureListener myOnGestureListener = new 
   GestureDetector.OnGestureListener() {

  @Override
  public boolean onDown(MotionEvent e) {
   info = "onDown - " + e.getX() + " : " + e.getY() + "\n";
   infoView.setText(info);
   return false;
  }

  @Override
  public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
    float velocityY) {
   info += "onFling - " + "\n" + " e1 - " + e1.getX() + " : "
     + e1.getY() + "\n" + " e2 - " + e2.getX() + " : "
     + e2.getY() + "\n" + " velocityX = " + velocityX + "\n"
     + " velocityY = " + velocityY + "\n";
   infoView.setText(info);
   return false;
  }

  @Override
  public void onLongPress(MotionEvent e) {
   info += "onLongPress - " + e.getX() + " : " + e.getY() + "\n";
   infoView.setText(info);
  }

  @Override
  public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,
    float arg3) {
   info += "onScroll\n";
   infoView.setText(info);
   return false;
  }

  @Override
  public void onShowPress(MotionEvent e) {
   info += "onShowPress - " + e.getX() + " : " + e.getY() + "\n";
   infoView.setText(info);
  }

  @Override
  public boolean onSingleTapUp(MotionEvent e) {
   info += "onSingleTapUp - " + e.getX() + " : " + e.getY() + "\n";
   infoView.setText(info);
   return false;
  }
 };

}


相關帖子:
- 手勢檢測 GestureDetector.SimpleOnGestureListener

2013年12月2日星期一

手勢檢測 GestureDetector.SimpleOnGestureListener

GestureDetector.SimpleOnGestureListener 類為檢測手勢(Gesture)提供一種簡單的方式. 它實現了 GestureDetector.OnGestureListener 和 GestureDetector.OnDoubleTapListener 的所有方法. 你只需要擴展 GestureDetector.SimpleOnGestureListener 子類,並重寫所需的方法便可以。

返回值: 如果該事件被消耗掉 return true,否則 return false.

示例代碼:

package com.example.androidsimpleongesturelistener;

import android.os.Bundle;
import android.support.v4.view.GestureDetectorCompat;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.TextView;
import android.app.Activity;

public class MainActivity extends Activity {
 
 private GestureDetectorCompat myGestureDetector;
 String info;
 TextView infoView;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  //setContentView(R.layout.activity_main); 
  infoView = new TextView(this);
  setContentView(infoView);

  info = "";
  infoView.setText(info);
  
  myGestureDetector = 
    new GestureDetectorCompat(this, new MyGestureListener());
 }

 @Override
 public boolean onTouchEvent(MotionEvent event) {
  this.myGestureDetector.onTouchEvent(event);
  return super.onTouchEvent(event);
 }

 class MyGestureListener extends GestureDetector.SimpleOnGestureListener {

  @Override
  public boolean onDoubleTap(MotionEvent e) {
   info += "onDoubleTap - " + 
     e.getX() + " : " + e.getY() + 
     "\n";
   infoView.setText(info);
   return super.onDoubleTap(e);
  }

  @Override
  public boolean onDoubleTapEvent(MotionEvent e) {
   info += "onDoubleTapEvent - " + 
     e.getX() + " : " + e.getY() + 
     "\n";
   infoView.setText(info);
   return super.onDoubleTapEvent(e);
  }

  @Override
  public boolean onDown(MotionEvent e) {
   info = "onDown - " + 
     e.getX() + " : " + e.getY() + 
     "\n";
   infoView.setText(info);
   return super.onDown(e);
  }

  @Override
  public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
    float velocityY) {
   info += "onFling - " + "\n" +
     " e1 - " + e1.getX() + " : " + e1.getY() + "\n" +
     " e2 - " + e2.getX() + " : " + e2.getY() + "\n" +
     " velocityX = " + velocityX + "\n" +
     " velocityY = " + velocityY + "\n";
   infoView.setText(info);
   return super.onFling(e1, e2, velocityX, velocityY);
  }

  @Override
  public void onLongPress(MotionEvent e) {
   info += "onLongPress - " + 
     e.getX() + " : " + e.getY() + 
     "\n";
   infoView.setText(info);
   super.onLongPress(e);
  }

  @Override
  public boolean onScroll(MotionEvent e1, MotionEvent e2,
    float distanceX, float distanceY) {
   /*
   info += "onScroll - " + "\n" +
     " e1 - " + e1.getX() + " : " + e1.getY() + "\n" +
     " e2 - " + e2.getX() + " : " + e2.getY() + "\n" +
     " distanceX = " + distanceX + "\n" +
     " distanceY = " + distanceY + "\n";
   infoView.setText(info);
   */
   info += "onScroll\n";
   infoView.setText(info);
   return super.onScroll(e1, e2, distanceX, distanceY);
  }

  @Override
  public void onShowPress(MotionEvent e) {
   info += "onShowPress - " + 
     e.getX() + " : " + e.getY() + 
     "\n";
   infoView.setText(info);
   super.onShowPress(e);
  }

  @Override
  public boolean onSingleTapConfirmed(MotionEvent e) {
   info += "onSingleTapConfirmed - " + 
     e.getX() + " : " + e.getY() + 
     "\n";
   infoView.setText(info);
   return super.onSingleTapConfirmed(e);
  }

  @Override
  public boolean onSingleTapUp(MotionEvent e) {
   info += "onSingleTapUp - " + 
     e.getX() + " : " + e.getY() + 
     "\n";
   infoView.setText(info);
   return super.onSingleTapUp(e);
  }
 }
}


手勢檢測 GestureDetector.SimpleOnGestureListener
手勢檢測 GestureDetector.SimpleOnGestureListener


相關帖子:
- 實現 GestureDetector.OnGestureListener 檢測手勢