年前在做项目时,客户提了一个需求,在手机客户端中需要集成海康威视摄像头的视频监控功能,并在需要在地图中加载摄像头的位置,并通过点击进入摄像头监控视频界面,如图1所示:
marker默认只能加载bitmap图片,客户要求需要在摄像头图标上用文字标记出摄像头位置(没办法用户要啥就得整啥),求助百度,找到一个比较靠谱的实现方案,就是将view转换成Bitmap,然后在设置到marker中。首先自定义布局video_camera.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/transparent" android:gravity="center_vertical" android:orientation="vertical" android:padding="10dp" > <TextView android:id="@+id/camera_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/top_title_bg_color_b" android:layout_gravity="center_horizontal" android:textSize="15sp" android:text="@null"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="centerCrop" android:padding="5dip" android:src="@drawable/camera_marker" android:layout_gravity="center_horizontal"/> </LinearLayout>
然后通过View view=inflater.inflate(R.layout.video_camera,null)加载布局文件。最后实现将view转成Bitmap的方法, 代码如下:
private Bitmap getViewBitmap(View addViewContent) {
addViewContent.setDrawingCacheEnabled(true);
addViewContent.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
addViewContent.layout(0, 0,
addViewContent.getMeasuredWidth(),
addViewContent.getMeasuredHeight());
addViewContent.buildDrawingCache();
Bitmap cacheBitmap = addViewContent.getDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);
return bitmap;
}