1 工作空间

Android——截图案例_第1张图片

2 代码

MainActivity.java

package com.zhyan8.demo;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    private TextView tv;    private ImageView iv;    private Button btn_chat;    private Button btn_capture;    private LinearLayout layout;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();    }    private void init() {        tv = (TextView) findViewById(R.id.tv);        iv = (ImageView) findViewById(R.id.iv);        btn_chat = (Button) findViewById(R.id.btn_chat);        btn_capture = (Button) findViewById(R.id.btn_capture);        layout = (LinearLayout) findViewById(R.id.laout);        btn_chat.setOnClickListener(cl);        btn_capture.setOnClickListener(cl);    }    private View.OnClickListener cl = new View.OnClickListener() {        @Override        public void onClick(View v) {            if (v.getId() == R.id.btn_chat) {                int random = (int)(Math.random()*10)%10;                String s = tv.getText().toString() + random;                tv.setText(s);            } else if (v.getId() == R.id.btn_capture) {                layout.setDrawingCacheEnabled(true); //开启layout布局的视图缓存                Bitmap bitmap = layout.getDrawingCache(); //从layout布局的绘图缓存中获取位图对象                iv.setImageBitmap(bitmap); //给iv设置位图对象                //在截图完毕后,不能马上关闭绘图缓存,因为画面渲染需要时间,如果立即关闭,渲染画面就找不到位图对象,所以要等界面渲染完毕后再关闭绘图缓存                mHandler.postDelayed(mResetCache,200); //延迟关闭缓存            }        }    };    private Handler mHandler = new Handler(); //声明一个任务处理器    private Runnable mResetCache = new Runnable() {        @Override        public void run() {            layout.setDrawingCacheEnabled(false); //关闭layout布局的视图缓存        }    };}

注意:在截图完毕后,不能马上关闭绘图缓存,因为画面渲染需要时间,如果立即关闭,渲染画面就找不到位图对象,所以要等界面渲染完毕后再关闭绘图缓存,这里采取的方案是延时200ms执行关闭绘图缓存,为不阻塞主线程,在子线程中执行。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>                                

界面如下:

Android——截图案例_第2张图片

3 效果展示

连续点击若干次【输入】,如下:

Android——截图案例_第3张图片

 点击【截图】,如下:

Android——截图案例_第4张图片

可以看到,在下面的 ImageView 视图里,显示了上面的截图。

更多相关文章

  1. Android – 加载图片本缓存到内存与本地
  2. Android中Bitmap.createBitmap重载方总结 和 Android实现位图剪
  3. Android大图片裁剪终极解决方案(下:拍照截图)
  4. [Android]ListView性能优化之视图缓存
  5. Android 位图(二) Bitmap
  6. 图片缓存优化
  7. 2013.04.03——— android 图片缓存之一LinkedHashMap介绍
  8. Android轻量级缓存框架ASimpleCache

随机推荐

  1. GooglePlay 分包 安装obb
  2. 在android中创建bitmap避免内存不足的方
  3. PackageManagerService初始化
  4. 2018 Android(安卓)文章合集 200+ 篇
  5. Android(安卓)FFmpeg移植总攻略——获取
  6. Android学习路线(二十四)ActionBar Fragmen
  7. Android 3.0上访问出现 android.os.Netwo
  8. Drawable Resources与Color State List R
  9. 详解四种基本布局 (layout)
  10. Android:adb shell am命令行发送Activity