Android基础知识-------截屏
来源:互联网 发布:tenga 知乎 编辑:程序博客网 时间:2024/06/03 14:41
这里我介绍下截屏方式。
使用View.getDrawingCache()方式
通过该方法可以获取到当前activity的页面的bitmap,然后进行保存,可以说是最简单的实习方式。优点是不需要root,不过缺点也比较明显只能获取当前运行的activity,无法获取其他应用,也不能用到service后台截屏。
下面是方法:
private void screenshot() { // 获取屏幕 View dView = getWindow().getDecorView(); dView.setDrawingCacheEnabled(true); dView.buildDrawingCache(); bmp = dView.getDrawingCache(); if (bmp != null) { try { // 获取内置SD卡路径 String sdCardPath = Environment.getExternalStorageDirectory().getPath(); // 图片文件路径 filePath = sdCardPath + File.separator + "screenshot.png"; File file = new File(filePath); FileOutputStream os = new FileOutputStream(file); bmp.compress(Bitmap.CompressFormat.PNG, 100, os); os.flush(); os.close(); } catch (Exception e) { } } }
还要加上权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
给个例子
package com.example.admin.jieping;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.widget.Button;import java.io.File;import java.io.FileOutputStream;import static com.example.admin.jieping.R.id.btn_save;public class MainActivity extends Activity { Bitmap bmp; String filePath; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button) this.findViewById(btn_save); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { screenshot(); } }); Button btn_tiao = (Button) findViewById(R.id.btn_tiao); btn_tiao.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this,Main2Activity.class); intent.putExtra("bitmap",filePath); startActivity(intent); } }); } private void screenshot() { // 获取屏幕 View dView = getWindow().getDecorView(); dView.setDrawingCacheEnabled(true); dView.buildDrawingCache(); bmp = dView.getDrawingCache(); if (bmp != null) { try { // 获取内置SD卡路径 String sdCardPath = Environment.getExternalStorageDirectory().getPath(); // 图片文件路径 filePath = sdCardPath + File.separator + "screenshot.png"; File file = new File(filePath); FileOutputStream os = new FileOutputStream(file); bmp.compress(Bitmap.CompressFormat.PNG, 100, os); os.flush(); os.close(); } catch (Exception e) { } } }}
package com.example.admin.jieping;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ImageView;public class Main2Activity extends AppCompatActivity { ImageView image; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); image = (ImageView) findViewById(R.id.imageView); String bitmapStr = getIntent().getStringExtra("bitmap"); Bitmap bitmap = BitmapFactory.decodeFile(bitmapStr); image.setImageBitmap(bitmap); }}
好了,截屏就这样咯!
阅读全文
1 0
- Android基础知识-------截屏
- Android 基础知识
- Android基础知识
- Android基础知识
- Android基础知识
- Android基础知识
- android 基础知识
- Android基础知识
- android基础知识
- android基础知识
- android基础知识
- Android基础知识
- android基础知识
- android基础知识
- Android基础知识
- android 基础知识
- android基础知识
- Android基础知识
- SqlSessionFactory(二)
- Linux下两个常见的编译错误
- * 24种设计模式——迭代器模式
- 非标准硬件控制之增加系统API
- 安卓文本样式-Spannable的使用
- Android基础知识-------截屏
- WAMP集成环境修改mysql数据库密码
- Django学习——创建第一个项目(host访问问题)
- BZOJ 1507: [NOI2003]Editor rope
- SQL处理表结构的基本方法整理
- JS前端模板引擎实现
- Keil里面无法使用“Go To Definition Of ”跳转到相应的函数解决办法
- 分布式系统中的必备良药 —— 服务治理
- 多个 ZooKeeper 服务器的例子