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

首頁 > 系統 > Android > 正文

Android實現圖片拖拉功能

2019-10-22 18:18:23
字體:
來源:轉載
供稿:網友

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

編譯環境:eclipse
Android版本4.0

創建工程過程略

實現圖片在頁面內的拖拉

原理圖:

Android,圖片拖拉

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

實現圖片在頁面內的拖拉
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"采用矩陣來實現圖片的拖拉或放大-->  <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);   //添加觸摸監聽對象(控件被觸摸就會觸發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();//存放照片當前的矩陣      //參數1:用戶觸摸的控件;參數2:用戶觸摸所產生的事件   public boolean onTouch(View v, MotionEvent event) {    //判斷事件的類型    //得到低八位才能獲取動作,所以要屏蔽高八位(通過與運算&255)    //ACTION_MASK就是一個常量,代表255    switch (event.getAction()&MotionEvent.ACTION_MASK) {    case MotionEvent.ACTION_DOWN://手指下壓     currentMatrix.set(imageView.getImageMatrix());//記錄ImageView當前的移動位置     startPoint.set(event.getX(), event.getY());     break;    case MotionEvent.ACTION_MOVE://手指在屏幕移動,改事件會不斷被調用     float dx=event.getX()-startPoint.x;//得到在x軸的移動距離     float dy=event.getY()-startPoint.y;//得到在y軸的移動距離     matrix.set(currentMatrix);//在沒有進行移動之前的位置基礎上進行移動     //實現位置的移動     matrix.postTranslate(dx, dy);     break;    case MotionEvent.ACTION_UP://手指離開屏幕          break;    case MotionEvent.ACTION_POINTER_1_UP://當屏幕上已經有手指離開屏幕,屏幕上還有一個手指,就會觸發這個事件          break;    case MotionEvent.ACTION_POINTER_1_DOWN://當屏幕上已經有觸點(手指),再有一個手指按下屏幕,就會觸發這個事件          break;         default:     break;    }    //將imageView的矩陣位置改變    imageView.setImageMatrix(matrix);    return true;   }     } } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平泉县| 修水县| 杂多县| 佛冈县| 会宁县| 桂平市| 浦县| 晋中市| 勐海县| 兰坪| 万荣县| 岑溪市| 彭泽县| 和静县| 兴宁市| 广昌县| 晋宁县| 上栗县| 阿城市| 金寨县| 赣榆县| 彰化县| 郧西县| 元朗区| 兴化市| 嘉鱼县| 丰原市| 武功县| 陈巴尔虎旗| 威海市| 忻城县| 临城县| 满洲里市| 出国| 临沧市| 宁海县| 三河市| 务川| 林西县| 建德市| 神池县|