Android控件拖动
16lz
2021-01-23
这里演示控件拖动的动画:
原理就是响应控件的Touch事件,在Touch事件中对移动进行处理,注意,一定要在布局文件中设置控件的
android:clickable="true"。
代码如下:
package com.zhycheng.draftdemo;import android.app.Activity;import android.os.Bundle;import android.view.Display;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.ImageView;public class DraftDemoActivity extends Activity implements OnTouchListener {ImageView iv;int screenWidth,screenHeight;int lastX,lastY; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); iv=(ImageView) findViewById(R.id.imageView1); iv.setOnTouchListener(this); Display dis=this.getWindowManager().getDefaultDisplay(); screenWidth=dis.getWidth(); screenHeight=dis.getHeight(); }@Overridepublic boolean onTouch(View v, MotionEvent event) {switch(event.getAction()){case MotionEvent.ACTION_DOWN:lastX=(int)event.getRawX();lastY=(int)event.getRawY();break;case MotionEvent.ACTION_MOVE:int dx=(int)event.getRawX()-lastX;int dy=(int)event.getRawY()-lastY;int top=v.getTop()+dy;int left=v.getLeft()+dx;if(top<=0){top=0;}if(top>=screenHeight-iv.getHeight()){top=screenHeight-iv.getHeight();}if(left>=screenWidth-iv.getWidth()){left=screenWidth-iv.getWidth();}if(left<=0){left=0;}v.layout(left, top, left+iv.getWidth(), top+iv.getHeight());lastX=(int)event.getRawX();lastY=(int)event.getRawY();break;case MotionEvent.ACTION_UP:break;}return false;}}
工程代码下载:Android控件拖动
更多相关文章
- Android之改变控件的背景及形态
- Android 技巧 - listview 里面的图片不能响应onClick事件?
- Android 可响应drawable点击事件的TextView
- 81.s1-禁用checkBox点击事件
- Spinner控件的使用
- 使用saripaar对android输入控件进行快速验证
- Android 按钮点击两次触发不同的事件
- Android自定义控件布局刷新自定义控件回到初始位置问题的解决
- Android declare-styleable:自定义控件的属性(attr.xml,TypedArra