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

首頁(yè) > 系統(tǒng) > Android > 正文

Android實(shí)現(xiàn)帶頁(yè)面切換的鎖屏功能

2019-12-12 00:49:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

這里寫圖片描述

我的效果圖

這里寫圖片描述

代碼思路

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

自定義鎖屏布局

ACTION_DOWN按下:中間的ImageView會(huì)變成另一種形態(tài)
ACTION_MOVE移動(dòng): 移動(dòng)到左/右邊,左/右ImageView形態(tài)也要發(fā)生變化,
ACTION_UP抬起:判斷滑動(dòng)到左/右那邊,或者回到最初位置

*服務(wù)

 @Override  public void onCreate() {    super.onCreate();    mContext = getApplicationContext();    //管理打開(kāi)的窗口程序    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);    //設(shè)置此狀態(tài),首先會(huì)查找是否存在和被啟動(dòng)的Activity具有相同的親和性的任務(wù)棧    zdLockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    /*注冊(cè)廣播*/    IntentFilter mScreenOnFilter = new IntentFilter("android.intent.action.SCREEN_ON");    MyService.this.registerReceiver(mScreenOnReceiver, mScreenOnFilter);    /*注冊(cè)廣播*/    IntentFilter mScreenOffFilter = new IntentFilter("android.intent.action.SCREEN_OFF");    MyService.this.registerReceiver(mScreenOffReceiver, mScreenOffFilter);  }

這個(gè)View 就是之前自定義的View,我只說(shuō)說(shuō)核心的代碼 稍后上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;  }

當(dāng)程序銷毀的時(shí)候.服務(wù)要重新啟動(dòng),不然這個(gè)app的鎖屏,會(huì)隨著app的銷毀而被銷毀

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

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

//屏幕變亮的廣播,我們要隱藏默認(rèn)的鎖屏界面  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")){        //鍵盤鎖的服務(wù)        mKeyguardManager = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);        mKeyguardLock = mKeyguardManager.newKeyguardLock("zdLock 1");        mKeyguardLock.disableKeyguard();        startService(i);      }    }  };   //屏幕變暗/變亮的廣播 , 我們要調(diào)用KeyguardManager類相應(yīng)方法去解除屏幕鎖定  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);      }    }};

權(quán)限問(wèn)題

<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /><!-- 屏蔽HOME鍵需要的權(quán)限 --><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" />

這個(gè)鎖屏Demo涉及到的東西有點(diǎn)多,我寫的這個(gè)博客掐不住重點(diǎn),寫的繁瑣反而浪費(fèi)大家時(shí)間,什么也不說(shuō)了全在代碼中↓

源碼地址:鎖屏

補(bǔ)充一點(diǎn)

用小米手機(jī)當(dāng)測(cè)試機(jī),一定要把這個(gè)Demo鎖屏權(quán)限打開(kāi),手機(jī)設(shè)置中找到app,打開(kāi)鎖屏,不然一運(yùn)行就崩掉。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 勐海县| 霍林郭勒市| 镇沅| 哈尔滨市| 桂阳县| 仁寿县| 武穴市| 英吉沙县| 洛阳市| 静宁县| 论坛| 千阳县| 长乐市| 方正县| 错那县| 肥城市| 社旗县| 武威市| 日土县| 房山区| 秀山| 咸宁市| 喜德县| 含山县| 札达县| 墨玉县| 建瓯市| 新龙县| 土默特左旗| 微博| 扶风县| 邵阳市| 寻乌县| 泽州县| 泸溪县| 鹿泉市| 武义县| 正安县| 应用必备| 涿州市| 昆山市|