KeyguardMessageArea继承自TextView,是各个锁屏界面布局中都包含的一个view。
首先来说SecurityMessageDisplay接口
SecurityMessageDisplay.java文件中定义如下
public interface SecurityMessageDisplay {
public void setMessage(CharSequence msg, boolean important);
public void setMessage(int resId, boolean important);
public void setMessage(int resId, boolean important, Object... formatArgs);
public void setTimeout(int timeout_ms);
public void showBouncer(int animationDuration);
public void hideBouncer(int animationDuration);
}它的唯一实现KeyguardMessageArea.Helper,这是个public static内部类;
public static class Helper implements SecurityMessageDisplay {
KeyguardMessageArea mMessageArea;//唯一一个成员变量,指向当前的KeyguardMessageArea实例
//唯一的构造方法,这里必须传入一个KeyguardMessageArea变量
Helper(View v) {
mMessageArea = (KeyguardMessageArea) v.findViewById(R.id.keyguard_message_area);
if (mMessageArea == null) {
throw new RuntimeException("Can't find keyguard_message_area in " + v.getClass());
}
}
//设置mMessage并调用securityMessageChanged方法去更新信息
public void setMessage(CharSequence msg, boolean important) {
if (!TextUtils.isEmpty(msg) && important) {
mMessageArea.mMessage = msg;
mMessageArea.securityMessageChanged();
}
}
......
//调用hideMessage并置mShowingBouncer为true
public void showBouncer(int duration) {
mMessageArea.hideMessage(duration, false);
mMessageArea.mShowingBouncer = true;
}
//调用showMessage并置mShowingBouncer为false
public void hideBouncer(int duration) {
mMessageArea.showMessage(duration);
mMessageArea.mShowingBouncer = false;
}
//设置mTimeout
public void setTimeout(int timeoutMs) {
mMessageArea.mTimeout = timeoutMs;
}
}
这个KeyguardMessageArea.Helper比较简单,重点关注它的构造方法就可以,下面看哪里会使用这个静态内部类。
待续......

本文深入探讨了Android系统中KeyguardMessageArea和SecurityMessageDisplay接口的实现细节,包括它们如何用于显示安全消息及交互逻辑。
384

被折叠的 条评论
为什么被折叠?



