文档章节

android截屏

80后小子
 80后小子
发布于 2012/03/27 17:33
字数 319
阅读 1370
收藏 2

最近做一个游戏动画中的拍照效果,一直以为完成截屏功能,即可实现,但是在这期间,遇到了不少问题

第一,截屏后保存在SDCard下面的.png图片在默认的相册中找不到;导入桌面后预览才能显示。

第二,尝试截屏功能用在游戏中,截屏后导入桌面预览图片,发现该有的某一帧动画背景不能显现。

小弟,初学android,那位大牛有游戏中拍照后分享图片的经验,望不吝赐教,感激……

(**这里贴出截屏功能的一个简单Demo,部分也是在别人的基础上改的**)

 public class MainActivity extends Activity {
 Button mButton;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mButton = (Button) findViewById(R.id.button);
        mButton.setOnClickListener(new View.OnClickListener() {
         @Override
           public void onClick(View v) {
             GetandSaveCurrentImage();
          }
        });
    }
 protected void GetandSaveCurrentImage() {
      WindowManager widowManager = getWindowManager();
      Display display = widowManager.getDefaultDisplay();
      int w = display.getWidth();
      int h = display.getHeight();
  
      Bitmap Bmp = Bitmap.createBitmap(w,h,Config.ARGB_8888);
      View decorview = this.getWindow().getDecorView();
      decorview.setDrawingCacheEnabled(true);
      Bmp = decorview.getDrawingCache();
  try {
      String SavePath = getSDCardPath() + "/ScreenImage";
      File path = new File(SavePath);
      String filepath = SavePath + "/Screen_1.jpg";
      File file = new File(filepath);
      if(!path.exists()){
        path.mkdirs();
      }
      if(!file.exists()){
         file.createNewFile();
       }
       FileOutputStream fos = null;
        fos = new FileOutputStream(file);
      if(null != fos){
         Bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);
         fos.flush();
         fos.close();
         Log.i("LW", "截屏文件已保存至SDCard/ScreenImage/下");
       }
  } catch (Exception e) {
       e.printStackTrace();
  }
 }
 private String getSDCardPath() {
  File sdCardDir = null;
  boolean sdcardExit = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
  if(sdcardExit){
   sdCardDir = Environment.getExternalStorageDirectory();
  }
  return sdCardDir.toString();
 }
}

 

 

© 著作权归作者所有

80后小子
粉丝 5
博文 84
码字总数 23028
作品 0
海淀
程序员
私信 提问
加载中

评论(6)

80后小子
80后小子

引用来自“风祭将”的评论

请问,如果我要设置截图的大小和位置该怎么做?

WindowManager widowManager = getWindowManager();
Display display = widowManager.getDefaultDisplay();
int w = display.getWidth();
int h = display.getHeight();
要拿到指定高宽和位置的,我想仿照上面的代码先拿到整张图片的,然后重载Bitmap的createBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)方法。
这里参数的含义:
Bitmap source:要从中截图的原始位图
  int x:起始x坐标
  int y:起始y坐标
int width:要截的图的宽度
Int height:要截的图的宽度
Bitmap.Config config:一个枚举类型的配置,可以定义截到的新位图的质量
返回值:返回一个剪切好的Bitmap 。
只是这么一个想法,没试。也不知道行不行,如有解决方法,望指点……
风祭_将
风祭_将
请问,如果我要设置截图的大小和位置该怎么做?
80后小子
80后小子

引用来自“虫虫”的评论

引用来自“夏止忧伤”的评论

引用来自“虫虫”的评论

原创吗?能否把代码格式化一下?

不是。代码在编译环境下调试好直接拷过来的,格式应该没问题……

我的意思是你在贴代码的时候,可以使用编辑器的插入代码功能,这样就有代码着色了。

嗯,谢谢……第一次贴代码,呵呵……
虫虫
虫虫

引用来自“夏止忧伤”的评论

引用来自“虫虫”的评论

原创吗?能否把代码格式化一下?

不是。代码在编译环境下调试好直接拷过来的,格式应该没问题……

我的意思是你在贴代码的时候,可以使用编辑器的插入代码功能,这样就有代码着色了。
80后小子
80后小子

引用来自“虫虫”的评论

原创吗?能否把代码格式化一下?

不是。代码在编译环境下调试好直接拷过来的,格式应该没问题……
虫虫
虫虫
原创吗?能否把代码格式化一下?
截取手机屏幕成图片保存到sdcard卡当中

import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.os.Bundle; import android.os.Environment; import android.view.......

守夜之星
2012/09/07
0
0
Android 开发中,与屏幕有关的三个小众知识

宽屏适配、禁止截屏和保持屏幕常亮,这三个与屏幕有关的 Android 开发小众知识,说不定什么时候就派上用场。 宽屏适配 越来越多的手机厂商趋向于全面屏设计,比如今年出厂的 18.5:9 屏幕比例...

亦枫
2018/10/29
0
0
如何使用 Eclipse 给 Android 模拟器截屏

如果你是一个Android开发者,想要对你的应用程序进行截屏,用来完成文档,或把它提交到谷歌市场。如今的智能手机都很容易做到,如三星Galaxy系列的Android手机就有屏幕快照。但有些时候,我们...

彭博
2012/11/27
2.6K
1
如何使用 Eclipse 给 Android 模拟器截屏

如果你是一个Android开发者,想要对你的应用程序进行截屏,用来完成文档,或把它提交到谷歌市场。如今的智能手机都很容易做到,如三星Galaxy系列的Android手机就有屏幕快照。但有些时候,我们...

迷途d书童
2012/09/06
4K
15
原生安卓 7.1 解锁矩形截屏功能:国产 ROM 笑了

目前,最新的 Android 7.1 系统已经在 Pixel 手机上搭载,当然,一些开源的 Build 也惠及了部分 Nexus 手机。 虽然不少国产 ROM 都是基于安卓开发,但在形式上进行了相当多的创新,并且添加了...

局长
2016/11/09
5.7K
9

没有更多内容

加载失败,请刷新页面

加载更多

REST接口

文章来源 https://zhuanlan.zhihu.com/p/28674721?group_id=886181549958119424 http://www.ruanyifeng.com/blog/2014/05/restful_api.html REST 对请求的约定 REST 用来规范应用如何在 HTTP......

Airship
6分钟前
0
0
Spring Cloud Config 统一配置中心

Spring Cloud Config 统一配置中心 一、统一配置中心 统一管理配置 通常,我们会使用配置文件来管理应用的配置。如一个 Spring Boot 的应用,可以将配置信息放在 application.yml 文件中,如...

非摩尔根
22分钟前
0
0
android ------ AAPT2 error: check logs for details解决方法

AAPT 是全称是 Android Asset Packaging Tool,它是构建 App,甚至是构建 Android 系统都必不可少的一个工具。它的作用是将所有资源文件压缩打包到Android APK 当中。我们在 Android SDK 目录...

切切歆语
今天
1
0
今天的学习

今天学到了<select></select>标签: <label for="unittype">Select unit type: </label><select id="unittype" name="unittype" autofocus > <option value="1"> Miner </option> ......

墨冥
今天
1
0
程序员随想-关于分享

最早的时候,文字是贵族这些上层人士才会学习的,底层人士没有资格和渠道去学习,同样用文字、图像等其他载体承载的知识大部分也只有贵族阶层才能享受的。后来有了造纸术、印刷术,成本降低,...

Lubby
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部