Android基礎知識-------截圖
阿新 • • 發佈:2019-01-28
這裡我介紹下截圖方式。
使用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);
}
}
好了,截圖就這樣咯!