精华内容
下载资源
问答
  • NULL 博文链接:https://chengxibeauty.iteye.com/blog/1489085
  • 自定义锁屏

    2016-11-25 15:35:10
    知识点: * 自定义View、View事件分发机制、接口通信 * 总结:http://blog.csdn.net/Vicent_9920/article/details/53308040
  • android-自定义锁屏界面

    千次阅读 2014-03-05 16:42:21
    自定义锁屏,简单来说就是两方面,一是屏蔽掉系统锁屏,二是弹出自定义的锁屏界面。 一、屏蔽系统锁屏 这部分工作主要由两部分组成,首先是申请权限 其次是在我们自定义的锁屏界面操作系统锁屏,这部分有两种方法。...

    自定义锁屏,简单来说就是两方面,一是屏蔽掉系统锁屏,二是弹出自定义的锁屏界面。

    一、屏蔽系统锁屏

    这部分工作主要由两部分组成,首先是申请权限

    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

    其次是在我们自定义的锁屏界面操作系统锁屏,这部分有两种方法。第一种是使用KeyguardManager来实现

    KeyguardManager mKeyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
    	mKeyguardManager.newKeyguardLock("my_lockscreen").disableKeyguard();
    这种方式不论是否安全锁屏都会禁掉,准确来说是disableKeyguard方法会禁掉锁屏服务,直到调用reenableKeyguard方法才会恢复。此外,这种方法自API13开始不被推荐使用了。

    第二种是使用getWindow().addFlags的方式

    //在keyguard在前显示应用程序窗口
    	getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);  
    	//彻底隐藏非安全验证的keyguard
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
    这样,我们就实现了屏蔽系统锁屏的目的。接下来如何弹出自定义锁屏界面,众所周知,锁屏一般是跟屏幕的点亮和熄灭有关,所以我们可以监听系统的屏幕点亮、熄灭广播,来达到弹出我么自定义界面的目的。屏幕的点亮、熄灭广播必须动态注册,而我们由必须时刻监听这两个广播,所以最好的方式就是在常驻的service中监听这两个广播,关于如何创建常驻service,参考这篇文章 android-常驻service。广播创建如下:

    final IntentFilter filter = new IntentFilter();  
            // 屏幕灭屏广播  
            filter.addAction(Intent.ACTION_SCREEN_OFF);  
            // 屏幕亮屏广播  
            filter.addAction(Intent.ACTION_SCREEN_ON);   
          
            BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() {  
                @Override  
                public void onReceive(final Context context, final Intent intent) {
                    String action = intent.getAction(); 
                    if (Intent.ACTION_SCREEN_ON.equals(action)) {  
             		Intent i = new Intent(context,ScreenActivity.class);
             		i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             		i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
             		context.startActivity(i);
                    }
                    if (Intent.ACTION_SCREEN_OFF.equals(action)) {  
                        Intent i = new Intent(context,ScreenActivity.class);
             	    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             	    i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
             	    context.startActivity(i);
                    }	
                }
            };  
            registerReceiver(mBatInfoReceiver, filter);

    这里还有一个问题,就是弹出多个activity的情况,目前我是自己定义了一个activity stack进行判断。此外还可以在activity配置那里修改启动方式为

    android:launchMode="singleInstance"
    这样也可以解决关闭锁屏后,呼出锁屏所在应用程序的问题。

    展开全文
  • Android自定义锁屏页Demo
  • btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 关闭锁屏界面 removeViewFromWindow(); } }); wm.addView(lockScreenView, mLayoutParams); }; /** 关闭锁屏...

    /*

    [email protected] Dawin,2015-2-4

    *

    */

    package com.example.superlockscreen;

    import com.example.superlockscreen.R;

    import android.app.Service;

    import android.content.Context;

    import android.content.Intent;

    import android.graphics.PixelFormat;

    import android.os.IBinder;

    import android.view.LayoutInflater;

    import android.view.View;

    import android.view.ViewGroup;

    import android.view.WindowManager;

    import android.widget.Button;

    /**

    * 实现界面锁定。禁止手机的任何按键操作

    * @author Dawin

    *

    *Don't go for activity,

    *because android will not show lock screen behind your activity for security reason,

    *so use service instead of Activity.

    */

    public class AppService extends Service

    {

    private WindowManager.LayoutParams mLayoutParams;

    private WindowManager wm;

    private View lockScreenView;

    private Button btn;

    @Override

    public void onCreate()

    {

    super.onCreate();

    wm = (WindowManager) getSystemService(WINDOW_SERVICE);

    // 设置lockScreenView视图的属性

    // 属性TYPE_SYSTEM_ERROR:出现在任何界面的前面

    mLayoutParams = new WindowManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,

    0, 0, WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED

    | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON

    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, PixelFormat.RGBA_8888);

    LayoutInflater mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    //绑定自定义界面

    lockScreenView = mInflater.inflate(R.layout.lock_screen, null);

    //获取界面的按钮

    btn = (Button) lockScreenView.findViewById(R.id.btn);

    btn.setOnClickListener(new View.OnClickListener()

    {

    @Override

    public void onClick(View v)

    {

    // 关闭锁屏界面

    removeViewFromWindow();

    }

    });

    wm.addView(lockScreenView, mLayoutParams);

    };

    /** 关闭锁屏界面 */

    public void removeViewFromWindow()

    {

    if (lockScreenView != null)

    {

    wm.removeView(lockScreenView);

    }

    }

    @Override

    public IBinder onBind(Intent intent)

    {

    return null;

    }

    }

    4最后在Activity中绑定服务

    展开全文
  • Mac锁屏消息是苹果电脑一项非常重要的功能,您可以设置自定义消息,使其显示在Mac的锁定屏幕上,如果您放错Mac或丢失Mac,这将非常有用。它可以让人们一打开Mac就知道Mac属于谁,而且毫无疑问拥有所有权。您将需要一...

    Mac锁屏消息是苹果电脑一项非常重要的功能,您可以设置自定义消息,使其显示在Mac的锁定屏幕上,如果您放错Mac或丢失Mac,这将非常有用。它可以让人们一打开Mac就知道Mac属于谁,而且毫无疑问拥有所有权。在这里插入图片描述您将需要一个管理员帐户才能在Mac上创建锁定屏幕消息,一下就是具体教程。
    ▪单击菜单栏中的“”图标。选择系统偏好设置。在这里插入图片描述▪选择安全和隐私。在这里插入图片描述▪选择“通用”标签。单击窗口底部的锁定图标在这里插入图片描述▪输入您的管理员名称和密码,解锁。在这里插入图片描述▪选择“设置锁定消息…”在这里插入图片描述▪输入您想要的消息,点击好在这里插入图片描述▪点击左下角锁定图标进行更改即可在这里插入图片描述▪设置成功,你的消息将出现在锁屏界面的下方,如图在这里插入图片描述

    展开全文
  • Android笔记:自定义锁屏

    千次阅读 2016-12-30 17:28:24
    Android 自定义锁屏

    最近用到了自定义锁屏这个功能,写完之后整理了一下代码,把代码贴出来,方便大家学习使用。
    先上效果图:
    这里写图片描述
    混乱的锁屏控制
    Android自4.0版本, 也就是API level 14开始, 加入了锁屏控制的功能, 相关的类是RemoteControlClient, 这个类在API level 21中被标记为deprecated, 被新的类MediaSession所替代. 我们的音乐App中最开始使用的是原生锁屏控制API, 说实话这个API不好用, 遇到了一些小坑, 最要命的是不同品牌的手机, 锁屏界面长的还不一样, 就连我自己都没见过原生4.0的锁屏控制界面是什么样的. 国内的手机厂商都自以为自己的审美很强, 设计了千奇百怪的锁屏控制界面, MIUI更奇怪, MIUI 6是在原生4.4.4的基础上改的, 竟然有一段时间都没有锁屏控制界面, 后来更新才有. 而原生Android在5.0时, 将锁屏和通知栏控制合并, 整个逻辑非常混乱. 我们还是决定像QQ音乐/酷狗音乐那样, 自己做一个锁屏控制页面

    在这里简单的说一下原理,
    实现锁屏的思路及方法:
    1.首先想到的因该是做一个锁屏,
    也就是使用Android的API, 做一个锁屏应用, 和输入法等应用一样, 但这个方法成本很高. 国内的那些锁屏应用, 首先要做的就是引导用户设置锁屏应用, 步骤相当繁杂, 只是为了一个播放控制就用一个锁屏应用, 没有哪个用户会这么有耐心。这种方法可以说是打炮打蚊子,费时费力。
    2.悬浮窗:
    得益于我国程序员的脑洞, 我们有了第二种思路: 悬浮窗.
    悬浮窗的一个比较严谨的名字叫系统警告窗口, 国内外的一些流氓厂商, 经常用悬浮窗弹一些广告, 这个悬浮窗是浮在正常的app的上面的, 所以如果它不消失, 很可能你连正常使用手机都有问题.
    这是一个比较打扰用户的东西, 而且也有一定的安全风险. MIUI的权限管理默认是将悬浮窗关闭的, 而有道词典的复制查词功能, 就是用悬浮窗做的, 如果你没给有道词典打开这个权限, 复制查词这个功能就废了.
    3.普通的Activity伪造锁屏
    文章开头的GIF图片展示的效果, 就是用一个普通Activity做的.
    国内的app们, 最终都选择了这条道路, 不知道他们是谁抄的谁, 第一个想到使用普通Activity伪造一个锁屏的开发者, 我只能说非常有创造力.
    首先来说一下大概的步骤:
    1。监听锁屏事件

    准确来说我们监听的是屏幕熄灭事件, 关屏事件的Intent是Intent.ACTION_SCREEN_OFF, 不需要任何权限就可以监听, 但是必须使用代码注册, 也就是说我们必须有一个Service在后台监听才行, 对音乐类app来说, 这不是问题, 音乐app本身就是使用Service来控制MediaPlayer的. 只需要在Service中注册监听Intent.ACTION_SCREEN_OFF就行. 监听到这个事件, 我们就启动一个Activity, 这就是我们的锁屏Activity.

    这是主Activity,在主activity里启动一个服务,服务里监听屏幕的熄灭点亮事件。
    

    public class Test extends Activity {
    private Button btn_test;
    private Bitmap bitmap;
    private RegisterService service;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.suo);
    btn_test = (Button) findViewById(R.id.button);
    service = new RegisterService();
    bitmap = BitmapFactory.decodeResource(this.getResources(),R.mipmap.tableback);
    btn_test.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    Intent intent = new Intent(Test.this,RegisterService.class);
    startService(intent);
    }

        });
    }
    

    }

    在service里注册广播接收器:
    service代码:
    

    package com.dfwy.cxy.slidelock;

    import android.app.Service;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.IBinder;

    public class RegisterService extends Service {
    private ScreenReceiver receiver;
    @Override
    public IBinder onBind(Intent intent) {
    return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        //1.创建广播接受者对象
        receiver = new ScreenReceiver();
        //2.创建intentfilter对象
        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        filter.addAction(Intent.ACTION_SCREEN_ON);
        //3.注册广播接受者
        registerReceiver(receiver,filter);
    }
    
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    
    }
    
    @Override
    public void onDestroy() {
        super.onDestroy();
        unregisterReceiver(receiver);
    }
    

    }

    广播接收器的代码:
    在onReceive里处理结果,如果屏幕关闭的话调到我们的伪锁屏界面的Activity

    package com.dfwy.cxy.slidelock;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;

    /**
    * Created by cxy on 2016/12/22.
    */

    public class ScreenReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    if (Intent.ACTION_SCREEN_OFF.equals(action)){
    Log.i(“tag”,”=====receiver==屏幕关闭==”);
    Intent lockscreen = new Intent(context,LockScreenActivity.class);
    lockscreen.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(lockscreen);
    }else if (Intent.ACTION_SCREEN_ON.equals(action)){
    Log.i(“tag”,”=====receiver==屏幕打开==”);
    }
    }

    }

    
    

    锁屏界面图片:
    这里写图片描述
    解锁屏幕与显示在锁屏之上
    在显示我们的假锁屏的时候, 我们应当帮用户解锁, 这样我们才能冒充锁屏, 而不会出现用户”解锁”两次的情况, 但我们只能要求系统解锁没有密码的锁屏, 有密码的情况下, 我们是不能解锁屏幕的, 这时我们应该覆盖在锁屏界面上, 幸好, 在API level 5中就引入了两个Flag,FLAG_DISMISS_KEYGUARD和FLAG_SHOW_WHEN_LOCKED
    在锁屏Activity的onCreate方法中给Activity加上两个Flag

    this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

    一定要两个一起用, 否则效果不大好, 当时测试了好久, 后来看了一下QQ音乐的实现, 才发现两个一起用效果才好, 否则会有一些奇怪的问题.
    隐藏踪迹与独立的Task
    作为一个锁屏界面, 应当是独立的, 也就是说, 我们这个Activity应当独立于我们的App存在, 至少看起来是这样. 从Android的角度来看, 我们app的主界面里的所有Activity, 应当在一个Task里, 而锁屏Activity, 应当在一个独立的Task里, 因此我们需要给锁屏Activity一个独立的Task, 而且无论何时, 都只有一个锁屏Activity实例存在.
    另外, Android有查看近期任务的功能, 我们不希望锁屏界面这个独立的Task显示在里面, 所以锁屏Activity不能显示在近期任务中.
    说了这么多, 要做很简单, 只需要在Manifest里面声明Activity时加入几个属性即可

    <activity android:excludeFromRecents="true"
        android:exported="false"
        android:launchMode="singleInstance"
        android:name=".view.lockscreen.LockScreenActivity"
        android:screenOrientation="portrait"
        android:taskAffinity="com.package.name.lockscreen"
        android:theme="@style/LockScreenTheme">
    </activity>

    上面的属性中android:excludeFromRecents=”true”让锁屏Activity不显示在近期任务中,android:launchMode=”singleInstance”和android:taskAffinity=”com.package.name.lockscreen”保证锁屏Activity有一个单独的Task, 且这个Task里永远只有它一个实例.
    处理黑色闪屏
    我们的锁屏Activity在滑动”解锁”之后, 理论上是直接进入下面的界面, 但有时如果下面不是launcher, 而是一个app, 有可能会闪一下黑屏, 这个其实是底下activity的入场动画导致的, 某些Android版本会对顶部activity透明时处理有些奇怪, 我们不能保证其他的应用不闪黑屏, 但是对自己的的应用还是可以的, 只需要在我们的主体activity的style中加上

    <item name="android:windowAnimationStyle">@null</item>

    就不会有这种情况发生了, 但是这样的话入场动画也没了, 总之如何取舍看大家了
    屏蔽物理按键

    
        //监听系统的物理按键
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                Log.i("tag", "===BACK====");
            } else if (keyCode == KeyEvent.KEYCODE_HOME) {
                Log.i("tag", "===HOME====");
            } else if (keyCode == KeyEvent.KEYCODE_MENU) {
                Log.i("tag", "===KEYCODE_MENU====");
            } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
                Log.i("tag", "===KEYCODE_MENU====");
                finish();
            }
            return true;
        }

    最后我们在伪锁屏的Activity里对解锁进行监听即可,如果解锁完成之后把这个Activity finish掉就可以。
    自定义View的代码就不再这里展示了,最后放上代码的地址:
    自定义锁屏:
    http://download.csdn.net/detail/xiaoyu940601/9725749

    展开全文
  • Mac锁屏消息是一种非常实用的功能,您可以设置自定义消息,使其显示在Mac的锁定屏幕上,可以放上任何你觉得有用或者有趣的消息,例如如果您放上个人的联系信息,在放错Mac或丢失Mac的时候,会非常有用,它可以让人们...
  • Android 自定义锁屏(带页面切换)

    千次阅读 2017-06-19 22:58:06
    Android 关于锁屏的小Demo,左右切换(放置广告)
  • 首先说流程,锁屏界面一般是在关闭屏幕时启用,打开屏幕时展现在我们面前,所以我们知道了锁屏的时机,恰好屏幕开关会发出相应的广播,所以我们也可以像系统一样捕获到屏幕开关的事件。 广播对应的两个action 引用 ...
  • 自定义手机锁屏界面

    千次阅读 2018-07-05 17:48:44
    手机锁屏之后,再点亮手机,手机锁屏界面变成了悦跑圈的界面,并且实时显示跑步的里程、速度等信息。觉得这个功能还蛮实用的,于是想试着实现一下。搜索了一些资料,具体实现过程如下: 1. 首先,锁屏界面是...
  • 如何自定义锁屏样式

    2021-06-19 07:24:57
    华为手机怎么换自定义锁屏样式?只有这两个,想换个自己拍的照片你选择了第二个,然后去设置锁屏壁纸。用你的照片当锁屏壁纸。那样就不会变换了。怎么自定义锁屏样式,我想应用自己的图片。手机打开主题有个混搭就能...
  • 在平常使用音乐播放器时经常会遇到锁屏会显示歌词功能 例如下图: 主要用到的知识点 1.锁屏的广播监听 废话不多说,先上代码
  • 自定义锁屏的实现

    千次阅读 2017-07-31 09:40:47
    基于用户使用app过程中,手机屏幕关闭后,重新点亮手机屏幕,能够快速看见用户的所需信息的需求,来设计app的自定义锁屏效果。 2、概述 本文档就自定义锁屏的实现进行讲解。 二、自定义锁屏的实现方案 1、方案一 1)...
  • android锁屏界面显示,仿播放器。android锁屏界面显示,仿播放器。使用Android Studio开发。
  • 微软提供给我们可以自定义凭据的功能,我们可以通过微软提供的接口对登录界面做一系列的定制。但最近在开发过程中遇到了一些问题。在 Win10 系统中,我们无法接收到CPUS_UNLOCK_WORKSTATION锁屏的消息,无论在用户...
  • 但是锁屏壁纸的设置却无法直接调用这个类的某些方法。需要用到反射调用。反射调用可以参考以下两篇文章:1.通过java反射调用方法,这个比较简单的说明了反射调用的方法。2.安卓反射机制的实现与原理,这一篇说了原理...
  • Android 自定义锁屏的实现

    千次阅读 2014-07-08 11:34:00
    -一旦抬起,就结束绘制,刷新界面; setPath()是将已经触摸过的圆点,依次绘制路线连接起来; protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); int width = (int) ...
  • Mac锁屏消息是一种非常实用的功能,您可以设置自定义消息,使其显示在Mac的锁定屏幕上,可以放上任何你觉得有用或者有趣的消息,例如如果您放上个人的联系信息,在放错Mac或丢失Mac的时候,会非常有用,它可以让人们...
  • 目前MIUI的主题很多,但能做到全局全细节美化的没有几个,今天来给大家分享一款非常精致的主题,这也是粉丝常常提到的Future系列的最新主题,确实做到了全局全细节美化,以及多项自定义功能,并且相比以往主题,这次...
  • Android自定义锁屏

    千次阅读 2011-12-20 18:46:44
    3. 实现你要做的事情,启动一个解锁界面或者直接自动解锁 BroadcastReceiver unLockScreenReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { ...
  • 自定义锁屏实现原理: 1.监听系统SCREEN_ON与SCREEN_OFF广播 2.屏幕变暗,启动自定义锁屏页面,使其置顶 3.屏幕点亮,屏蔽系统锁屏,自定义锁屏页面即会出现 技术点: 1.监听广播只能使用动态,所以需使用后台...
  • Mac锁屏消息是一种非常实用的功能,您可以设置自定义消息,使其显示在Mac的锁定屏幕上,可以放上任何你觉得有用或者有趣的消息,例如如果您放上个人的联系信息,在放错Mac或丢失Mac的时候,会非常有用。它可以让人们...
  • Android自定义锁屏的实现

    千次阅读 2015-03-12 13:40:50
    最近研究了一下锁屏,要实现锁屏大体的实现思路是自定义一个后台service监听手机屏幕开关事件,监听到屏幕关闭的时候替换系统锁屏并调用自定义的锁屏界面,自定义锁屏界面需要屏蔽返回键和home键,以及屏蔽状态栏...
  • Android 锁屏界面自定义

    千次阅读 2018-10-18 11:13:18
    3.已实现 这里加个锁屏界面的状态栏设置 @Override protected void beforeSetContentView(View rootView) { super.beforeSetContentView(rootView); setImageOverStatuBarTextBlack(rootView, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,006
精华内容 3,202
关键字:

如何自定义锁屏界面