歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android的數據存儲與IO - 手勢

Android的數據存儲與IO - 手勢

關於手勢的知識,我是第一次接觸,是Android提供的另類的IO

可以進行手勢檢測、通過指定手勢完成相應的動作、可以自行添加手勢到手勢庫,也可以識別手勢

下面是一個實例:通過手勢縮放圖片

創建項目:GestureZoom

運行項目效果如下:

Activity文件:GestureZoom

  1. package wwj.gesturezoom;  
  2.   
  3. import android.app.Activity;  
  4. import android.graphics.Bitmap;  
  5. import android.graphics.BitmapFactory;  
  6. import android.graphics.Matrix;  
  7. import android.graphics.drawable.BitmapDrawable;  
  8. import android.os.Bundle;  
  9. import android.view.GestureDetector;  
  10. import android.view.GestureDetector.OnGestureListener;  
  11. import android.view.MotionEvent;  
  12. import android.widget.ImageView;  
  13.   
  14. public class GestureZoom extends Activity implements OnGestureListener {  
  15.       
  16.     //定義手勢檢測器實例   
  17.     GestureDetector detector;  
  18.     ImageView imageView;  
  19.     //初始圖片資源   
  20.     Bitmap bitmap;  
  21.     //定義圖片的寬、高   
  22.     int width, height;  
  23.     //記錄當前的縮放比   
  24.     float currentScale = 1;  
  25.     //控制圖片縮放的Matrix對象   
  26.     Matrix matrix;  
  27.     @Override  
  28.     public void onCreate(Bundle savedInstanceState) {  
  29.         super.onCreate(savedInstanceState);  
  30.         setContentView(R.layout.main);  
  31.         //創建手勢檢測器   
  32.         detector = new GestureDetector(this);  
  33.         imageView = (ImageView)findViewById(R.id.show);  
  34.         matrix = new Matrix();  
  35.         //獲取被縮放的源圖片   
  36.         bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.flower);  
  37.         //獲得位圖寬   
  38.         width = bitmap.getWidth();  
  39.         //獲得位圖高   
  40.         height = bitmap.getHeight();  
  41.         //設置ImageView初始化時顯示的圖片   
  42.         imageView.setImageBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.flower));  
  43.     }  
  44.     @Override  
  45.     public boolean onTouchEvent(MotionEvent event) {  
  46.         // TODO Auto-generated method stub   
  47.         //將該Acitivity上觸碰事件交給GestureDetector處理   
  48.         return detector.onTouchEvent(event);  
  49.     }  
  50.     public boolean onDown(MotionEvent e) {  
  51.         // TODO Auto-generated method stub   
  52.         return false;  
  53.     }  
  54.     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,  
  55.             float velocityY) {  
  56.         // TODO Auto-generated method stub   
  57.         velocityX = velocityX > 4000 ? 4000 : velocityX;  
  58.         velocityY = velocityY < -4000 ? -4000 : velocityY;  
  59.         //根據手勢的速度來計算縮放比,如果velocity > 0, 放大圖像,否則縮小圖像   
  60.         currentScale += currentScale * velocityX / 4000.0f;  
  61.         //保證currentScale不會等於0   
  62.         currentScale = currentScale > 0.01 ? currentScale : 0.01f;  
  63.         //重置Matrix   
  64.         matrix.reset();  
  65.         //縮放Matrix   
  66.         matrix.setScale(currentScale, currentScale, 160200);  
  67.         BitmapDrawable tmp = (BitmapDrawable) imageView.getDrawable();  
  68.         //如果圖片還未回收,先強制回收該圖片   
  69.         if(!tmp.getBitmap().isRecycled()){  
  70.             tmp.getBitmap().recycle();  
  71.         }  
  72.         //根據原始位圖和Matrix創建新圖片   
  73.         Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 00, width, height, matrix, true);  
  74.         //顯示新的位圖   
  75.         imageView.setImageBitmap(bitmap2);  
  76.         return true;  
  77.     }  
  78.     public void onLongPress(MotionEvent e) {  
  79.         // TODO Auto-generated method stub   
  80.           
  81.     }  
  82.     public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,  
  83.             float distanceY) {  
  84.         // TODO Auto-generated method stub   
  85.         return false;  
  86.     }  
  87.     public void onShowPress(MotionEvent e) {  
  88.         // TODO Auto-generated method stub   
  89.           
  90.     }  
  91.     public boolean onSingleTapUp(MotionEvent e) {  
  92.         // TODO Auto-generated method stub   
  93.         return false;  
  94.     }  
  95.       
  96. }  
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11
Copyright © Linux教程網 All Rights Reserved