android - 在 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);
解决方案
推荐阅读
- javascript - 为 jsTimezoneDetect js 库获取不同的时区 IE11 和 Chrome 浏览器
- html - 为什么这个搜索栏有这个奇怪的轮廓?- CSS
- discord.js - 如何在discord.js中一一接受多个输入
- angular - 在 AgGrid 中可观察:CellRenderer
- lua - 我的程序似乎无法识别 Lua 中的空格
- node.js - 现场分享 Nodejs 和 Visual Studio
- docker - 无法从容器的默认端口以外的任何端口(使用发布)访问 docker 容器应用程序
- amazon-web-services - 如何从 AWS RDS 下载今天日期的数据库日志文件?
- python - 虽然循环在 tkinter 窗口中无法正常工作
- powershell - Powershell Where-Object 与变量的比较