亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2018年06月05日 10:40:31   作者:Xia_焱  
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)帶頁(yè)面切換的鎖屏功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一個(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();
  //管理打開的窗口程序
  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)限打開,手機(jī)設(shè)置中找到app,打開鎖屏,不然一運(yùn)行就崩掉。

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

相關(guān)文章

  • Android Activity向右滑動(dòng)返回

    Android Activity向右滑動(dòng)返回

    這篇文章主要介紹了Android Activity向右滑動(dòng)返回,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Android實(shí)現(xiàn)自定義滑動(dòng)刻度尺方法示例

    Android實(shí)現(xiàn)自定義滑動(dòng)刻度尺方法示例

    這篇文章主要給大家介紹了關(guān)于Android實(shí)現(xiàn)自定義滑動(dòng)刻度尺的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 詳解Android studio 動(dòng)態(tài)fragment的用法

    詳解Android studio 動(dòng)態(tài)fragment的用法

    這篇文章主要介紹了Android studio 動(dòng)態(tài)fragment的用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Android使用注解代替枚舉節(jié)省系統(tǒng)內(nèi)存開銷的方法

    Android使用注解代替枚舉節(jié)省系統(tǒng)內(nèi)存開銷的方法

    在本篇文章里小編給大家整理的是關(guān)于Android使用注解代替枚舉節(jié)省系統(tǒng)內(nèi)存開銷的方法和實(shí)例,需要的朋友們參考下。
    2020-01-01
  • Android解決所有雙擊優(yōu)化的問(wèn)題

    Android解決所有雙擊優(yōu)化的問(wèn)題

    這篇文章主要為大家介紹了Android解決所有雙擊優(yōu)化的問(wèn)題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Android中AsyncTask詳細(xì)介紹

    Android中AsyncTask詳細(xì)介紹

    這篇文章主要介紹了Android中AsyncTask詳細(xì)介紹,AsyncTask是一個(gè)很常用的API,尤其異步處理數(shù)據(jù)并將數(shù)據(jù)應(yīng)用到視圖的操作場(chǎng)合,需要的朋友可以參考下
    2015-01-01
  • Android sqlite cursor的遍歷實(shí)例詳解

    Android sqlite cursor的遍歷實(shí)例詳解

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于Android sqlite cursor的遍歷的相關(guān)實(shí)例及知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2021-06-06
  • Android RecyclerView加載不同布局簡(jiǎn)單實(shí)現(xiàn)

    Android RecyclerView加載不同布局簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Android RecyclerView加載不同布局簡(jiǎn)單實(shí)現(xiàn),感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android之自定義實(shí)現(xiàn)BaseAdapter(通用適配器二)

    Android之自定義實(shí)現(xiàn)BaseAdapter(通用適配器二)

    這篇文章主要為大家詳細(xì)介紹了Android之自定義實(shí)現(xiàn)BaseAdapter通用適配器第二篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Kotlin的枚舉與異常示例詳解

    Kotlin的枚舉與異常示例詳解

    這篇文章主要給大家介紹了關(guān)于Kotlin的枚舉與異常的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Kotlin具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評(píng)論