package forezp.com.douyalibrary.utils; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Rect; import android.os.Build; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; /** * Created by Administrator on 2016/5/26. */ public class UIUtils { /** * 截图 * * @param activity * @return */ public static Bitmap captureContent(Activity activity) { //View是你需要截图的View View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); int width = activity.getWindowManager().getDefaultDisplay().getWidth(); int height = activity.getWindowManager().getDefaultDisplay().getHeight(); Bitmap b1 = view.getDrawingCache(); //Bitmap b1=loadBitmapFromView(view,true,width,height); // 获取状态栏高度 / Rect frame = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; // 获取屏幕长和高 // 去掉标题栏 Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight); view.destroyDrawingCache(); return b; } public static Bitmap loadBitmapFromView(View v, boolean isParemt,int wid,int hei) { if (v == null) { return null; } Bitmap screenshot; screenshot = Bitmap.createBitmap(wid,hei, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(screenshot); v.draw(c); return screenshot; } /** * 截屏 * * @param activity * @return */ public static Bitmap captureScreen(Activity activity) { activity.getWindow().getDecorView().setDrawingCacheEnabled(true); Bitmap bmp = activity.getWindow().getDecorView().getDrawingCache(); return bmp; } public static void forceImmersiveWindow(Activity context) { WindowManager.LayoutParams params = context.getWindow().getAttributes(); params.systemUiVisibility = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN; context.getWindow().setAttributes(params); } /** * 沉浸式窗体,隐藏status bar和 navigation bar * 4.4以下不隐藏导航栏,因为点击事件会呼唤出导航栏,导致点击事件和预想的不一样 * * @param context */ public static void immersiveWindow(Activity context) { WindowManager.LayoutParams params = context.getWindow().getAttributes(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { params.systemUiVisibility = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN; } else { params.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN; } context.getWindow().setAttributes(params); } public static void popWindow(Context applicationContext, int layoutResId) { WindowManager wm = (WindowManager) applicationContext.getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams para = new WindowManager.LayoutParams(); para.height = ViewGroup.LayoutParams.MATCH_PARENT; para.width = ViewGroup.LayoutParams.MATCH_PARENT; para.format = 1; para.flags = WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; para.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; View mView = LayoutInflater.from(applicationContext).inflate( layoutResId, null); wm.addView(mView, para); } }