基于dialog封裝防截屏的實(shí)現(xiàn)

除了可以封裝一個非dialog實(shí)現(xiàn)外也可以封裝一個不和觸摸也看不見的控件,調(diào)用顯示方法實(shí)現(xiàn)一個activity多個webview,fragmet中不同的防截屏設(shè)置。



import android.app.Dialog;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.TextView;


public class PageScreenshot {

    private Context mContext;
    private Dialog mScreenshotDialog;

    public PageScreenshot(Context context) {
        this.mContext = context;
    }

    /**
     * 彈出為了防截屏創(chuàng)建的對話框
     */
    public void disableCapture() {
        if (mScreenshotDialog != null && mScreenshotDialog.isShowing()) {
            return;
        }
        //builder.setMessage("");

        mScreenshotDialog = new Dialog(mContext,0);
        mScreenshotDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

        Window window = mScreenshotDialog.getWindow();
        WindowManager.LayoutParams params = window.getAttributes();
        params.width=0;
        params.height=0;

        //dialog位置
        window.setGravity(Gravity.RIGHT | Gravity.BOTTOM);
        //透明度
//        params.alpha = 1.0f;
        mScreenshotDialog.getWindow().setBackgroundDrawable(new ColorDrawable());

        window.setAttributes(params);
        mScreenshotDialog.getWindow().setDimAmount(0);//設(shè)置昏暗度為0
        mScreenshotDialog.getWindow().setWindowAnimations(0);
        mScreenshotDialog.getWindow().setTitle("");
        WindowManager.LayoutParams attributes = mScreenshotDialog.getWindow().getAttributes();
        attributes.alpha=0.01f;
        mScreenshotDialog.getWindow().setAttributes(attributes);

        mScreenshotDialog.setCancelable(false);
        try{

        mScreenshotDialog. requestWindowFeature(Window.FEATURE_NO_TITLE);
        }catch (Exception e){


        }
        mScreenshotDialog.setContentView(new TextView(mContext),new FrameLayout.LayoutParams(1,1,Gravity.TOP));

        //設(shè)置其不獲取焦點(diǎn)
        mScreenshotDialog.show();
        mScreenshotDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
        onShow(mScreenshotDialog);
    }

    public void enableCapture() {
                if (mScreenshotDialog != null && mScreenshotDialog.isShowing()) {
                    mScreenshotDialog.dismiss();
                    onDismiss(mScreenshotDialog);
                    mScreenshotDialog = null;
                }
    }



    public static void onDismiss(Dialog dialog) {
  //添加禁止截屏代碼

    }

    public static void onShow(Dialog dialog) {
    
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,324評論 25 708
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,384評論 0 17
  • “愛一個人,對一個人好真的就是自己一個人的事兒,得拿出過日子一樣的態(tài)度。只要還想繼續(xù),就硬著頭皮走下去。世...
    Cathy1001閱讀 326評論 0 0
  • 感賞自己:領(lǐng)悟到群內(nèi)讀書時的內(nèi)心安靜與平和,堅(jiān)持讀書成長自己。 感賞自己通過聆聽錦明老師的課程,意識自己打斷階段未...
    愛君2005閱讀 171評論 0 2
  • 你究竟每天真的沉淀了多少留給自己,內(nèi)心深處的不安總是在生理支撐不住靈魂的那一刻崩潰。
    能掐會算閱讀 346評論 0 0

友情鏈接更多精彩內(nèi)容