and roid携帯電話は長いスクリーンの実例コードを切り取ります。
最近のプロジェクトでは、現在のページを携帯のアルバムに保存する必要があります。私はまだできないと思いました。大神さんの足跡を踏み、大神さんの足跡を踏んで、一緒に前に進みました。無駄話はさておき、記録しておいて、後期に勉強します。
使用方法:
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
public class ScreenUtils {
/**
* scrollview
* @param scrollView
* @return
*/
public static Bitmap getBitmapByView(ScrollView scrollView) {
int h = 0;
Bitmap bitmap = null;
// scrollview
for (int i = 0; i < scrollView.getChildCount(); i++) {
h += scrollView.getChildAt(i).getHeight();
scrollView.getChildAt(i).setBackgroundColor(
Color.parseColor("#ffffff"));
}
// bitmap
bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,
Bitmap.Config.RGB_565);
final Canvas canvas = new Canvas(bitmap);
scrollView.draw(canvas);
return bitmap;
}
/**
* listview
* **/
public static Bitmap getListViewBitmap(ListView listView,String picpath) {
int h = 0;
Bitmap bitmap;
// listView
for (int i = 0; i < listView.getChildCount(); i++) {
h += listView.getChildAt(i).getHeight();
}
// bitmap
bitmap = Bitmap.createBitmap(listView.getWidth(), h,
Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmap);
listView.draw(canvas);
return bitmap;
}
/**
*
* @param image
* @return
*/
public static Bitmap compressImage(Bitmap image) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// , 100 , baos
image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
int options = 100;
// 250K,
while (baos.toByteArray().length / 1024 > 1024 && options >10) {
// baos
baos.reset();
// options%, baos
image.compress(Bitmap.CompressFormat.JPEG, options, baos);
// 10
options -= 10;
}
// baos ByteArrayInputStream
ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());
// ByteArrayInputStream
Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);
return bitmap;
}
/**
* sdcard
* @param b
* @return
*/
public static String savePic(Context context, Bitmap b) {
File outfile = new File("/sdcard/image");
// ,
if (!outfile.isDirectory()) {
try {
outfile.mkdir();
} catch (Exception e) {
e.printStackTrace();
}
}
String fname = outfile + "/" + System.currentTimeMillis() + ".jpg";
FileOutputStream fos = null;
try {
fos = new FileOutputStream(fname);
if (null != fos) {
b.compress(Bitmap.CompressFormat.JPEG, 90, fos);
fos.flush();
fos.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//
try {
MediaStore.Images.Media.insertImage(context.getContentResolver(),
outfile.getAbsolutePath(), fname, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fname)));
return fname;
}
}
以上は百度の工具類です。使用方法:
ScreenUtils
.savePic(XXXActivity.this,ScreenUtils.compressImage(ScreenUtils
.getBitmapByView(XXXScrollView)));
はい、切り取りに成功しました。以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。