国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android實現帶頁面切換的鎖屏功能

2019-10-22 18:10:07
字體:
來源:轉載
供稿:網友

一個簡單的Android 鎖屏小Demo,可以設置左滑有滑,我簡單的了解一下自定義鎖屏,順便總結了一下思路順便畫個圖幫助理解。

Android,頁面切換,鎖屏

我的效果圖

Android,頁面切換,鎖屏

代碼思路 

鎖屏分為兩塊,一塊是UI(自定義布局)另一塊這就是服務了

自定義鎖屏布局 

ACTION_DOWN按下:中間的ImageView會變成另一種形態 
ACTION_MOVE移動: 移動到左/右邊,左/右ImageView形態也要發生變化, 
ACTION_UP抬起:判斷滑動到左/右那邊,或者回到最初位置

*服務

 @Override  public void onCreate() {    super.onCreate();    mContext = getApplicationContext();    //管理打開的窗口程序    mWinMng = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);    i = new Intent(mContext, MyService.class);    i.setAction(MyService.LOCK_ACTION);    zdLockIntent = new Intent(MyService.this , MyService.class);    //設置此狀態,首先會查找是否存在和被啟動的Activity具有相同的親和性的任務棧    zdLockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    /*注冊廣播*/    IntentFilter mScreenOnFilter = new IntentFilter("android.intent.action.SCREEN_ON");    MyService.this.registerReceiver(mScreenOnReceiver, mScreenOnFilter);    /*注冊廣播*/    IntentFilter mScreenOffFilter = new IntentFilter("android.intent.action.SCREEN_OFF");    MyService.this.registerReceiver(mScreenOffReceiver, mScreenOffFilter);  }

這個View 就是之前自定義的View,我只說說核心的代碼 稍后上Demo

@Override  public int onStartCommand(Intent intent, int flags, int startId) {    if(intent!=null){      String action = intent.getAction();      if(TextUtils.equals(action, LOCK_ACTION))        //鎖屏添加view        addView();      else if(TextUtils.equals(action, UNLOCK_ACTION))      {  //解屏移除view        removeView();      }    }    return Service.START_STICKY;  }

當程序銷毀的時候.服務要重新啟動,不然這個app的鎖屏,會隨著app的銷毀而被銷毀

@Override  public void onDestroy(){    super.onDestroy();    MyService.this.unregisterReceiver(mScreenOnReceiver);    MyService.this.unregisterReceiver(mScreenOffReceiver);    //在此重新啟動    startService(new Intent(MyService.this, MyService.class));  }

當屏幕變量或者變暗的時候,要解除屏幕鎖定的方法,如果不解除 那只能一直鎖著了。

//屏幕變亮的廣播,我們要隱藏默認的鎖屏界面  private BroadcastReceiver mScreenOnReceiver = new BroadcastReceiver(){    @Override    public void onReceive(Context context , Intent intent) {      Log.i(TAG, intent.getAction());      if(intent.getAction().equals("android.intent.action.SCREEN_ON")){        //鍵盤鎖的服務        mKeyguardManager = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);        mKeyguardLock = mKeyguardManager.newKeyguardLock("zdLock 1");        mKeyguardLock.disableKeyguard();        startService(i);      }    }  };   //屏幕變暗/變亮的廣播 , 我們要調用KeyguardManager類相應方法去解除屏幕鎖定  private BroadcastReceiver mScreenOffReceiver = new BroadcastReceiver(){    @Override    public void onReceive(Context context , Intent intent) {      String action = intent.getAction() ;      Log.i(TAG, intent.toString());      if(action.equals("android.intent.action.SCREEN_OFF")          || action.equals("android.intent.action.SCREEN_ON") ){        mKeyguardManager = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);        mKeyguardLock = mKeyguardManager.newKeyguardLock("zdLock 1");        mKeyguardLock.disableKeyguard();        startService(i);      }    }};

權限問題

<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /><!-- 屏蔽HOME鍵需要的權限 --><uses-permission android:name="android.permission.VIBRATE" /><uses-permission android:name="android.permission.DISABLE_KEYGUARD" /><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

這個鎖屏Demo涉及到的東西有點多,我寫的這個博客掐不住重點,寫的繁瑣反而浪費大家時間,什么也不說了全在代碼中↓

源碼地址:鎖屏

補充一點 

用小米手機當測試機,一定要把這個Demo鎖屏權限打開,手機設置中找到app,打開鎖屏,不然一運行就崩掉。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平定县| 淮北市| 平潭县| 天祝| 通榆县| 杭州市| 府谷县| 会宁县| 邓州市| 武川县| 龙口市| 岑溪市| 西丰县| 聊城市| 吴川市| 佛冈县| 永善县| 区。| 齐齐哈尔市| 陵水| 榆林市| 寿阳县| 万山特区| 绥阳县| 郯城县| 边坝县| 瑞金市| 宾阳县| 南部县| 邮箱| 台中市| 个旧市| 丹棱县| 伊川县| 磐安县| 乌兰察布市| 江津市| 改则县| 凌海市| 辽宁省| 霍林郭勒市|