国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android實現(xiàn)圖片拖拉功能

2019-12-12 01:23:07
字體:
供稿:網(wǎng)友

這次記錄的是實現(xiàn)Android圖片用手拖拉的功能,,供大家參考,具體內(nèi)容如下

編譯環(huán)境:eclipse
Android版本4.0

創(chuàng)建工程過程略

實現(xiàn)圖片在頁面內(nèi)的拖拉

原理圖:

計算出手指移動的位移,通過matrix矩陣對象,將圖片空間矩陣化之后根據(jù)手指位移讓矩陣移動,
從而達(dá)到圖片移動的效果

實現(xiàn)圖片在頁面內(nèi)的拖拉
mian.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:orientation="vertical"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  tools:context="com.example.dragscale.MainActivity" >    <!--scaleType="matrix"采用矩陣來實現(xiàn)圖片的拖拉或放大-->  <ImageView   android:layout_width="fill_parent"   android:layout_height="fill_parent"   android:src="@drawable/keep"   android:scaleType="matrix"   android:id="@+id/image"/>   </LinearLayout> 

MainActivity.java:

package com.example.dragscale;  import android.app.Activity; import android.graphics.Matrix; import android.graphics.PointF; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ImageView;   public class MainActivity extends Activity {  private ImageView imageView;  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);      imageView=(ImageView)this.findViewById(R.id.image);   //添加觸摸監(jiān)聽對象(控件被觸摸就會觸發(fā)TouchListener類)   imageView.setOnTouchListener(new TouchListener());  }    private final class TouchListener implements OnTouchListener{   private PointF startPoint= new PointF();//PointF(浮點對)   private Matrix matrix=new Matrix();//矩陣對象   private Matrix currentMatrix=new Matrix();//存放照片當(dāng)前的矩陣      //參數(shù)1:用戶觸摸的控件;參數(shù)2:用戶觸摸所產(chǎn)生的事件   public boolean onTouch(View v, MotionEvent event) {    //判斷事件的類型    //得到低八位才能獲取動作,所以要屏蔽高八位(通過與運(yùn)算&255)    //ACTION_MASK就是一個常量,代表255    switch (event.getAction()&MotionEvent.ACTION_MASK) {    case MotionEvent.ACTION_DOWN://手指下壓     currentMatrix.set(imageView.getImageMatrix());//記錄ImageView當(dāng)前的移動位置     startPoint.set(event.getX(), event.getY());     break;    case MotionEvent.ACTION_MOVE://手指在屏幕移動,改事件會不斷被調(diào)用     float dx=event.getX()-startPoint.x;//得到在x軸的移動距離     float dy=event.getY()-startPoint.y;//得到在y軸的移動距離     matrix.set(currentMatrix);//在沒有進(jìn)行移動之前的位置基礎(chǔ)上進(jìn)行移動     //實現(xiàn)位置的移動     matrix.postTranslate(dx, dy);     break;    case MotionEvent.ACTION_UP://手指離開屏幕          break;    case MotionEvent.ACTION_POINTER_1_UP://當(dāng)屏幕上已經(jīng)有手指離開屏幕,屏幕上還有一個手指,就會觸發(fā)這個事件          break;    case MotionEvent.ACTION_POINTER_1_DOWN://當(dāng)屏幕上已經(jīng)有觸點(手指),再有一個手指按下屏幕,就會觸發(fā)這個事件          break;         default:     break;    }    //將imageView的矩陣位置改變    imageView.setImageMatrix(matrix);    return true;   }     } } 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东丽区| 巧家县| 鄂伦春自治旗| 安义县| 濮阳县| 天长市| 勐海县| 新和县| 苍溪县| 莱州市| 沙坪坝区| 锦州市| 明光市| 宜君县| 永定县| 山阴县| 正宁县| 铜川市| 依安县| 班戈县| 陆丰市| 且末县| 郯城县| 大理市| 朔州市| 正定县| 马鞍山市| 萨迦县| 岑巩县| 定日县| 富阳市| 怀集县| 成都市| 西乌珠穆沁旗| 都昌县| 浮山县| 启东市| 榆林市| 安宁市| 高唐县| 雷州市|