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"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:orientation="vertical"
tools:context="com.zhyan8.demo.MainActivity"> <LinearLayout
android:id="@+id/laout"
android:layout_width="match_parent"
android:layout_height="300dp"
android:orientation="vertical">
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="200dp"
android:textSize="30sp"/> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<Button
android:id="@+id/btn_chat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:text="输入"
android:layout_margin="10dp"/> <Button
android:id="@+id/btn_capture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:text="截图"
android:layout_margin="10dp"/>
</LinearLayout>
</LinearLayout> <ImageView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="200dp"
android:scaleType="fitCenter"/>
</LinearLayout>

​ 界面如下:

3 效果展示

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

​ 点击【截图】,如下:

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

​ 声明:本文转自【Android】截图案例

【Android】截图案例的更多相关文章

  1. Android截图

    Android截图很好的实现,从文档的发展,查看View有一个接口getDrawingCache(),这个接口可以得到View当调用这个接口的位图图像Bitmap. 抓取截图View在图像的某一个时刻 ...

  2. android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】

    android json解析及简单例子+Android与服务器端数据交互+Android精彩案例[申明:来源于网络] android json解析及简单例子:http://www.open-open. ...

  3. AllJoyn+Android开发案例-android跨设备调用方法

    AllJoyn+Android开发案例-android跨设备调用方法 项目须要涉及AllJoyn开源物联网框架.前面主要了解了一些AllJoyn主要的概念.像总线,总线附件,总线对象,总线接口这种概念 ...

  4. Android截图命令screencap与视频录制命令screenrecord

    Android截图命令screencap 查看帮助命令 bixiaopeng@bixiaopeng ~$ adb shell screencap -v screencap: invalid optio ...

  5. android 自动化测试案例之 MonkeyRunner

    #-*- coding: UTF-8 -*- #上面第一行是设置文件编码,windows下第一行必须是这个#文件名 MonkeyRunner.py#功能: 使用monkey runner测试app,此 ...

  6. 【Android测试】Android截图的深水区

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/6113059.html 需求 这两天遇到这样一个事情,因为某 ...

  7. Android小案例——简单图片浏览器

    今天上午休息看Android书,里面有个变化图片的示例引起了我的兴趣. 示例需求: 有N张图片,循环显示图片的内容.如果需求让我写我会使用一个变量count来保存显示图片数据的索引,图片显示时做个判断 ...

  8. android 登陆案例_最终版本 sharedpreference

    xml  与之前的登陆案例相同 java代码: package com.itheima.login; import java.util.Map; import com.itheima.login.ut ...

  9. android ANR 案例分析

    案例1:关键词:ContentResolver in AsyncTask onPostExecute, high iowait Process:com.android.email Activity:c ...

  10. Python实现对Android截图

    背景: 测试过程中,总是需要对Android设备进行截图,然后在截图中标注问题描述: 手动方式: 1.使用adb scrrencap /sdcard/screen.png 命令对Android设备进行 ...

随机推荐

  1. .NET开源的简单、快速、强大的前后端分离后台权限管理系统

    前言 今天分享一款前端基于Vue3,后端基于.NET8开源的免费(MIT license).简单.快速.强大的前后端分离后台权限管理系统:中台Admin(Admin.Core). 项目官方介绍 中台A ...

  2. 【TouxhGFX】集成 之 《Using C code with TouchGFX》

    在TouchGFX中使用C代码 您可能已经知道,TouchGFX是用C ++实现的,而TouchGFX API也是C ++.这意味着至少直接与UI相关的代码必须是C ++代码.但是,并不需要整个系统都 ...

  3. 选择DOM中除一个元素以外的所有元素[Jquery]

    $(function(){ $('body > *').not('#myDiv') .on('mouseover', function(){ //... }) .on('click', func ...

  4. Python Code_02

    author : 写bug的盼盼 development time : 2021/8/27 19:59 变量定义 name = '阿哈' print(name) print('标识',id(name) ...

  5. [转帖]Shell编程之函数

    目录 Shell函数 使用Shell函数的优点 Shell 函数定义 使用原则 函数传参 函数变量的作用范围 函数递归 阶乘 递归目录 函数库 Shell函数 将命令序列按格式写在一起 可方便重复使用 ...

  6. [转帖]TiKV Control 使用说明

    https://docs.pingcap.com/zh/tidb/stable/tikv-control TiKV Control(以下简称 tikv-ctl)是 TiKV 的命令行工具,用于管理 T ...

  7. dmidecode 查看内存以及硬件信息

    安装工具dmidecode 使用 1.查看内存槽及内存条 $ sudo dmidecode -t memory 2.查看内存的插槽数,已经使用多少插槽.每条内存多大 $ sudo dmidecode  ...

  8. 手写模拟Spring底层原理-Bean的创建与获取

    作者:京东物流 张鼎元 1 引言 大家好,相信大家对Spring的底层原理都有一定的了解,这里我们会针对Spring底层原理,在海量的Spring源代码中进行抽丝剥茧手动实现一个Spring简易版本, ...

  9. windwos10任务栏居中

    如下操作 新建一个文件夹如图 然后出现这个重右往左一直拖然后拉出来就行了如图 拖不动或者没有的把这个关了-锁定任务栏 文字如何隐藏? 在这个文字旁边右击关闭标题即可 然后锁定任务栏就OK了

  10. 使用docker部署一个go应用

    使用docker部署一个go应用 前言 直接部署 构建镜像 创建并运行容器 使用docker-compose部署 上传到docker-hub,然后拉取镜像,部署 参考 使用docker部署一个go应用 ...