Android 图片移动和拖动
移动图片
实现方式:利用点击两个按钮(left和right)来操纵图片向左向右的移动。
界面
要使得图片可以移动,要使用“RelativeLayout”
activity_main:
将图片文件储存到drawable文件夹中,该示例命名为image1
<Button
android:id="@+id/btnRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="22dp"
android:layout_toRightOf="@+id/btnLeft"
android:text="Right"/>
<Button
android:id="@+id/btnLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Left"/>
<ImageView
android:id="@+id/image1"
android:layout_width="135dp"
android:layout_height="135dp"
android:layout_alignParentLeft="true"
android:layout_margin="89dp"
android:src="@drawable/image1"/>
组件
初始化三个组件
向左移动
需要import Android.widget.RelativeLayout才能使用LayoutParams,每点击一次“left”按钮图片向左移动5个单位直到图像移到屏幕最左边。每次点击刷新图像。
button1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view) {
RelativeLayout.LayoutParams par
= (RelativeLayout.LayoutParams) image1.getLayoutParams();
if(par.leftMargin - 5 > 0){
par.leftMargin -= 5;
}
image1.setLayoutParams(par);
}
});
* 向右移动
①、需要import Android.view.Display 才能使用 Display类。使用getsize()函数获取屏幕长宽数据。
②、Point在本例中可看做拥有两个组件的结构体。
③、图片的右边缘要一直比屏幕的宽小(保证图像不出屏幕范围)
④、利用LayoutParams获取图像在相对布局中的位置数据,再重新刷新数据和图像在屏幕上的位置。
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int screen_width = size.x;
int screen_height = size.y;
RelativeLayout.LayoutParams par =
(RelativeLayout.LayoutParams)image1.getLayoutParams();
if(par.leftMargin + 5 < screen_width - par.width){
par.leftMargin += 5;
}
image1.setLayoutParams(par);
}
});
拖动图片
实现该功能必须import Android.view.MotionEvent 。
声明一个对图像的touchListener,移动图片到某位置可以利用获取当前用户滑动到屏幕上位置来实现(event.getRawX()、event.getRawY())。
image1.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
RelativeLayout.LayoutParams par = (RelativeLayout.LayoutParams)image1.getLayoutParams();
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
int x_cord = (int)event.getRawX();
int y_cord = (int)event.getRawY();
par.leftMargin = x_cord - par.width / 2;
par.topMargin = y_cord - par.height / 2 ;
image1.setLayoutParams(par);
break;
default:
break;
}
return true;
}
});
作者:林冰
链接:Android 图片移动和拖动