Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android:如何通过编程固定图像视图的大小?_Java_Android_Imageview_Android Bitmap - Fatal编程技术网

Java android:如何通过编程固定图像视图的大小?

Java android:如何通过编程固定图像视图的大小?,java,android,imageview,android-bitmap,Java,Android,Imageview,Android Bitmap,我通过从gallery中选择图像来设置帐户的配置文件图像,如下所示 @Override public void onClick(View v) { switch (v.getId()) { case R.id.profile_image : Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Int

我通过从gallery中选择图像来设置帐户的配置文件图像,如下所示

    @Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.profile_image :
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Select Picture"), GALLERY);

    }
    }
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == GALLERY && resultCode != 0) {
        profileImage.setImageBitmap(null);
            if (Image != null)
                Image.recycle();
        Uri mImageUri = data.getData();
        try {
            Image = MediaStore.Images.Media.getBitmap(this.getContentResolver(), mImageUri);
                profileImage.setImageBitmap(Image);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
这很好,但有一个问题,图像的高度和宽度会因不同的图像而变化。我想要的是将图像大小和宽度固定为150 dp? 下面是我的xml代码

<ImageView
    android:id="@+id/profile_image"
    android:layout_width="150dp"
    android:layout_height="150dp"
    app:srcCompat="@android:drawable/sym_def_app_icon"
    android:clickable="true"/>


请将以上两个属性添加到ImageView中

您应该设置为要调整大小的视图:

private void resizeImageView(ImageView iv, int w, int h) {
    //set width and height in pixels
    iv.setLayoutParams(new ViewGroup.LayoutParams(w, h));
    //or if w and h are in dp:
    //iv.setLayoutParams(new ViewGroup.LayoutParams(dpToPx(this, w), dpToPx(this, h)));
}

private int dpToPx(Activity activity, int dp) {
    DisplayMetrics metrics = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
    return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics);
}
为此,可以使用“中心裁剪”scaleType

<ImageView
     android:id="@+id/profile_image"
     android:layout_width="150dp"
     android:layout_height="150dp"
     android:scaleType="centerCrop"/>

其他刻度类型包括:

中心
将图像在视图中居中,但不执行缩放

中心作物
均匀缩放图像(保持图像的纵横比),使图像的两个尺寸(宽度和高度)等于或大于视图的相应尺寸(减去填充)

内部居中
均匀缩放图像(保持图像的纵横比),使图像的两个尺寸(宽度和高度)等于或小于视图的相应尺寸(减去填充)

安装中心
使用“中心”缩放图像

安装端部
使用“结束”缩放图像

开始安装
使用“开始”缩放图像

安装XY
使用“填充”缩放图像

矩阵
绘制时使用图像矩阵进行缩放

有关调整图像大小的信息,请参阅。
<ImageView
     android:id="@+id/profile_image"
     android:layout_width="150dp"
     android:layout_height="150dp"
     android:scaleType="centerCrop"/>