2013-12-04 2 views
0

Я пытаюсь перетащить изображение вокруг экрана, но он оставляет следы размытия. Является ли само изображение причиной размытия? Я попробовал это на двух разных устройствах, и такая же проблема возникает.Перемещение изображения оставляет следы размытия

Каков правильный способ перемещения изображения?

Вот изображение, которое я использую 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; 
    } 

} 

Вот это изображение проблемы

blur trail

+1

Хотя я не уверен в размытии, создавая новый объект ImageView и RelativeLayout КАЖДЫЙ раз, когда вы вызываете MoveImage, не будет иметь большой производительности. –

ответ

1

Вы получаете призрак, потому что вы добавляете новое изображение просматривает каждый раз вы двигаетесь. Остальная рамка изображения все еще есть, следовательно, движение. Точно так же, как вы просматриваете идентификатор относительной компоновки, дайте ImageView Id, чтобы вы могли получить его и изменить его положение (получить параметры с изображения, обновить значения, а затем снова установить параметры обратно).

Надеюсь, это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^