2012-04-25 8 views
1

У меня есть ImageViews в моем XML-файле. В моем разделе кода я хочу переместить изображение в соответствии с моим желанием. Для этого я сделал event.getx() и event.getY(), а затем воспользуюсь imageView.layout(). Этот процесс не работает. Как я могу переместить это изображение?Как изменить положение ImageView

+0

проверить этот вопрос http://stackoverflow.com/questions/7168770/how-to-place-views-in-a-specific-location-xy-coordinates – birdy

ответ

1

Я думаю, что это может помочь:

package com.example.moveimageview; 


import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.view.Menu; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 


public class MainActivity extends Activity { 

    ImageView im; 
    RelativeLayout rl; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     //getting the wrapper layout from the xml 
     rl = (RelativeLayout) findViewById(R.id.relative1); 

     //getting the ImageView from xml 
     im = (ImageView) findViewById(R.id.myImageView); 

     rl.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent e) { 
       // TODO Auto-generated method stub 
       if(e.getAction()==android.view.MotionEvent.ACTION_DOWN) 
       { 
        //sending the new coordinates to the method 
        //that will change the view's location 
        setImageViewLocation(e.getX(), e.getY()); 


       return true; 
       } 
       return false; 
      } 
     }); 
    } 

    @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; 
    } 

    private void setImageViewLocation(float x, float y) 
    { 
     //setting the coordinates 
     im.setX(x); 
     im.setY(y); 

     runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       im.invalidate();//invoking the view onDraw 
      } 
     }); 

    } 
} 

(Edit) Если вы хотите, чтобы ваш ImageView вокруг, вот код onTouchListner для этого (тот же код, как и раньше просто заменить OnTouchListner с этим):

rl.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent e) { 
      // TODO Auto-generated method stub 
      if(e.getAction()==android.view.MotionEvent.ACTION_DOWN) 
      { 
       //sending the new coordinates to the method 
       //that will change the view's location 
       setImageViewLocation(e.getRawX(), e.getRawY()); 


      return true; 
      } 

      if(e.getAction()==android.view.MotionEvent.ACTION_MOVE) 
      { 
       setImageViewLocation(e.getRawX(), e.getRawY()); 
       return true; 
      } 
      return false; 
     } 
    }); 
Смежные вопросы