android应用中,我们可能需要对一些布局截图显示,比如:在editText中加入图片,或者加入一个录音布局,布局中有图标,有录音文件大小和录音名字。一般步骤:
1 获取自定义布局
2 初始化控件值
3 打开图像缓存
4 测量大小
5 视图布局再获取视图view对象
如:自定义布局文件:task_recoder_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/task_bj_recoder"
android:layout_margin="3dp"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="8dp"
android:src="@drawable/task_icon_recoder"
/>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_margin="5dp"
>
<TextView
android:id="@+id/tv_recoder_filename"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:text="20141010.mp3"
android:textSize="12sp"
/>
<TextView
android:id="@+id/tv_recoder_size"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:textSize="12sp"
android:text="13kb"
/>
</LinearLayout>
</LinearLayout>
调用生成代码是:
View view = getLayoutInflater().inflate(R.layout.task_recoder_item, null);
TextView tv_filename = (TextView) view.findViewById(R.id.tv_recoder_filename);
TextView tv_size = (TextView) view.findViewById(R.id.tv_recoder_size);
tv_filename.setText(file.substring(file.lastIndexOf("/")+1));
tv_size.setText(FileUtils.getAutoFileOrFilesSize(file));
//打开图像缓存
view.setDrawingCacheEnabled(true);
//测量大小
view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
//发送尺寸到view和子view
view.layout(0, 0, view.getMeasuredWidth(),view.getMeasuredHeight());
//获取可视组件的截图
Bitmap cacheBitmap = view.getDrawingCache();
效果就是组件的截图
自己做个笔记,也希望能帮助有需要的同学~~