在讲解一个控件拖动demo前,先了解一下关于坐标的知识点
getLeft()方法得到的是控件左边坐标距离父控件原点的y轴距离,getRight()是控件右边距离父控件原点的y轴距离,同理,getTop和getButtom是距离的x轴距离
下面做一个拖动文字的效果:
先看看界面的布局文件
下面是Activity的内容:
package com.gggg.tiantian;
import android.os.Bundle;
import android.R.integer;
import android.app.Activity;
import android.app.assist.AssistStructure.ViewNode;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.TextView;
public class MainActivity extends Activity {
int width;
int height;
int xx;
int yy;
int screenWidth;
int screenHight;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv=(TextView) this.findViewById(R.id.tv);
screenWidth= getResources().getDisplayMetrics().widthPixels;
screenHight= getResources().getDisplayMetrics().heightPixels;
tv.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
// TODO 自动生成的方法存根
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
xx=(int) event.getRawX();
yy=(int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int dx=(int)event.getRawX()-xx;
int dy=(int)event.getRawY()-yy;
int zuo=view.getLeft()+dx;
int you=view.getRight()+dx;
int shang=view.getTop()+dy;
int xia=view.getBottom()+dy;
view.layout(zuo, shang, you, xia);
xx=(int) event.getRawX();
yy=(int) event.getRawY();
break;
case MotionEvent.ACTION_UP:
break;
default:
break;
}
return false;
}
});
}
}
FR:徐海涛(Hunk Xu) QQ技术群:386476712