sitelink1 | http://ghj1001020.tistory.com/m/6 |
---|---|
sitelink2 | |
sitelink3 |
버튼클릭 -> 화면캡쳐 -> 캡쳐한 이미지를 갤러리에 추가
MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
//캡쳐버튼클릭
public void mOnCaptureClick(View v){
//전체화면
View rootView = getWindow().getDecorView();
File screenShot = ScreenShot(rootView);
if(screenShot!=null){
//갤러리에 추가
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(screenShot)));
}
}
//화면 캡쳐하기
public File ScreenShot(View view){
view.setDrawingCacheEnabled(true); //화면에 뿌릴때 캐시를 사용하게 한다
Bitmap screenBitmap = view.getDrawingCache(); //캐시를 비트맵으로 변환
String filename = "screenshot.png";
File file = new File(Environment.getExternalStorageDirectory()+"/Pictures", filename); //Pictures폴더 screenshot.png 파일
FileOutputStream os = null;
try{
os = new FileOutputStream(file);
screenBitmap.compress(Bitmap.CompressFormat.PNG, 90, os); //비트맵을 PNG파일로 변환
os.close();
}catch (IOException e){
e.printStackTrace();
return null;
}
view.setDrawingCacheEnabled(false);
return file;
}
|
cs |
activity_main.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rootLayout"
android:gravity="center"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:textSize="24dp"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="화면을 캡쳐합니다." />
<Button
android:text="캡쳐하기"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="mOnCaptureClick"/>
<ImageView
android:src="@drawable/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
|
cs |
AndroidManifest.xml
1
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
cs |
저장소에 파일 쓰기 권한
결과
캡쳐하기 버튼을 누르면 화면을 캡쳐하여 갤러리에 추가한다.