-1

画面の下部に 1 つのボタンと 1 つの画像ビューがあります。ボタンをクリックすると、画像ビューを画面の中央に移動したい。次のコードを試しています。私は正しく取得していません。私を助けてください。

my.java ファイル

      button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            imageview= (ImageView)findViewById(R.id.imageView1);
            DisplayMetrics metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(metrics);

        float   x=metrics.heightPixels/2;
        float   y=metrics.widthPixels/2;
         TranslateAnimation anim = new TranslateAnimation( 0, x , 0, y);
         anim.setDuration(1000);
         anim.setFillAfter( true );
          imageview.startAnimation(anim);

        }
    });
4

3 に答える 3

4

アニメーションなし

 button.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    RelativeLayout.LayoutParams parms2 = new RelativeLayout.LayoutParams(width,height);
                     parms2.addRule(RelativeLayout.CENTER_VERTICAL);
                     parms2.addRule(RelativeLayout.CENTER_HORIZONTAL);
                      imageview.setLayoutParams(parms2);

                }
            });

またはアニメーションで
編集

RelativeLayout root = (RelativeLayout) findViewById( R.id.rl1 );
                DisplayMetrics dm = new DisplayMetrics();
               // this.getWindowManager().getDefaultDisplay().getMetrics( dm );
                getWindowManager().getDefaultDisplay().getMetrics(dm);
                int statusBarOffset = dm.heightPixels - root.getMeasuredHeight();

                int originalPos[] = new int[2];
                imageview.getLocationOnScreen( originalPos );

                int xDest = dm.widthPixels/2;
                xDest -= (img.getMeasuredWidth()/2);
                int yDest = dm.heightPixels/2 - (imageview.getMeasuredHeight()/2) - statusBarOffset;

                TranslateAnimation anim = new TranslateAnimation( 0, xDest - originalPos[0] , 0, yDest - originalPos[1] );
                anim.setDuration(1000);
                anim.setFillAfter( true );
                imageview.startAnimation(anim);
于 2013-05-03T07:00:16.490 に答える
0

ボタンクリックでこれを行います:

LayoutParams params = (RelativeLayout.LayoutParams)imageView.getLayoutParams();
params.addRule(RelativeLayout.CENTER_HORIZONTAL);
params.addRule(RelativeLayout.CENTER_VERTICAL);
imageView.setLayoutParams(params);
于 2013-05-03T06:36:01.053 に答える
-1

レイアウト ファイルのコードは、デバッグしたほうがよいでしょう。とにかく、ボタンと画像の親として相対レイアウトを使用していると仮定しています。

于 2013-05-03T06:49:45.440 に答える