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);    }}

好了,截屏就这样咯!

原创粉丝点击