相关疑难解决方法(0)

如何获得android.widget.ImageView的宽度和高度?

????????????????????????????????????????????????   ^
? ImageView    ????????????????                ?   |
?              ?              ?                ?   |
?              ? Actual image ?                ?   |
?              ?              ?                ?   |60px height of ImageView
?              ?              ?                ?   |
?              ?              ?                ?   |
?              ????????????????                ?   |
????????????????????????????????????????????????   
<------------------------------------------------>
                   90px width of ImageView
Run Code Online (Sandbox Code Playgroud)

我有一个默认高度和宽度的图像视图,图像存储在数据库中,我想根据Imageview高度宽度缩放图像.因为我不希望它给出默认值,因为当我改变它的高度和宽度时我也必须在代码中更改它.

我试图获得ImageView的高度和宽度,但在两种情况下都返回0.

int height = ((ImageView) v.findViewById(R.id.img_ItemView)).getHeight();
Run Code Online (Sandbox Code Playgroud)

即使它有默认的高度和宽度,这也会返回0

height android image width

270
推荐指数
7
解决办法
14万
查看次数

使用Picasso将图像调整为全宽和固定高度

我有一个垂直的LinearLayout,其中一个项目是ImageView使用Picasso加载的.我需要将图像的宽度提升到整个设备宽度,并显示图像的中心部分被固定高度(150dp)裁剪.我目前有以下代码:

Picasso.with(getActivity()) 
    .load(imageUrl) 
    .placeholder(R.drawable.placeholder) 
    .error(R.drawable.error) 
    .resize(screenWidth, imageHeight)
    .centerInside() 
    .into(imageView);
Run Code Online (Sandbox Code Playgroud)

我应该把哪个值成screenWidthimageHeight(= 150dp)?

java android image-resizing imageview picasso

163
推荐指数
2
解决办法
9万
查看次数

相当于ImageView scaleType'centerCrop'到位图可绘制引力

我创建了一个带有标题图像的活动.此标头图像最初使用ImageView在Activity的布局xml中创建,其中scaleType设置为centerCrop.这就是我想要的,它使图像居中,在纵向模式下左右剪切,以横向模式显示所有图像.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="30dp"
    android:paddingBottom="6dp"
    android:paddingLeft="6dp"
    android:paddingRight="6dp"
    android:background="#919EAC"
    android:orientation="vertical" >

<ImageView
    android:id="@+id/header_image"
    android:layout_width="match_parent"
    android:layout_height="120dp"
    android:contentDescription="@string/header_description"
    android:scaleType="centerCrop"
    android:src="@drawable/header" />

    .... <other views> ...
Run Code Online (Sandbox Code Playgroud)

我想用可绘制的背景替换它,以便我可以使用标题图像空间来显示数据,这样可以节省我在不同活动中重复相同的布局.

出于这个原因,我创建了一个drawable,我可以在android:background属性中引用:

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <item>
            <shape android:shape="rectangle" >
                <solid android:color="#919EAC" />
            </shape>
        </item>
        <item>
            <bitmap 
                android:antialias="true"
                android:gravity="top|center_horizontal"
                android:src="@drawable/header" />
        </item>
    </layer-list>
Run Code Online (Sandbox Code Playgroud)

此drawable定义了布局将定义的彩色背景,并定义了一个标题图像,否则将作为ImageView包含在布局中.

然而,现在我的图像缩放,而我希望它被裁剪.

检查Android文档我尝试了其他重力模式,如

    android:gravity="top|clip_horizontal"
Run Code Online (Sandbox Code Playgroud)

但它似乎仍然显示/缩放与图像视图不同.

背景可绘制的正确定义是什么?

android drawable android-layout

36
推荐指数
1
解决办法
1万
查看次数

使用ScaleType.CenterCrop缩放后,带有圆角的ImageView

我正在尝试裁剪图像,然后绕过角落,使其在屏幕上看起来更漂亮.

我能够做的是围绕图像的角落,但裁剪有时会切断图像的两侧(取决于图像的大小/纵横比).

所以我想做的是执行裁剪,然后应用圆角.我怎样才能做到这一点?

围绕图像的角落:

private Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(output);

    final int color = 0xff000000;
    final Paint paint = new Paint();
    final Rect rect = new Rect(0,0,bitmap.getWidth(), bitmap.getHeight());
    final RectF rectF = new RectF(rect);
    final float roundpx = 20;

    paint.setAntiAlias(true);
    canvas.drawARGB(0, 0, 0, 0);
    paint.setColor(color);
    canvas.drawRoundRect(rectF, roundpx, roundpx, paint);

    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
    canvas.drawBitmap(bitmap, rect, rect, paint);

    return output;
}
Run Code Online (Sandbox Code Playgroud)

然后我像这样设置imageview的scaletype: imageView.setScaleType(ScaleType.CENTER_CROP)

android crop rounded-corners imageview android-imageview

8
推荐指数
1
解决办法
2625
查看次数