android截取屏幕图片

标签: android 屏幕 图片 | 发表时间:2012-04-12 13:56 | 作者:陈雨晨
出处:http://www.blogjava.net/
package com.iceman.printscreen;

import java.io.File;
import java.io.FileOutputStream;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.os.Environment;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;

public class PrintScreenDemoActivity extends Activity {
    private Button mButton;
    private LinearLayout mLayout;
    private int mPrintNum;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LayoutInflater inf = this.getLayoutInflater();
        mLayout = (LinearLayout)inf.inflate(R.layout.main, null);
        setContentView(mLayout);
        mButton = (Button)findViewById(R.id.print_btn);
        mButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                GetandSaveCurrentImage();
                mPrintNum++;
                mButton.setText("截屏次数:"+mPrintNum);
            }
        });
    }
    private void GetandSaveCurrentImage()   
    {   
        //1.构建Bitmap   
        WindowManager windowManager = getWindowManager();   
        Display display = windowManager.getDefaultDisplay();   
        int w = display.getWidth();   
        int h = display.getHeight();   
           
        Bitmap Bmp = Bitmap.createBitmap( w, h, Config.ARGB_8888 );       
           
        //2.获取屏幕   
        View decorview = this.getWindow().getDecorView();  
        decorview.setDrawingCacheEnabled(true);    
        Bmp = decorview.getDrawingCache();    
        String SavePath = getSDCardPath()+"/PrintScreenDemo/ScreenImage"; 
       
        //3.保存Bitmap    
        try {   
            File path = new File(SavePath);   
            //文件   
            String filepath = SavePath + "/Screen_"+mPrintNum+".png";   
            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();     
                   
                Toast.makeText(this, "截屏文件已保存至SDCard/PrintScreenDemo/ScreenImage/下", Toast.LENGTH_LONG).show();   
            }   
       
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
    }   
     
       /** 
        * 获取SDCard的目录路径功能 
        * @return 
        */ 
    private String getSDCardPath(){ 
        File sdcardDir = null; 
        //判断SDCard是否存在 
        boolean sdcardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 
        if(sdcardExist){ 
            sdcardDir = Environment.getExternalStorageDirectory(); 
        } 
        
        return sdcardDir.toString(); 
    } 
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/print_btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="截屏" />

</LinearLayout>
由于是把截屏的图片存放到sd卡里,所以要在manifest.xml文件中增加对sd卡的写入权限.


陈雨晨 2012-04-12 21:56 发表评论

相关 [android 屏幕 图片] 推荐:

android截取屏幕图片

- - BlogJava-首页技术区
                mButton.setText("截屏次数:"+mPrintNum);.         //1.构建Bitmap   .         //2.获取屏幕   .         //3.保存Bitmap    .             //文件   .                 Toast.makeText(this, "截屏文件已保存至SDCard/PrintScreenDemo/ScreenImage/下", Toast.LENGTH_LONG).show();   .

android 屏幕适配原则

- - CSDN博客推荐文章
      Android手机屏幕大小不一,有480x320,640x360,800x480.怎样才能让App自动适应不同的屏幕呢. 其实很简单,只需要在res目录下创建不同的layout文件夹,比如:layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用.

关于Android的多种屏幕适配

- 甜菜 - 互联网的那点事...
严格来说,作为读者,你应该带着批判性质的眼光来看这篇文章,因为这篇文章是一个尚未通读Android官方开发资料《Supporting Multiple Screens》的纯产品人员所写,相关理解来源于零星的资料、实践以及和开发人员的沟通,此文章更多为目前盆地个人理解的总结. 我会给自己定下目标,早日通读官方资料,此文中的相关错误,也请予以指正.

Android的屏幕多样性支持

- - CSDN博客推荐文章
原文地址: http://developer.android.com/guide/practices/screens_support.html. 原文版权: Creative Commons 2.5 Attribution License. 译文作者:Jianan - qinxiandiqi@foxmail.com.

android图片压缩方法

- - CSDN博客移动开发推荐文章
第一:我们先看下质量压缩方法.         image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中  .         while ( baos.toByteArray().length / 1024>100) {  //循环判断如果压缩后图片是否大于100kb,大于继续压缩         .

android屏幕监控上下左右滑动

- - CSDN博客推荐文章
简单写一下,view 或者 activity 实现 OnGestureListener 接口. 在 onFling方法中实现左右滑动:. 在 onScroll 方法中实现上下滑动:. 作者:spider_zhcl 发表于2012-6-10 12:33:34 原文链接. 阅读:12 评论:0 查看评论.

Android屏幕大小适配问题解决

- - CSDN博客移动开发推荐文章
1、长度(真实长度):英寸、inch. 2、分辨率:density 每英寸像素数  dpi(密度). 4、dip的公式:px /dip=dpi/160  所以 dip 类似于英寸、长度(dp=dip,sp类似于dip)  dip=160*inch. 当dip一定时,dpi 越大,px就越大. 5、广义分辨率=长px*宽px.

android中dip、dp、px、sp和屏幕密度

- - 编程语言 - ITeye博客
dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这    这个,不依赖像素.     这里要特别注意dip与屏幕密度有关,而屏幕密度又与具体的硬件有关,硬件设置不正确,有可能导致dip不能正常显示.

LG Optimus Sol 官方图片首次出现,3.8 寸屏幕

- 品味视界 - Engadget 中国版
这款 LG Optimus Sol (LG E730)之前有过一段来自印度的视频曝光,这次终于出现官方图片,让我们可以看到这款机子的全貌,和视频中的有些许的差别. 根据消息来源,这款机子配置的是 3.8 寸的屏幕,姜饼 2.3 系统,整体设计简约,屏幕下方的菜单键变成 3 个,前置一个 VGA 视频摄像头,后置 500 万像素的摄像头.

android 比较靠谱的图片压缩

- - ITeye博客
第一:我们先看下质量压缩方法:. image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中. //循环判断如果压缩后图片是否大于100kb,大于继续压缩. baos.reset();//重置baos即清空baos.