2015-12-14 83 views
0

嗨,我是Android的新手。我的问题是,是否有任何功能来显示图像可绘制到屏幕上。顺便说一下,我可以在我触摸的坐标上移动相同的图像,我只需要将新图像放置在我触摸的坐标上。用户触摸的新图像

这里是我的代码:

public class MainActivity extends Activity { 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

} 

    private void placeImage(float X, float Y) { 
     ImageView flower = (ImageView) findViewById(R.id.img); 

     int touchX = (int) X; 
     int touchY = (int) Y; 


     flower.layout(touchX, touchY, touchX + 48, touchY + 48); 


     int viewWidth = flower.getWidth(); 
     int viewHeight = flower.getHeight(); 
     viewWidth = viewWidth/2; 
     viewHeight = viewHeight/2; 

     flower.layout(touchX - viewWidth, touchY - viewHeight, touchX + viewWidth, touchY + viewHeight); 
    } 



public boolean onTouchEvent(MotionEvent event) { 
    super.onTouchEvent(event); 
    int eventAction = event.getAction(); 
    switch (eventAction) { 
     case MotionEvent.ACTION_DOWN: 
      float TouchX = event.getX(); 
      float TouchY = event.getY(); 
      placeImage(TouchX, TouchY); 
      break; 
    } 
    return true; 
} 
+0

首先通过调用'setBounds'来设置可绘制的尺寸和位置,然后通过调用'draw(Canvas c)'(也是'Drawable'的方法)用正确的画布进行绘制(你可以从'onDraw'方法获得一些任何适当的'View')作为参数传递。 – nekavally

+0

哦,你可以编辑我的代码吗? –

+0

在上面的代码中,您正尝试通过调用'layout'方法来移动ImageView。只有在编写自定义的'ViewGroup'时才是正确的。由于您使用了View子类 - 请查看Android中不同布局的不同视图。例如:http://www.google.com/search?q=Layouts+in+android,如果您尝试将元素完全放置,请尝试使用“FrameLayout”。 – nekavally

回答

0

假设你放在里面FrameLayout你的形象:

private void placeImage(float X, float Y) { 
    ImageView flower = (ImageView) findViewById(R.id.img); 

    int touchX = (int) X; 
    int touchY = (int) Y; 

    FrameLayout.LayoutParams mlp = (FrameLayout.LayoutParams) flower.getLayoutParams(); 
    mlp.marginLeft = touchX; 
    mlp.marginTop = touchY; 
    mlp.width = FrameLayout.LayoutParams.WRAP_CONTENT; 
    mlp.height = FrameLayout.LayoutParams.WRAP_CONTENT; 
    flower.setLayoutParams(mlp); 
} 

而且,宽度和高度可以在设计时设置为WRAP_CONTENT告诉元素设置其大小与内容的大小。


添加新图像可以通过创建新的ImageView来完成。

protected void onCreate(Bundle savedInstanceState){ 
    ... 
    frameLayout = (FrameLayout) findViewById(R.id.box); 
    ... 
} 

private void placeImage(float X, float Y) { 
    ImageView newImage = new ImageView(this); 
    //Set contents of new ImageView 
    newImage.setImage(R.drawable.example_image); 
    //Create layout parameters object with width and height set to size of contents 
    FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT); 
    //Offset image by X and Y from left and top of its parent, in our case FrameLayout 
    lp.marginLeft = X; 
    lp.marginTop = Y; 
    //Add new ImageView into layout 
    frameLayout.AddView(newImage, lp); 
} 

哪里frameLayout是参考你放置在你的布局和R.drawable.example_imageFrameLayout视图组是要显示的图像。

+0

哦,我的实际问题是,当我触摸图像应该出现,该图像不应该移动,如果再次触摸另一个坐标相同的图像应该出现,但应保留以前的图像。希望你能理解我的问题。对不起,如果我的英语不好 –