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. 【转】获取本地图片的URL

        在写博客插入图片时,许多时候需要提供图片的url地址.作为菜鸡的我,自然是一脸懵逼.那么什么是所谓的url地址呢?又该如何获取图片的url地址呢? 首先来看一下度娘对url地址的解释:url是 ...

  2. java - 对象装载数据返回

    1. 创建 Phone 类 package class_object; public class Phone { String brand; String color; double price; v ...

  3. Redis-键

  4. mysql-数值函数-取整-保留小数位-求余数

  5. Redis不同版本,内存分配,硬件的性能研究

    Redis不同版本,内存分配,硬件的性能研究 前言 Konw more ! Do more ! Gain more ! 骨折之后开始减肥. 前段时间跳绳导致膝盖不舒服,现在改骑车和走路. 在有限的没人 ...

  6. [转帖]配置cri-docker使kubernetes1.24以docker作为运行时

    从kubernetes 1.24开始,dockershim已经从kubelet中移除,但因为历史问题docker却不支持kubernetes主推的CRI(容器运行时接口)标准,所以docker不能再作 ...

  7. [转帖]s3fs

    https://github.com/s3fs-fuse/s3fs-fuse s3fs allows Linux, macOS, and FreeBSD to mount an S3 bucket v ...

  8. [转帖]linux求数组的交集,shell/bash 交集、并集、差集

    方法一(直接用文件名):取两个文本文件的并集.交集.差集 并: sort -m 交: sort -m 差 file1 - file2: sort -m 方法二(用变量参数):取两个文本文件的并集.交集 ...

  9. [转帖]华为毕昇 JDK 8u292、11.0.11 发布!

    https://baijiahao.baidu.com/s?id=1705499834793298544&wfr=spider&for=pc 2021 年 6 月 30 日,毕昇 JD ...

  10. [转帖] Linux文本命令技巧(上)

    Linux文本命令技巧(上)   原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 前一篇我介绍了awk,这是一个全能的文本处理神器,因为它本身就是一门编程语言了 ...