Android——截图案例
16lz
2021-01-23
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"?>
界面如下:
3 效果展示
连续点击若干次【输入】,如下:
点击【截图】,如下:
可以看到,在下面的 ImageView 视图里,显示了上面的截图。
更多相关文章
- Android – 加载图片本缓存到内存与本地
- Android中Bitmap.createBitmap重载方总结 和 Android实现位图剪
- Android大图片裁剪终极解决方案(下:拍照截图)
- [Android]ListView性能优化之视图缓存
- Android 位图(二) Bitmap
- 图片缓存优化
- 2013.04.03——— android 图片缓存之一LinkedHashMap介绍
- Android轻量级缓存框架ASimpleCache