您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
如何解决安卓开发中imageView移动如setTranslationX导致的抖动问题
发布时间:2021-07-10 11:44:44编辑:雪饮阅读()
如果要在视频上添加logo,并且是要开发安卓应用来实现,那么这个logo区域一般至少是可以移动的。而对于这个logo区域,则可以是一个imageView。
其实现的原理就是down的时候记录位置,而move的时候比较记录的位置和move时候的实时位置得到差值去调整界面imageview的移动。
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
int raw_x = (int) motionEvent.getRawX();
int raw_y = (int) motionEvent.getRawY();
int x=(int)motionEvent.getX();
int y=(int)motionEvent.getY();
int left=ds.getLeft();
int top=ds.getTop();
String log="x:"+x+",y:"+y+",raw_x:"+raw_x+",raw_y:"+raw_y+",left:"+left+",top:"+top+",x-oldx:"+(x-dragInfo.x)+",y-oldy:"+(y-dragInfo.y);
Log.i("测试",log);
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
dragInfo.raw_x=raw_x;
dragInfo.raw_y=raw_y;
dragInfo.x= x;
dragInfo.y=y;
break;
case MotionEvent.ACTION_MOVE:
test.setText(log);
int leftOffset=raw_x-dragInfo.raw_x;
int topOffset=raw_y-dragInfo.raw_y;
Log.i("测试","leftOffset:"+leftOffset+",topOffset:"+topOffset);
ds.layout(ds.getLeft()+leftOffset,ds.getTop()+topOffset,ds.getRight()+leftOffset,ds.getBottom()+topOffset);
dragInfo.x= x;
dragInfo.y=y;
dragInfo.raw_x=raw_x;
dragInfo.raw_y=raw_y;
break;
case MotionEvent.ACTION_UP:
break;
default:
break;
}
return false;
}
};
关键字词:imageView,移动,抖动,setTranslationX,getX