温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android怎么实现带页面切换的锁屏功能

发布时间:2021-04-17 09:58:55 来源:亿速云 阅读:224 作者:小新 栏目:移动开发

小编给大家分享一下Android怎么实现带页面切换的锁屏功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一个简单的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" />

以上是“Android怎么实现带页面切换的锁屏功能”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI