Android自定义可以随意拖动的ImageView和TextView
来源:互联网 发布:热血传奇mac版 编辑:程序博客网 时间:2024/05/01 20:41
Android开发中,有时候我们需要让控件可以随着手指的移动而跟随移动的效果,例如实现任意摆放的水印图片等。
下面是自定义的一种控件,可以实现这种效果。
上代码:
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageView;
import android.view.MotionEvent;
public class MoveImageView extends ImageView
{
private int lastX = 0;
private int lastY = 0;
private static final int screenWidth = 720;//屏幕宽度
private static final int screenHeight = 1280;//屏幕高度
public MoveImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(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 left = getLeft() + dx;
int top = getTop() + dy;
int right = getRight() + dx;
int bottom = getBottom() + dy;
if(left < 0){
left = 0;
right = left + getWidth();
}
if(right > screenWidth){
right = screenWidth;
left = right - getWidth();
}
if(top < 0){
top = 0;
bottom = top + getHeight();
}
if(bottom > screenHeight){
bottom = screenHeight;
top = bottom - getHeight();
}
layout(left, top, right, bottom);
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;
case MotionEvent.ACTION_UP:
break;
default:
break;
}
return true;
}
}
如上代码所示,自定义了一个控件类MoveImageView,继承ImageView,然后在xml文件中,将需要移动的ImageView,用这个MoveImageView代替即可。
同理,可以拖动的TextView代码如下:
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.TextView;
public class MoveTextView extends TextView{
private static final String TAG = "MoveTextView";
private int lastX = 0;
private int lastY = 0;
private static final int screenWidth = 720;
private static final int screenHeight = 1280;
public MoveTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(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 left = getLeft() + dx;
int top = getTop() + dy;
int right = getRight() + dx;
int bottom = getBottom() + dy;
if(left < 0){
left = 0;
right = left + getWidth();
}
if(right > screenWidth){
right = screenWidth;
left = right - getWidth();
}
if(top < 0){
top = 0;
bottom = top + getHeight();
}
if(bottom > screenHeight){
bottom = screenHeight;
top = bottom - getHeight();
}
layout(left, top, right, bottom);
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;
case MotionEvent.ACTION_UP:
break;
default:
break;
}
return true;
}
}
相关的源代码链接:点击下载Android源代码
- Android自定义可以随意拖动的ImageView和TextView
- android自定义正方形的imageview和textview
- Android 自定义的数字键盘 支持随意拖动 和稳定的字符输入的控件
- 自定义view画圆,并且圆可以随意拖动
- 自定义土司随意拖动
- 自定义ImageView实现图片的拖动、缩放和边界回弹
- Android-可随意拖动的View
- Android 可随意拖动的悬浮窗体
- Android可拖动的ImageView
- Android ImageView和TextView居中
- Android 控件随意拖动
- [分享][VB.Net]可以随意拖动的窗体类
- 可以随意拖动的div对象操作sample
- TextView和ImageView的倾斜
- Android可以动态控制图片显示区域的自定义ImageView
- 可以播放GIF和显示圆形图片的自定义ImageView
- android开发自定义View,可以自由拖动的控件
- android imageView 和TextVIew 颜色的透明度问题
- 128.Longest Consecutive Sequence
- 关于Can't find dependent libraries的一个解决办法
- 巧用Android网络通信技术,在网络上直接传输对象
- 深入理解Android安全平台之扎绳篇
- Jsp中使用数据库连接池
- Android自定义可以随意拖动的ImageView和TextView
- 堆排序
- Android数据存储实现的5大方式
- 抽象数据类型线性表的定义—评论为顺序表
- 如何使windows上的javaWEB项目发布到Centos上
- 电商的未来
- sql server 存储过程 获取slect 结果集 游标
- 各类MQ比较
- 利用canvas制作图片(可缩放和平移)+相框+文字