您的位置:首页 > 移动开发 > Android开发

Android-通过自定义View组件实现跟随手指移动的ImageView组件

2016-03-15 11:36 901 查看
在Android应用程序中绘制一个跟随手指的小兔子,当手指在屏幕上拖动时,小兔子将跟随手指拖动的轨迹移动。

实现本实例时,首先需要先继承Android.view.View类,然后通过重写其onDraw()方法设置小兔子的默认显示位置,最后重写其触摸事件,该事件中设置兔子随手指而移动。

实现过程:

1.修改res/layout/main_activity.xml文件,删除默认的LinearLayout和TextView组件,然后添加一个帧布局FrameLayout,并且设置其背景和id属性

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mylayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background" >

</FrameLayout>


2.创建一个名为RabbitView的自定义View类,继承自android.view.View类,重写带一个参数Context参数的构造方法和onDraw()方法。在构造方法中设置小兔子的默认坐标,在onDraw()方法中根据图片绘制小兔子。

public class RabbitView extends View {
public float bitmapX;
public float bitmapY;

public RabbitView(Context context) {
super(context);
// TODO Auto-generated constructor stub
bitmapX=290;
bitmapY=130;
}

@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint paint=new Paint();
Bitmap bitmap=BitmapFactory.decodeResource(this.getResources(), R.drawable.rabbit);
canvas.drawBitmap(bitmap, bitmapX, bitmapY,paint);
if(bitmap.isRecycled())
{
bitmap.recycle();
}
}

}


3.在MainActivity的onCreate()方法中,首先获取帧布局管理器,并实例化小兔子rabbit,然后为rabbit添加触摸事件监听器,在重写的触摸事件中设置rabbit的显示位置,并重绘rabbit组件,最后将rabbit添加到布局管理器中。

FrameLayout frameLayout=(FrameLayout)findViewById(R.id.mylayout);
final RabbitView rabbit=new RabbitView(MainActivity.this);

rabbit.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
rabbit.bitmapX=event.getX();
rabbit.bitmapY=event.getY();
rabbit.invalidate();
return true;
}
});
frameLayout.addView(rabbit);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: