歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android中實現圖片的拖拽顯示

Android中實現圖片的拖拽顯示

日期:2017/3/1 10:40:54   编辑:Linux編程

下面介紹一下Android中的圖片的拖拽

首先介紹處理手機的屏幕事件監聽接口,當為View的范圍內觸摸按下、抬起或滑動等動作時都會觸發該事件。

OnTouchListener

public boolean onTouch(View v, MotionEvent event)

Matrix

Matrix的操作,總共分為translate(平移),rotate(旋轉),scale(縮放)和skew(傾斜)四種,每一種變換在Android的API裡都提供了set, post和pre三種操作方式,除了translate,其他三種操作都可以指定中心點。set是直接設置Matrix的值,每次set一次,整個Matrix的數組都會變掉。post是後乘,當前的矩陣乘以參數給出的矩陣。可以連續多次使用post,來完成所需的整個變換。

實現圖片的移動:

Activity中的文件代碼:

public class MyDragTestActivity extends Activity {

ImageView imageView = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

init();

}

private void init() {

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

imageView.setOnTouchListener(new ImageViewOnTouchListener());

}

private final class ImageViewOnTouchListener implements OnTouchListener{

PointF startPoint = new PointF();

Matrix m = new Matrix();

public boolean onTouch(View v, MotionEvent event) {

switch(event.getAction()&MotionEvent.ACTION_MASK){

case MotionEvent.ACTION_DOWN://指點桿按下

//當前位子保存為新的起始點

startPoint.set(event.getX(),event.getY());

break;

case MotionEvent.ACTION_MOVE://指點桿保持按下,並進行位移

float dx = event.getX()- startPoint.x;

float dy = event.getY()-startPoint.y;

m.postTranslate(dx, dy);

//將當前坐標保存為新起點

startPoint.set(event.getX(),event.getY());

break;

case MotionEvent.ACTION_UP://指點桿離開屏幕

break;

case MotionEvent.ACTION_POINTER_UP://有手指離開屏幕,但還有手指壓住屏幕,就會觸發事件

break;

case MotionEvent.ACTION_POINTER_DOWN://如果已經有手機壓在屏幕上,又有手指壓在屏幕上了,多點觸摸的意思

break;

}

imageView.setImageMatrix(m);

return true;

}

}

}

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<ImageView

android:id="@+id/imageView"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:src="@drawable/a"

android:scaleType="matrix" />

</LinearLayout>

效果:

Copyright © Linux教程網 All Rights Reserved