Android 运动图像留下模糊痕迹
我试图在屏幕上拖动一个图像,但它会留下模糊的痕迹,是图像本身造成了模糊吗?我在两个不同的装置上试过,同样的问题出现了 移动图像的正确方式是什么 这是我正在使用的图像 以下是问题的图像Android 运动图像留下模糊痕迹,android,image,touch-event,Android,Image,Touch Event,我试图在屏幕上拖动一个图像,但它会留下模糊的痕迹,是图像本身造成了模糊吗?我在两个不同的装置上试过,同样的问题出现了 移动图像的正确方式是什么 这是我正在使用的图像 以下是问题的图像 由于每次移动时都会添加新的图像视图,因此会出现重影。。另一个图像帧仍然存在,因此运动轨迹仍然存在。与查找相对布局id的方法相同,为ImageView提供一个id,以便可以检索它并更改其位置(例如,从图像中获取参数,更新值,然后再次设置参数) 希望这有帮助。虽然我不确定模糊程度,但每次调用MoveImage时创建一个
由于每次移动时都会添加新的图像视图,因此会出现重影。。另一个图像帧仍然存在,因此运动轨迹仍然存在。与查找相对布局id的方法相同,为ImageView提供一个id,以便可以检索它并更改其位置(例如,从图像中获取参数,更新值,然后再次设置参数)
希望这有帮助。虽然我不确定模糊程度,但每次调用MoveImage时创建一个新的ImageView对象和RelativeLayout并不会有很好的性能。
package com.kylelk.movecursor;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
public class MainActivity extends Activity {
private void MoveImage(int x1, int y1) {
RelativeLayout rlMain = (RelativeLayout) findViewById(R.id.TouchArea);
ImageView iv = new ImageView(this);
iv.setImageResource(R.drawable.cursor);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(x1, y1);
params.topMargin=50;
params.leftMargin=50;
rlMain.addView(iv, params);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final View touchView = findViewById(R.id.TouchArea);
touchView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
final int action = event.getAction();
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN: {
Integer X = (int) event.getX();
Integer Y = (int) event.getY();
MoveImage(X, Y);
break;
}
case MotionEvent.ACTION_MOVE:{
Integer X = (int) event.getX();
Integer Y = (int) event.getY();
MoveImage(X, Y);
break;
}
}
return true;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}