android--佈局元件截圖
阿新 • • 發佈:2019-01-06
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();
效果就是元件的截圖
自己做個筆記,也希望能幫助有需要的同學~~