【问题标题】:How to change imageview width based on seekbar postion in android如何根据android中的seekbar位置更改imageview宽度
【发布时间】:2013-03-13 21:38:11
【问题描述】:

我正在做一个需要根据搜索栏位置更改图像视图宽度的应用程序,我尝试使用下面的代码,但是当我移动搜索栏时,图像视图的宽度和高度都在变化,但我只想更改要改变的宽度,高度应该是恒定的。如果我在 xml 中为 imageview 设置背景只有宽度变化,但在我的应用程序中我必须动态设置背景,所以请任何人都可以帮助我....

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);
}
 }

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

    当您调整 ImageView 的宽度时,Android 会自动缩放其中的图像以保持纵横比。如果您选择不同的背景颜色,您会注意到您的 ImageView 会根据您的要求或您的要求更改宽度和高度,但里面的图像保持其原始纵横比。

    为了达到您想要的效果,您必须更改内部图像的scaleType。您可以通过在xml 文件中将android:scaleType="fitXY" 添加到您的ImageView 来执行此操作。 fitXY 独立缩放 X 和 Y。

    欲了解更多详情,请查看ImageView.ScaleType 以及此帖子How to scale an Image in ImageView to keep the aspect ratio

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-27
      • 2014-09-13
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 2017-08-29
      • 2020-08-23
      • 1970-01-01
      相关资源
      最近更新 更多