1. 程式人生 > >Android基礎知識-------截圖

Android基礎知識-------截圖

這裡我介紹下截圖方式。

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

好了,截圖就這樣咯!