700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android实现自定义曲线截屏 Android实现截屏和截长图功能的各种方法

Android实现自定义曲线截屏 Android实现截屏和截长图功能的各种方法

时间:2020-05-07 00:04:06

相关推荐

Android实现自定义曲线截屏 Android实现截屏和截长图功能的各种方法

/**

* 截屏

*

* @param activity

* @return

*/

public static Bitmap activityShot(Activity activity) {

/*获取windows中最顶层的view*/

View view = activity.getWindow().getDecorView();

//允许当前窗口保存缓存信息

view.setDrawingCacheEnabled(true);

view.buildDrawingCache();

//获取状态栏高度

Rect rect = new Rect();

view.getWindowVisibleDisplayFrame(rect);

int statusBarHeight = rect.top;

WindowManager windowManager = activity.getWindowManager();

//获取屏幕宽和高

DisplayMetrics outMetrics = new DisplayMetrics();

windowManager.getDefaultDisplay().getMetrics(outMetrics);

int width = outMetrics.widthPixels;

int height = outMetrics.heightPixels;

//去掉状态栏

Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache(), 0, statusBarHeight, width, height - statusBarHeight);

//销毁缓存信息

view.destroyDrawingCache();

view.setDrawingCacheEnabled(false);

return bitmap;

}

2 截取scrollview

/**

* 截取scrollview的屏幕

* @param scrollView

* @return

*/

public static Bitmap getBitmapByView(ScrollView scrollView) {

int h = 0;

Bitmap bitmap = null;

// 获取listView实际高度

for (int i = 0; i < scrollView.getChildCount(); i++) {

h += scrollView.getChildAt(i).getHeight();

scrollView.getChildAt(i).setBackgroundResource(R.drawable.white_drawable);

}

// 创建对应大小的bitmap

bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,

Bitmap.Config.ARGB_8888);

final Canvas canvas = new Canvas(bitmap);

scrollView.draw(canvas);

// 测试输出

FileOutputStream out = null;

try {

out = new FileOutputStream("/sdcard/screen_test.png");

} catch (FileNotFoundException e) {

e.printStackTrace();

}

try {

if (null != out) {

press(pressFormat.PNG, 100, out);

out.flush();

out.close();

}

} catch (IOException e) {

// TODO: handle exception

}

return bitmap;

}

3 截取ListView的屏幕方法

/**

* 截图listview

* **/

public static Bitmap getbBitmap(ListView listView) {

int h = 0;

Bitmap bitmap = null;

// 获取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);

// 测试输出

FileOutputStream out = null;

try {

out = new FileOutputStream("/sdcard/screen_test.png");

} catch (FileNotFoundException e) {

e.printStackTrace();

}

try {

if (null != out) {

press(pressFormat.PNG, 100, out);

out.flush();

out.close();

}

} catch (IOException e) {

// TODO: handle exception

}

return bitmap;

}

4 截取线性布局或相对布局屏幕的方法

/**

* 截取RelativeLayout

**/

public static Bitmap getRelativeLayoutBitmap(RelativeLayout relativeLayout) {

int h = 0;

Bitmap bitmap;

for (int i = 0; i < relativeLayout.getChildCount(); i++) {

h += relativeLayout.getChildAt(i).getHeight();

}

// 创建对应大小的bitmap

bitmap = Bitmap.createBitmap(relativeLayout.getWidth(), h,

Bitmap.Config.ARGB_8888);

final Canvas canvas = new Canvas(bitmap);

relativeLayout.draw(canvas);

return bitmap;

}

/**

* 截取LinearLayout

**/

public static Bitmap getLinearLayoutBitmap(LinearLayout linearLayout) {

int h = 0;

Bitmap bitmap;

for (int i = 0; i < linearLayout.getChildCount(); i++) {

h += linearLayout.getChildAt(i).getHeight();

}

// 创建对应大小的bitmap

bitmap = Bitmap.createBitmap(linearLayout.getWidth(), h,

Bitmap.Config.ARGB_8888);

final Canvas canvas = new Canvas(bitmap);

linearLayout.draw(canvas);

return bitmap;

}

5 截取除了导航栏之外的整个屏幕

/**

* 截取除了导航栏之外的整个屏幕

*/

public static Bitmap screenShotWholeScreen(Activity activity) {

View dView = activity.getWindow().getDecorView();

dView.setDrawingCacheEnabled(true);

dView.buildDrawingCache();

Bitmap bitmap = Bitmap.createBitmap(dView.getDrawingCache());

return bitmap;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。