Android 用手勢切換activity
package rw.gest;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.LinearLayout; import android.widget.Toast; public class Gest01Activity extends Activity{
GestureDetector detector; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); detector=new GestureDetector(new GestureListener()); LinearLayout layout=(LinearLayout)findViewById(R.id.linearlayout); layout.setOnTouchListener(new TouhListener()); layout.setLongClickable(true); }
//觸摸屏幕監聽 class TouhListener implements OnTouchListener{
@Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "----?", event.getAction()).show(); return detector.onTouchEvent(event); } } //手勢滑動監聽 class GestureListener implements OnGestureListener{ @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub /* * 當觸摸屏幕是使用這個函數 */ Toast.makeText(getApplicationContext(), "-----------> onDown", Toast.LENGTH_LONG).show(); return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // e1 觸摸的起始位置,e2 觸摸的結束位置,velocityX X軸每一秒移動的像素速度(大概這個意思) velocityY 就是Y咯 //手勢左,上為正 ——,右,下為負正 if (e2.getX()-e1.getX()>50) { //為什么是50? 這個根據你的模擬器大小來定,看看模擬器寬度,e2.getX()-e1.getX()<屏幕寬度就OK Toast.makeText(getApplicationContext(), "向右滑動", Toast.LENGTH_LONG).show(); //要觸發什么事件都在這里寫就OK //如果要跳轉到另外一個activity Intent intent=new Intent(Gest01Activity.this, toActivity.class); startActivity(intent); } if (Math.abs(e2.getX()-e1.getX())>50) { Toast.makeText(getApplicationContext(), "向左滑動", Toast.LENGTH_LONG).show(); } if (Math.abs(e2.getY()-e1.getY())>50) { Toast.makeText(getApplicationContext(), "向上滑動", Toast.LENGTH_LONG).show(); } if (e2.getY()-e1.getY()>50) { Toast.makeText(getApplicationContext(), "向下滑動", Toast.LENGTH_LONG).show(); } return false; } @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub\ /* * 長按事件 一切長事件按屏幕想要觸發的事件都在這里寫 */ Toast.makeText(getApplicationContext(), "------------> onLongPress", Toast.LENGTH_LONG).show(); } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // TODO Auto-generated method stub /* * 這個函數大概是這樣,英語差了,有誤差。distanceX 是X軸路徑長度,distanceY 是Y軸路徑長度(注意:是路徑,不是位移); */ Toast.makeText(getApplicationContext(), "------------> onScroll", Toast.LENGTH_LONG).show(); return false; } @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub /* * */ Toast.makeText(getApplicationContext(), "------------> onShowPress", Toast.LENGTH_LONG).show(); } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "------------> onSingleTapUp", Toast.LENGTH_LONG).show(); return false; } }
}</pre>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/linearlayout" >
<ImageView android:src="@drawable/eight" android:id="@+id/imageView1" android:layout_height="match_parent" android:layout_width="match_parent"></ImageView> </LinearLayout></pre>
先上代碼再看圖,解釋在代碼中.............
![]()
轉自:http://blog.csdn.net/rwyz1314/article/details/6684660
本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!