0

シークバーの位置に基づいてイメージビューの幅を変更する必要があるアプリケーションを1つ実行しています。以下のコードを使用してみましたが、シークバーを移動するとイメージビューの幅と高さの両方が変化しますが、幅だけを変更したい変更しても、高さは一定でなければなりません。xml でイメージビューに背景を設定すると幅が変わるだけですが、私のアプリでは背景を動的に設定する必要があるので、誰でも助けてください....

public class MainActivity extends Activity implements OnSeekBarChangeListener {

   float screenHeight,screenWidth,screendensity;
   private SeekBar mSeekBar;
   ImageView i1;

   int width2;
   RelativeLayout.LayoutParams parms,parms1;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setNoTitle();
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,               WindowManager.LayoutParams.FLAG_FULLSCREEN);
      DisplayMetrics displaymetrics = new DisplayMetrics();
      getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
      screenHeight = displaymetrics.heightPixels;
      screenWidth = displaymetrics.widthPixels;
      setContentView(R.layout.activity_main);
      mSeekBar = (SeekBar) findViewById(R.id.seek_bar);
      mSeekBar.setOnSeekBarChangeListener(this);

      Globalclass.widthnew=(int)(212*(screenWidth/320));
      Globalclass.hightnew=(int)(360*(screenHeight/480));  

      mSeekBar.setMax(Globalclass.widthnew);
      mSeekBar.setProgress(Globalclass.widthnew);

     }

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

    width2=progress;
    Toast.makeText(MainActivity.this, "Seekbar Value : " + width2, Toast.LENGTH_SHORT).show();

    i1=(ImageView)findViewById(R.id.image);
    i1.setImageResource(R.drawable.frame_one1);
    parms = new RelativeLayout.LayoutParams(width2+50,Globalclass.hightnew);
    parms.topMargin=(int)(200*(screenHeight/480));
     i1.setLayoutParams(parms);

}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
    Toast.makeText(MainActivity.this, "Started Tracking Seekbar", Toast.LENGTH_SHORT).show();

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
    mSeekBar.setSecondaryProgress(seekBar.getProgress());
    Toast.makeText(MainActivity.this, "Stopped Tracking Seekbar", Toast.LENGTH_SHORT).show();
}
private void setNoTitle() {
    // TODO Auto-generated method stub
    requestWindowFeature(Window.FEATURE_NO_TITLE);
}
 }
4

1 に答える 1

0

の幅を調整するとImageView、Android は縦横比を維持するために、その中の画像を自動的にスケーリングします。別の背景色を選択するとImageView、要件に基づいて幅と高さが変更されますが、内部の画像は元の縦横比が維持されます。

必要なものを実現するにscaleTypeは、内部のイメージを変更する必要があります。これを行うには、ファイルにを追加android:scaleType="fitXY"します。X と Y を個別にスケーリングします。ImageViewxmlfitXY

詳細については、 ImageView.ScaleTypeとこの投稿をチェックしてください。アスペクト比を維持するために ImageView で画像をスケーリングする方法

于 2013-03-13T13:38:11.640 に答える