如何增加X和Y协调

时间:2015-08-09 20:55:58

标签: android view

我正在使用setX和setY以便以编程方式移动视图。我想增加X协调并执行以下操作: v.setX(newX + 10) 但它不起作用。 这是我的XML - 我想更新图像视图“imgBall0”的coorsinations     

<LinearLayout
    android:id="@+id/GoolotPlayer1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/HolesPlayer1"
    android:layout_centerHorizontal="true" >

    <TextView
        android:id="@+id/tvGoolot0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="50dp"
        android:text="  0" />

    <TextView
        android:id="@+id/tvGoolot1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="50dp"
        android:text="  0" />

    <TextView
        android:id="@+id/tvGoolot2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="50dp"
        android:text="  0" />

    <TextView
        android:id="@+id/tvGoolot3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="50dp"
        android:text="  0" />

    <TextView
        android:id="@+id/tvGoolot4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="50dp"
        android:text="  0" />

    <TextView
        android:id="@+id/tvGoolot5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="0dp"
        android:text="  0" />
</LinearLayout>

<ImageView
    android:id="@+id/imgBall4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/GoolotPlayer1"
    android:layout_alignLeft="@+id/GoolotPlayer1"
    android:layout_marginLeft="108dp"
    android:background="@android:color/transparent"
    android:src="@drawable/goola2" />

<ImageView
    android:id="@+id/imgBall1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:background="@android:color/transparent"
    android:src="@drawable/goola0" />

<ImageView
    android:id="@+id/imgBall0"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/imgBall1"
    android:layout_marginLeft="38dp"
    android:layout_toRightOf="@+id/imgBall3"
    android:background="@android:color/transparent"
    android:src="@drawable/goola0" />

<ImageView
    android:id="@+id/imgBall2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/imgBall4"
    android:layout_alignRight="@+id/GoolotPlayer1"
    android:layout_marginRight="45dp"
    android:background="@android:color/transparent"
    android:src="@drawable/goola2" />

<LinearLayout
    android:id="@+id/HolesPlayer1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/tvGoolot6"
    android:layout_centerHorizontal="true" >

    <ImageButton
        android:id="@+id/imgBtn0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:background="@android:color/transparent"
        android:src="@drawable/hole0" />

    <ImageButton
        android:id="@+id/imgBtn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:background="@android:color/transparent"
        android:src="@drawable/hole0" />

    <ImageButton
        android:id="@+id/imgBtn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:background="@android:color/transparent"
        android:src="@drawable/hole0" />

    <ImageButton
        android:id="@+id/imgBtn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:background="@android:color/transparent"
        android:src="@drawable/hole0" />

    <ImageButton
        android:id="@+id/imgBtn4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:background="@android:color/transparent"
        android:src="@drawable/hole0" />

    <ImageButton
        android:id="@+id/imgBtn5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:background="@android:color/transparent"
        android:src="@drawable/hole0" />
</LinearLayout>

<ImageButton
    android:id="@+id/imgBtn13"
    android:layout_width="60dp"
    android:layout_height="170dp"
    android:layout_centerVertical="true"
    android:layout_toLeftOf="@+id/HolesPlayer2"
    android:background="@android:color/transparent"
    android:src="@drawable/home0" />

<LinearLayout
    android:id="@+id/HolesPlayer2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/imgBtn13"
    android:layout_toLeftOf="@+id/imgBtn6" >

    <ImageButton
        android:id="@+id/imgBtn7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:background="@android:color/transparent"
        android:src="@drawable/hole0" />

    <ImageButton
        android:id="@+id/imgBtn8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:background="@android:color/transparent"
        android:src="@drawable/hole0" />

    <ImageButton
        android:id="@+id/imgBtn9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:background="@android:color/transparent"
        android:src="@drawable/hole0" />

    <ImageButton
        android:id="@+id/imgBtn10"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:background="@android:color/transparent"
        android:src="@drawable/hole0" />

    <ImageButton
        android:id="@+id/imgBtn11"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:background="@android:color/transparent"
        android:src="@drawable/hole0" />

    <ImageButton
        android:id="@+id/imgBtn12"
        style="@drawable/hole01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:background="@android:color/transparent"
        android:src="@drawable/hole0" />
</LinearLayout>

<TextView
    android:id="@+id/tvGoolot6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/imgBtn6"
    android:layout_below="@+id/imgBtn6"
    android:layout_marginLeft="22dp"
    android:text="  0" />

<TextView
    android:id="@+id/tvGoolot13"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/HolesPlayer1"
    android:layout_alignLeft="@+id/imgBtn13"
    android:layout_marginLeft="20dp"
    android:background="@android:color/transparent"
    android:text=" 0" />

<LinearLayout
    android:id="@+id/GoolotPlayer2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/imgBtn13"
    android:layout_toRightOf="@+id/imgBtn13" >

    <TextView
        android:id="@+id/tvGoolot12"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="50dp"
        android:text="  0" />

    <TextView
        android:id="@+id/tvGoolot11"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="50dp"
        android:text="  0" />

    <TextView
        android:id="@+id/tvGoolot10"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="50dp"
        android:text="  0" />

    <TextView
        android:id="@+id/tvGoolot9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="50dp"
        android:text="  0" />

    <TextView
        android:id="@+id/tvGoolot8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="50dp"
        android:text="  0" />

    <TextView
        android:id="@+id/tvGoolot7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="0dp"
        android:text="  0" />
</LinearLayout>

<ImageView
    android:id="@+id/imgBall3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/imgBall1"
    android:layout_alignLeft="@+id/GoolotPlayer1"
    android:layout_marginLeft="54dp"
    android:background="@android:color/transparent"
    android:src="@drawable/goola2" />

<ImageButton
    android:id="@+id/imgBtn6"
    android:layout_width="60dp"
    android:layout_height="170dp"
    android:layout_below="@+id/GoolotPlayer2"
    android:layout_toRightOf="@+id/HolesPlayer1"
    android:background="@android:color/transparent"
    android:src="@drawable/home0" />

<TextView
    android:id="@+id/tvWhoseTurn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/GoolotPlayer2"
    android:layout_alignLeft="@+id/imgBall1"
    android:text="TextView" />

这是我尝试的方法 - 当点击一个imageButton时,它应该将“imgBall0”的协调更新到被点击的视图的位置(它假设 on 它)

@Override
public void onClick(View v) 
{

    int[] location = new int[2];

    v.getLocationOnScreen(location);

    float startX = location[0];
    float startY = location[1];
    tvWhoseTurn.setText(startX+" "+startY);
    littleBalls[0].setX(startX);
    littleBalls[0].setY(startY- HolesPlayer2.getHeight()+10); //"+10" doesn't work
    littleBalls[0].bringToFront();  

}

有办法吗? 在此先感谢,我很乐意快速回答

1 个答案:

答案 0 :(得分:0)

使用setTranslateY()即api 11+或您可以使用Animation api,或者您可以使用LayoutParam s。你听说过Top,Left,Right,Bottom吗?是的你可以分别改变它们并让它们移动。你需要的东西是Threadatomic int variablewhile loop,它会一直运行直到你到达你的位置和一个小数学。

如果您发布了我会查看的代码并为您编写代码 - 但我们都会解决问题吗?

类似这样的事情

boolean right = true;
private Runnable trans = new Runnable() {

    @Override
    public void run() {
        if(right){
            layout(getLeft()+translate, getTop(), getRight()+translate, getBottom());
        }else {
            layout(getLeft()-translate, getTop(), getRight()-translate, getBottom());
        }
        invalidate();// this line is needed
    }
};

然后

new Thread(new Runnable() {

        @Override
        public void run() {
          while(true) //need to use a boolean so you can stop it later
          /* add a thread.sleep() to pause your loop for some millie seconds*/
          handler.post(trans);// handler is a Handler object

它将动画..

希望它有所帮助.. 抱怨欢呼中的懒惰代码