美文网首页
Android 中View类DrawingCache的使用

Android 中View类DrawingCache的使用

作者: 初心一点 | 来源:发表于2019-03-09 00:10 被阅读0次

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)实现

相关文章

网友评论

      本文标题:Android 中View类DrawingCache的使用

      本文链接:https://www.haomeiwen.com/subject/ykejpqtx.html