Android如何创建可拖动的图片控件如何创建可拖动的图片控件
本文实例为大家分享了Android创建可拖动图片控件的具体代码,供大家参考,具体内容如下
重载、自绘重载、自绘
1、从View派生一个控件类 ,构造函数中调用父类构造器。
2、重载其onDraw函数,在里面绘制图片。(和windows的MFC有种似曾相识的感觉,可能安卓借鉴了windows的模式吧)
消息处理消息处理
拖动图片的消息,主要是处理按下和移动两个消息,重载onTouchEvent。数学知识(平移):在ACTION_DOWN时记录下坐
标点,在ACTION_MOVE时根据当前位置与按下时的位置算出平移量。刷新控件,导致控件重绘,重绘时移动绘制的左上角
坐标即可。
刚开始时,只是收到了ACTION_DOWN消息,ACTION_MOVE消息就是捕捉不到,上网搜了下,原来是我在onTouchEvent
最后调用了父类函数return super.onTouchEvent(event);父类里面返回false表示对这些消息不予关注,后续的ACTION_MOVE
和ACTION_UP就不会进来了。
代码和配置代码和配置
activity的XML配置
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<com.example.timertest.DragImageView
android:id="@+id/div"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
控件的自绘代码
package com.example.timertest;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
@SuppressLint("ClickableViewAccessibility")
public class DragImageView extends View{
private Bitmap bmp = null;
private PointF orgPos = new PointF(0, 0);
private PointF downPos = new PointF(0, 0);
private PointF movePos = new PointF(0, 0);
private boolean bMove = false;
private int nDstWidth = 0;
private int nDstHeight = 0;
private Rect rcSrc = new Rect(0, 0 , 0, 0);
private RectF rcDst = new RectF(0, 0, 0, 0);
private Paint paint = null;
public DragImageView(Context context) {
super(context);
// TODO Auto-generated constructor stub
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
评论0
最新资源