我想在imageview中保留一个位图,保持纵横比

时间:2014-04-18 23:08:05

标签: android bitmap android-imageview

这是我的xml代码:

        <ImageView
        android:id="@+id/ColImgPath"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:adjustViewBounds="true"
        android:background="@drawable/border"/>

这是我的java代码,它在listview中:

ImageView imageView = (ImageView) convertView.findViewById(R.id.ColImgPath);
        imageView.setPadding(5, 5, 5, 5);
            imageView.setVisibility(View.VISIBLE);
    try {
            Bitmap bmp = ((Bitmap) MyArrList.get(position).get("ImageThumBitmap"));
            int bmpx = bmp.getWidth();
            int bmpy = bmp.getHeight();

            Log.i("INFO","X: "+bmpx+" Y: "+bmpy);

            Bitmap photobitmap1 = Bitmap.createScaledBitmap(bmp, bmpx/2,bmpy/2, true);
            imageView.setImageBitmap(photobitmap1);
            //imageView.setImageBitmap((Bitmap) MyArrList.get(position).get("ImageThumBitmap"));

        } catch (Exception e) {
            // When Error
            imageView.setImageResource(android.R.drawable.ic_menu_report_image);
        }

问题是我想将位图大小调整为位图,但imageview总是显得平方。 位图的大小为:X: 4160 Y: 3120,屏幕大小为:WIDTH= 1080 HEIGHT= 1776

我想放宽度填充父级并调整高度以保持宽高比。我尝试了一些xml替代品,比如`ScaleType。

有人知道正确放置位图的方法吗?

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

这是ImageView,因此您需要使用android:src="@drawable/border"代替android:background。同时尝试android:scaleType="fitXY"cropCenter

答案 2 :(得分:0)

Android ImageView中有不同的比例类型

CENTER_INSIDE - 用于设置位图,保持位图原始宽高比。

CENTER_CROP - 用于在imageview中设置Bitmap以覆盖没有打破宽高比的imageview,而是将位图从负x,y值设置为覆盖imageview区域。

FIT_XY - 用于将整个位图设置为可用的ImageView高度和宽度意味着位图采用Imageviews Aspect Ratio。

                              OR

如果要调整位图大小,则选择要设置的高度或宽度,如果取下宽度,则取高度/宽度比例,如果有下一个高度,则将重复宽度和高度乘以此比率。将改变位图的高度和宽度,但保持原始位图的宽高比。