android图片保存形式,Android应用开发之Android ScrollView截图和图片保存到相册的方式...
本文將帶你了解Android應(yīng)用開發(fā)之Android ScrollView截圖和圖片保存到相冊的方式,希望本文對大家學(xué)Android有所幫助。
1.1首先來看你一種截取屏幕,這種代碼有缺陷,只能截取一次
Java代碼 ? ?getWindow().getDecorView().setDrawingCacheEnabled(true);??Bitmap?screenBitmap?=?getWindow().getDecorView().getDrawingCache();??img_display.setImageBitmap(screenBitmap);??getWindow().getDecorView().setDrawingCacheEnabled(true);
Bitmap screenBitmap = getWindow().getDecorView().getDrawingCache();
img_display.setImageBitmap(screenBitmap);
1.2下面的是每次都可以截取到(只能截取到可見屏幕部分,不可見部分無法截取)
Java代碼 ? ?View?decorView?=?getWindow().getDecorView();??Bitmap?screenBitmap?=?Bitmap.createBitmap(decorView.getWidth(),?decorView.getHeight(),?Config.ARGB_8888);??Canvas?canvas?=?new?Canvas(screenBitmap);??decorView.draw(canvas);??View ? decorView = getWindow().getDecorView();
Bitmap screenBitmap = Bitmap.createBitmap(decorView.getWidth(), decorView.getHeight(), ? Config.ARGB_8888);
Canvas canvas = new Canvas(screenBitmap);
decorView.draw(canvas);
1.3截取可見與不可見屏幕部分(除ListView和GridView,只能截取ScrollView和HorizontalScrollView),原因是ListView和GridView的適配機(jī)制是不斷的remove和add
注意:這里截取的是View而不是屏幕
ScrollView和HorizontalScrollView必須只有一個子布局,也就是說,他的子布局的來作為容器,它來作為滾動控件
Java代碼 ? ?View?decorView?=?getWindow().getDecorView();??ScrollView?sv?=?(ScrollView)findViewById(R.id.scrollbox);??LinearLayout?panel=?(LinearLayout)sv.findViewById(R.id.scrollbox_panel);??int?sumHeight?=?0;??for(int?i=0;i
ScrollView sv = (ScrollView)findViewById(R.id.scrollbox);
LinearLayout panel= ? (LinearLayout)sv.findViewById(R.id.scrollbox_panel);
int sumHeight = 0;
for(int i=0;i
{
sumHeight += ? panel.getChildAt(i).getHeight();
}
Bitmap bmp = Bitmap.createBitmap(panel.getWidth(),sumHeight,Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
decorView.draw(panel);
圖片保存是使用ContentProvider提供的接口,下面是相冊的Uri定位
Java代碼 ? ?Images.Media.EXTERNAL_CONTENT_URI??Images.Media.EXTERNAL_CONTENT_URI
最簡單的保存方式
Java代碼 ? ?//返回值是?Uri?協(xié)議字符串???String?uriString?=?MediaStore.Images.Media.insertImage(context.getContentResolver(),?bmp,?“截圖-20141121”,?“這是我的截圖”);???//返回值是 ? Uri 協(xié)議字符串
String uriString = ? MediaStore.Images.Media.insertImage(context.getContentResolver(), bmp, ? “截圖-20141121”, “這是我的截圖”);
Java代碼 ? ?/**?//保存到某路徑下?????????File?dir?=?new?File("/sdcard/t/");?????????if?(!dir.exists())?{?????????????dir.mkdirs();?????????}?????????final?String?photoUrl?=?"/sdcard/t/"?+?System.currentTimeMillis()?+?".png";//換成自己的圖片保存路徑?????????final?File?file?=?new?File(photoUrl);?????????try?{?????????????FileOutputStream?out?=?new?FileOutputStream(file);?????????????bm.compress(Bitmap.CompressFormat.JPEG,?100,?out);?????????????out.flush();?????????????out.close();?????????}?catch?(FileNotFoundException?e)?{?????????????//?TODO?Auto-generated?catch?block?????????????e.printStackTrace();?????????}?catch?(IOException?e)?{?????????????//?TODO?Auto-generated?catch?block?????????????e.printStackTrace();?????????}??**/??/** ? //保存到某路徑下
File dir = new ? File("/sdcard/t/");
if (!dir.exists()) {
dir.mkdirs();
}
final String photoUrl = ? "/sdcard/t/" + System.currentTimeMillis() + ? ".png";//換成自己的圖片保存路徑
final File file = new ? File(photoUrl);
try {
FileOutputStream out = ? new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
} catch ? (FileNotFoundException e) {
// TODO Auto-generated ? catch block
e.printStackTrace();
} catch (IOException e) ? {
// TODO Auto-generated ? catch block
e.printStackTrace();
}
**/
本文由職坐標(biāo)整理并發(fā)布,希望對同學(xué)們有所幫助。了解更多詳情請關(guān)注職坐標(biāo)移動開發(fā)之Android頻道!
總結(jié)
以上是生活随笔為你收集整理的android图片保存形式,Android应用开发之Android ScrollView截图和图片保存到相册的方式...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: div始终在底部
- 下一篇: Android Sdk 国内镜像下载地址