2

私は4つのボタン(上、下、左、右)を使用し、画像もあります。UPボタンを押すとそれに応じて画像を移動する必要があり、画像を上方向に移動する必要があり、左を押すと同様に両方の方向に画像を移動する必要があります.onclickリスナーを使用してから、を使用して画像を移動しようとしていますX、Y 座標。X、Y 座標の取り方がわかりません。

これがコードです。

public class MainActivity extends Activity implements OnClickListener {

    Button up,left,right,down; 

         ImageView i1;

    protected void onCreate(Bundle savedInstanceState) {

                 super.onCreate(savedInstanceState);

                setContentView(R.layout.activity_main);

            up=(Button)findViewById(R.id.button1);

            left=(Button)findViewById(R.id.button2);

            right=(Button)findViewById(R.id.button3);

            down=(Button)findViewById(R.id.button4);

            i1=(ImageView)findViewById(R.id.imageView1);

            up.setOnClickListener(this);
     }

        public void onClick(View arg0) {

    Toast.makeText(getApplication(),"UP",5000).show();  

        RelativeLayout.LayoutParams mParams = (RelativeLayout.LayoutParams) 

        i1.getLayoutParams();

        int x = (int)getRawx();

        int y = (int)getRawY();

        mParams.leftMargin = x-50;

        mParams.topMargin = y-50;

       i1.setLayoutParams(mParams);


    }

}

こんにちは、以下のコードを更新しましたので確認してください。

パッケージcom.example.motion;

public class MainActivity extends Activity implements OnClickListener {

Button up,left,right,down; 
ImageView i1;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    up=(Button)findViewById(R.id.button1);
    left=(Button)findViewById(R.id.button2);
    right=(Button)findViewById(R.id.button3);
    down=(Button)findViewById(R.id.button4);
    i1=(ImageView)findViewById(R.id.imageView1);
    up.setOnClickListener(this);
    down.setOnClickListener(this);
    left.setOnClickListener(this);
    right.setOnClickListener(this);
}



public void onClick(View v) {
    // TODO Auto-generated method stub
    switch(v.getId())
    {
    case R.id.button1:
        {
        Toast.makeText(getApplication(),"UP",Toast.LENGTH_SHORT).show();    
RelativeLayout.LayoutParams mParams = (RelativeLayout.LayoutParams) 
        i1.getLayoutParams();
        mParams.topMargin -= 20;
        i1.setLayoutParams(mParams);
        break;
        }


    case R.id.button4:
           {
        Toast.makeText(getApplication(),"DOWN",Toast.LENGTH_SHORT).show();  


        RelativeLayout.LayoutParams mParams = (RelativeLayout.LayoutParams) 
                i1.getLayoutParams();
                mParams.topMargin += 20;
                i1.setLayoutParams(mParams);
                break; 
           }


    case R.id.button2:
               {
        Toast.makeText(getApplication(),"LEFT",Toast.LENGTH_SHORT).show();              
        RelativeLayout.LayoutParams mParams = (RelativeLayout.LayoutParams) 
                i1.getLayoutParams();
                mParams.leftMargin -= 20;
                i1.setLayoutParams(mParams);    
                break;  
               }

    case R.id.button3:
               {
        Toast.makeText(getApplication(),"RIGHT",Toast.LENGTH_SHORT).show(); 

        RelativeLayout.LayoutParams mParams = (RelativeLayout.LayoutParams) 
            i1.getLayoutParams();
            mParams.leftMargin += 20;
            i1.setLayoutParams(mParams);
            break;
               }


}
    }
 }
4

1 に答える 1

0

(int)getRawx();問題はandだと思います(int)getRawy();.Activityでこのメソッドを呼び出していますが、これらの値が本当に必要かどうかはわかりません。

あなたが試すことができます:

mParams.leftMargin += 50;

また

int x = mParams.leftMargin;
mParams.leftMargin = x + 50
于 2013-04-06T09:49:09.037 に答える