首页 > 解决方案 > 在 Android 中从视图创建位图(使用 CardView)

问题描述

在我的应用程序中,我需要使用 GoogleMap 和标记,我需要放置下一个自定义视图

<android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipChildren="true"
        android:layout_margin="1dp"
        android:elevation="10dp"
        app:cardCornerRadius="18dp">

        <app.into.additional.DownloadImageView
            android:id="@+id/offer_image_1"
            android:scaleType="fitXY"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="1dp" />
         </android.support.v7.widget.CardView>

DownloadImageView是一个自定义类,它使用Picasso框架下载一些图像。

问题是下一个:如果我在片段中添加上述布局,ImageView 会根据需要进行四舍五入。当我尝试Bitmap使用上述布局创建一个时,Image加载的内部ImageView不会保留圆形属性,而是显示为方形。

这是我用来创建的代码Bitmap

DisplayMetrics displayMetrics = new DisplayMetrics();
        activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        marker.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
        marker.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
        marker.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
        marker.buildDrawingCache();

        Bitmap bitmap = Bitmap.createBitmap(marker.getMeasuredWidth(), marker.getMeasuredHeight(), Bitmap.Config.ARGB_4444);

        Canvas canvas = new Canvas(bitmap);
        marker.draw(canvas);

标签: androidimageviewroundingcardview

解决方案


推荐阅读