我试图在屏幕上拖动图像,但它会留下模糊痕迹,图像本身是否会导致模糊?我在两个不同的设备上尝试了它,并出现同样的问题。
移动图片的正确方法是什么?
以下是我使用的图片http://i.imgur.com/w9xWz.png
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;
}
}
以下是问题的图片
答案 0 :(得分:1)
你正在获得鬼魂,因为你每次移动都会添加新的图像视图。另一个图像帧仍然存在,因此是运动轨迹。查找相对布局的id的方式相同,给ImageView一个Id,这样你就可以检索它并改变它的位置(从图像中获取参数,更新值,然后再将参数设置回来)。 / p>
希望这有帮助。