WebView에서 스크린을 캡쳐하여 둥근 모서리 사각형을 만들어 각 site의 아이콘으로 사용하였다
......
webView.setWebViewClient(new MyWebViewClient());
webView.setWebChromeClient(new MyWebChromeClient());
.....
/*webViewClient 에 onPageFinished 이벤트가 있지만 테스트해 본 결과 웹페이지가
완전히 로드되지 않았는데도 이벤트가 발생한다. 그래서 아래와 같은 방법으로 웹페이지가
완전히 로드되면 캡쳐를 한다. 그렇치 않으면 완전하 스크린샷을 얻을 수 없다.
*/
public class MyWebChromeClient extends WebChromeClient{
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
progressbar.setProgress(newProgress);
if (newProgress == 100){
//screen capture
String url = view.getUrl();
Uri uri = Uri.parse(url);
String host = uri.getHost();
String fileName = APP_HOME + "/" + host + ".png";
File f = new File(fileName);
if (f.exists()) return ;
Picture pic = view.capturePicture();
saveScreenshot(pic, fileName);
}
}
}
private void saveScreenshot(final Picture pic, final String fileName){
new Thread(new Runnable() {
@Override
public void run() {
Bitmap bmp = Bitmap.createBitmap(200,200, Bitmap.Config.ARGB_8888);
Bitmap roundBmp = Bitmap.createBitmap(200,200, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
pic.draw(canvas);
Canvas rCanvas = new Canvas(roundBmp);
//for round image
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0,0,200, 200);
final RectF rectF = new RectF(rect);
final float roundPx = 20;
paint.setAntiAlias(true);
paint.setColor(color);
rCanvas.drawARGB(0,0,0,0);
rCanvas .drawRoundRect(rectF, roundPx, roundPx, paint);
paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN));
rCanvas .drawBitmap(bmp, rect, rect, paint);
try {
FileOutputStream output = new FileOutputStream(fileName);
roundBmp.compress(Bitmap.CompressFormat.PNG, 90, output);
output.flush();
output.close();
// Images.Media.insertImage(getContentResolver(), bmp, fileName, null);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
'android' 카테고리의 다른 글
Zetty GMPlayer (굿모닝팝스 청취 전용 앱) (0) | 2011.02.06 |
---|---|
url 짧게 만들기(shortened url) (0) | 2011.02.01 |
EditText에서 문장 끝에 커서 놓기 (0) | 2011.01.26 |
부트에니메이션 파일 만들기 (0) | 2011.01.24 |
부팅화면 (부트에니메이션) 바꾸기 (0) | 2011.01.24 |