如何在android中根据seekbar位置更改imageview宽度
我正在做一个应用程序,其中我需要根据seekbar位置更改imageview宽度,我尝试使用下面的代码,但是当我移动seekbar时,imageview宽度和高度都在更改,但我只想更改要更改的宽度,高度应该是恒定的。如果我在xml中为imageview设置背景,则只会更改宽度,但在我的应用程序中,我必须动态设置背景,所以请任何人都可以帮助我如何在android中根据seekbar位置更改imageview宽度,android,android-intent,Android,Android Intent,我正在做一个应用程序,其中我需要根据seekbar位置更改imageview宽度,我尝试使用下面的代码,但是当我移动seekbar时,imageview宽度和高度都在更改,但我只想更改要更改的宽度,高度应该是恒定的。如果我在xml中为imageview设置背景,则只会更改宽度,但在我的应用程序中,我必须动态设置背景,所以请任何人都可以帮助我 public class MainActivity extends Activity implements OnSeekBarChangeListener
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会自动缩放图像内部的图像以保持纵横比。如果选择不同的背景色,您会注意到,ImageView
会根据您的要求更改宽度和高度,但内部图像保持其原始纵横比
为了达到您想要的效果,您必须更改内部图像的scaleType
。您可以通过将android:scaleType=“fitXY”
添加到xml
文件中的ImageView
来实现这一点fitXY
独立缩放X和Y
有关更多详细信息,请查看此帖子