日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 手势事件 重写,Android实现通过手势控制图片大小缩放的方法

發布時間:2023/12/31 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 手势事件 重写,Android实现通过手势控制图片大小缩放的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了Android實現通過手勢控制圖片大小縮放的方法。分享給大家供大家參考,具體如下:

該程序實現的是通過手勢來縮放圖片,從左向右揮動圖片時圖片被放大,從右向左揮動圖片時圖片被縮小,揮動速度越快,縮放比越大。程序思路如下:在界面中定義一個ImageView來顯示圖片,使用一個GestureDetector來檢測用戶的手勢,并根據用戶的手勢在橫向的速度來縮放圖片。

在介紹這個實例前,先介紹一下Android中處理手勢觸摸事件的大概框架。

一、添加語句實現OnGestureListener手勢監聽器,代碼如下:

public classGestureZoom extends Activity implements OnGestureListener

二、定義一個手勢監聽器的全局實例,并在onCreate函數中對其進行初始化,代碼如下:

GestureDetector detector;

@Override

public void onCreate(Bundle savedInstanceState)

{

... ...

detector = new GestureDetector(this);

}

三、重寫onTouchEvent函數,把本Activity的觸摸事件交給GestureDetector處理,代碼如下:

@Override

public boolean onTouchEvent(MotionEvent me)

{

return detector.onTouchEvent(me);

}

四、重寫你需要監聽的手勢的函數,默認包括如下幾種手勢:

BooleanonDown(MotionEvent e):按下。

BooleanonFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY):拖過、滑動。

abstract voidonLongPress(MotionEvent e):長按。

BooleanonScroll(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY):滾動。

voidonShowPress(MotionEvent e):按下且未移動和松開。

BooleanonSingleTapUp(MotionEvent e):輕擊。

這幾種手勢是系統默認提供的,根據描述大家可能還是不太明確這幾種手勢,最好的方法就是大家可以實現一個簡單的程序實驗一下就明白了。當然,除了這些默認的手勢,也可以自行添加手勢,篇幅有限就不再贅述了。

接下來給出通過滑動來實現圖片縮放的實例,對比上面給出的基本框架,其實就是重寫了onFling函數,在其中定義了如何處理滑動事件。

首先定義除了手勢監聽器外一些全局對象,并在onCreate函數中做相應的初始化:

GestureDetectordetector;

ImageViewimageView;

Bitmap bitmap;//保存圖片資源

int width,height;// 記錄圖片的寬、高

floatcurrentScale = 1;// 記錄當前的縮放比

Matrix matrix;//控制圖片縮放的Matrix對象

@Override

public voidonCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

detector = new GestureDetector(this);

imageView = (ImageView)findViewById(R.id.show);

matrix = new Matrix();

bitmap =BitmapFactory.decodeResource(this.getResources(), );//獲取被縮放的源圖片,因為不能對原有圖片進行修改,所以必須轉化為位圖

width = bitmap.getWidth();

height = bitmap.getHeight();

imageView.setImageBitmap(BitmapFactory.decodeResource(this.getResources(), ));//設置ImageView初始化時顯示的圖片

}

一、觸摸時間綁定手勢監聽器,和前面是一樣的,就不再貼代碼了。

二、重寫onFling函數:

@Override

publicboolean onFling(MotionEvent event1, MotionEvent event2

, float velocityX, float velocityY)

{

velocityX = velocityX > 4000 ? 4000 :velocityX;

velocityX = velocityX < -4000 ? -4000: velocityX;

//根據手勢的速度來計算縮放比,如果velocityX>0,放大圖像,否則縮小圖像。

currentScale += currentScale * velocityX/ 4000.0f;

//保證currentScale不會等于0

currentScale = currentScale > 0.01 ?currentScale : 0.01f;

// 重置Matrix

matrix.reset();

// 縮放Matrix

matrix.setScale(currentScale,currentScale , 160 , 200);

BitmapDrawable tmp = (BitmapDrawable)imageView.getDrawable();

//如果圖片還未回收,先強制回收該圖片

if (!tmp.getBitmap().isRecycled())

{

tmp.getBitmap().recycle();

}

// 根據原始位圖和Matrix創建新圖片

Bitmap bitmap2 =Bitmap.createBitmap(bitmap

,0, 0, width, height, matrix, true);

// 顯示新的位圖

imageView.setImageBitmap(bitmap2);

return true;

}

布局文件僅僅添加了一個ImageView控件,大家自己畫一下。在這里沒有截圖,因為截圖也看不出效果,大家就自己試試吧。好了,至此就實現了通過手勢滑動來實現圖片縮放,以上內容學習自瘋狂Android一書。

更多關于Android相關內容感興趣的讀者可查看本站專題:《Android圖形與圖像處理技巧總結》、《Android視圖View技巧總結》、《Android開發入門與進階教程》、《Android調試技巧與常見問題解決方法匯總》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結》、《Android布局layout技巧總結》及《Android控件用法總結》

希望本文所述對大家Android程序設計有所幫助。

文章標題: Android實現通過手勢控制圖片大小縮放的方法

文章地址: http://www.shengbangshenghua.com/ruanjian/78289.html

總結

以上是生活随笔為你收集整理的android 手势事件 重写,Android实现通过手势控制图片大小缩放的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。