Android 中View类DrawingCache的使用

View组件显示的内容可以通过cache机制保存为bitmap

Java代码:

        final ImageView img1 = findViewById(R.id.img1);
        final TextView txt1 = findViewById(R.id.txt1);
        txt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 若想更新cache,必须要调用destroyDrawingCache方法把旧的cache销毁,才能建立新的
                txt1.destroyDrawingCache();
                // 要获取cache首先要通过setDrawingCacheEnable方法开启cache
                txt1.setDrawingCacheEnabled(true);
                // 调用getDrawingCache方法就可以获得view的cache图片
                Bitmap bp = txt1.getDrawingCache();
                // 复制bp
                Bitmap cache = Bitmap.createBitmap(bp);
                // 当调用setDrawingCacheEnabled方法设置为false,系统也会自动把原来的cache销毁
                txt1.setDrawingCacheEnabled(false);
                img1.setImageBitmap(cache);
            }
        });

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="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/txt1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="@android:color/holo_red_dark"
        android:text="你好好吧"
        android:textStyle="bold" />

    <ImageView
        android:id="@+id/img1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_margin="10dp" />

</LinearLayout>

通过以上代码,可以将TextView显示内容以及背景生成位图展示在ImageView中

另外:
ViewGroup在绘制子view时
也提供了两个方法

//  ViewGroup里所有的子view开启cache
setChildrenDrawingCacheEnabled(boolean enabled) 

// 使在绘制子view时,若该子view开启了cache,则使用它的cache进行绘制,从而节省绘制时间
// (如何验证?)
setChildrenDrawnWithCacheEnabled(boolean enabled) 

获取cache通常会占用一定的内存,所以通常不需要的时候有必要对其进行清理,通过destroyDrawingCache或setDrawingCacheEnabled(false)实现

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容