小編給大家分享一下Android怎么實現帶頁面切換的鎖屏功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
一個簡單的Android 鎖屏小Demo,可以設置左滑有滑,我簡單的了解一下自定義鎖屏,順便總結了一下思路順便畫個圖幫助理解。

我的效果圖

代碼思路
鎖屏分為兩塊,一塊是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" />
以上是“Android怎么實現帶頁面切換的鎖屏功能”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。