Android 获取 View 显示区域截图

 private Bitmap mCopyBmp = null;
   
 private Bitmap captureVisibleBitmap(View view) {
        view.setDrawingCacheEnabled(true);
        Bitmap copy = view.getDrawingCache();
        if (null != copy) {
            if (null != mCopyBmp) {
                mCopyBmp.recycle();
            }
            mCopyBmp = Bitmap.createBitmap(copy);
        }

        view.setDrawingCacheEnabled(false);
        return mCopyBmp;
    }

说明

  1. 不要试图在 onDraw() 方法中调用 getDrawingCache(), 因为 getDrawingCache() 内部会调用 onDraw()

  2. 如果不调用setDrawingCacheEnabled(true) 那么每次 getDrawingCache() 都需要调用 buildDrawingCache(), 重要的是在要记得最后调用 destroyDrawingCache()来释放 cache

  3. 在setDrawingCacheEnabled(true)的情况下,不需要调用 buildDrawingCache(),也不需要 destroyDrawingCache(), 系统会自动管理

OpenGL 顶点变换管线

opengl顶点变换管线

ref: 《OpenGL超级宝典 v4》

查看微信 OpenID 的简单方法

最简单的方法:使用sougou的微信搜索功能 http://weixin.sogou.com/

查看微信openID的简单方法

Look: 看到openID了哇

Ubuntu 切换 JDK 版本

Install

sudo update-alternatives --install /usr/bin/java java /opt/jdk1.7.0_67/bin/java 50
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.7.0_67/bin/javac 50
sudo update-alternatives --install /usr/bin/javah javah /opt/jdk1.7.0_67/bin/javah 50
sudo update-alternatives --install /usr/bin/javaws javaws /opt/jdk1.7.0_67/bin/javaws 50
sudo update-alternatives --install /usr/bin/javap javap /opt/jdk1.7.0_67/bin/javap 50

Config

sudo update-alternatives --config javac
sudo update-alternatives --config java
sudo update-alternatives --config javaws
sudo update-alternatives --config javap
sudo update-alternatives --config jar
sudo update-alternatives --config jarsigner

Swift 中强引用、弱引用、无主引用使用规则

  • 两个属性的值都可能是 nil, 并有可能产生强引用环。这种场景下适合使用弱引用。
  • 一个属性可以是 nil,另外一个属性不允许是 nil, 并有可能产生强引用环。这种场景下适合使用无主引用。
  • 两个属性都必须有值,且初始化完成后不能为 nil, 这种场景下要一个类用无主引用属性,另一个类用隐式展开的可选属性。