zoukankan      html  css  js  c++  java
  • View的setLayerType() , setDrawingCacheEnabled() 方法用法

    一、Android开发:用getDrawingCache方法获取ImageView中的图像需要注意的问题
    http://www.linuxidc.com/Linux/2011-09/43131.htm

    1.     在调用getDrawingCache()方法从ImageView对象获取图像之前,一定要调用setDrawingCacheEnabled(true)方法:

                iv_photo.setDrawingCacheEnabled(true);

            否则,无法从ImageView对象iv_photo中获取图像;

    2.     在调用getDrawingCache()方法从ImageView对象获取图像之后,一定要调用setDrawingCacheEnabled(false)方法:

                iv_photo.setDrawingCacheEnabled(false);

            以清空画图缓冲区,否则,下一次从ImageView对象iv_photo中获取的图像,还是原来的图像。

        // ImageView对象(iv_photo)必须做如下设置后,才能获取其中的图像
    
        iv_photo.setDrawingCacheEnabled(true);
    
        // 在ImageView对象(iv_photo)被touch down的时候,获取ImageView中的图像
    
        obmp = Bitmap.createBitmap(iv_photo.getDrawingCache());
    
        //从ImaggeView对象中获取图像后,要记得调用setDrawingCacheEnabled(false)清空画图缓
    
        //冲区,否则,下一次用getDrawingCache()方法回去图像时,还是原来的图像
    
        iv_photo.setDrawingCacheEnabled(false);
    

      

    二、mView.setLayerType(View.LAYER_TYPE_HARDWARE, null); 

    Android应用程序UI硬件加速渲染的动画执行过程分析

    http://blog.csdn.net/luoshengyang/article/details/46449677

    http://blog.csdn.net/luoshengyang/article/details/45601143

    我们提到了Render Thread对动画显示的两个优化。第一个优化是在动画显示期间,临时将动画的目标View的Layer Type设置为LAYER_TYPE_HARDWARE,这样就可以使得目标View以Open GL里面的Frame Buffer Object(FBO)进行渲染。这种优化的效果就如Render Thread直接以Open GL里面的Texture来渲染TextureView一样。第二个优化是在Main Thread不需要参与动画的显示过程时,动画就会被注册到Render Thread中,这样动画的计算和显示过程就完全由Render Thread来负责。这种优化带来的好处就是在动画显示期间,Main Thread可以去处理其它的用户输入,而且动画的显示也会更加流畅。

    有了这个ViewPropertyAnimator对象之后,就可以调用它的成员函数withLayer将它关联的View的Layer Type设置为LAYER_TYPE_HARDWARE

    mView.setLayerType(View.LAYER_TYPE_HARDWARE, null);  

    可以看到:

           1. 在动画开始显示之前,目标View的Layer Type会被设置为LAYER_TYPE_HARDWARE,并且它的成员函数buildLayer会被调用来创建一个Layer。

           2. 在动画结束显示之后,目标View的Layer Type会被恢复为它之前的Layer Type。注意,这里调用目标View的成员函数getLayerType获得的是它的Layer Type未被设置为LAYER_TYPE_HARDWARE的Layer Type。

  • 相关阅读:
    VMWare 桥接模式
    什么是交叉编译,为什么要使用交叉编译
    最常用的四种大数据分析方法
    C#的Dispose模式复习
    Oracle Data Provider for .NET Support for Microsoft .NET Core
    微软发布了量子计算开发包
    关于Oracle分区表的理解
    html 中video标签视频不自动播放的问题
    input 修改placeholder颜色
    正则表达式 手机号验证、邮箱验证、6~16位数字加字母组合、身份证号码验证
  • 原文地址:https://www.cnblogs.com/bluestorm/p/6930097.html
Copyright © 2011-2022 走看看