上一节对锁屏幕进行大致的介绍。
http://mofan.iteye.com/blog/1586016
这节来分析整个界面的布局。先上图:
分析文件(以竖屏为例):frameworks\base\core\res\res\layout\keyguard_screen_tab_unlock.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tabunlock="http://schemas.android.com/apk/res/com.android.tabunlock" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#70000000" android:gravity="center_horizontal" android:id="@+id/root"> <TextView android:id="@+id/carrier" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_marginTop="10dip" android:layout_marginRight="8dip" android:singleLine="true" android:ellipsize="marquee" android:gravity="right|bottom" android:textAppearance="?android:attr/textAppearanceMedium" /> <!-- "emergency calls only" shown when sim is missing or PUKd --> <TextView android:id="@+id/emergencyCallText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/carrier" android:layout_alignParentRight="true" android:layout_marginTop="0dip" android:layout_marginRight="8dip" android:text="@string/emergency_calls_only" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="@color/white" /> <!-- time and date --> <com.android.internal.widget.DigitalClock android:id="@+id/time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/carrier" android:layout_marginTop="52dip" android:layout_marginLeft="20dip" android:layout_marginBottom="8dip" > <TextView android:id="@+id/timeDisplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="none" android:textSize="72sp" android:textAppearance="?android:attr/textAppearanceMedium" android:shadowColor="#C0000000" android:shadowDx="0" android:shadowDy="0" android:shadowRadius="3.0" android:layout_marginBottom="10dip" /> <TextView android:id="@+id/am_pm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/timeDisplay" android:layout_alignBaseline="@id/timeDisplay" android:singleLine="true" android:ellipsize="none" android:textSize="22sp" android:layout_marginLeft="8dip" android:textAppearance="?android:attr/textAppearanceMedium" android:shadowColor="#C0000000" android:shadowDx="0" android:shadowDy="0" android:shadowRadius="3.0" /> </com.android.internal.widget.DigitalClock> <TextView android:id="@+id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/time" android:layout_marginLeft="24dip" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/status1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/date" android:layout_marginTop="4dip" android:layout_marginLeft="24dip" android:textAppearance="?android:attr/textAppearanceMedium" android:drawablePadding="4dip" /> <TextView android:id="@+id/status2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/status1" android:layout_marginTop="4dip" android:layout_marginLeft="24dip" android:textAppearance="?android:attr/textAppearanceMedium" android:drawablePadding="4dip" /> <TextView android:id="@+id/screenLocked" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/status2" android:layout_marginLeft="24dip" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_marginTop="12dip" android:drawablePadding="4dip" /> <com.android.internal.widget.SlidingTab android:id="@+id/tab_selector" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="80dip" /> <!-- emergency call button shown when sim is PUKd and tab_selector is hidden --> <Button android:id="@+id/emergencyCallButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableLeft="@drawable/ic_emergency" android:layout_centerInParent="true" android:layout_alignParentBottom="true" android:layout_marginBottom="80dip" style="@style/Widget.Button.Transparent" android:drawablePadding="8dip" android:visibility="gone" /> </RelativeLayout>
上面是android2.3源代码。
@+id/carrier:显示运营商信息,没有插入SIM卡时显示“没有SIM卡”,没有信号时会显示“(无服务)”
@+id/emergencyCallText:固定字符串。“只能使用紧急呼叫”,在没有插入SIM卡时显示。
@+id/time:显示时间信息,包括12和24小时制。这里是单独写了一个ViewGroup,后面会专门介绍。
@+id/date:显示日期信息,包括星期。如果需要修改格式,请在对应语言的donottranslate-cldr.xml文件中找到需要的格式
@+id/status1、@+id/status2:分别显示充电、闹钟信息。
@+id/screenLocked:暂未涉及
@+id/tab_selector:滑动解锁,后面单独介绍
@+id/emergencyCallButton:紧急拨号按钮。当没有插入SIM卡时显示。
这里可以对布局进行任意修改,但建议不要修改ID名称,因为上面所显示的都是常用的信息,一般手机都会包括这些。如果确实要删除,请先确定别的类中是否有包含这些控件。比如打电话和接电话界面。
还有一点请注意,这里如果删除或者新增控件,需要全部编译,不能只编译framework层代码。具体什么原因暂时未找到。
相关推荐
在Android平台上,开发一款“一键锁屏”应用是一项常见的任务,它可以帮助用户快速锁定设备,提高操作效率。这里我们探讨的“Android代码-一键锁屏”项目,从其标题和描述来看,它应该是一个用于创建此类功能的源...
### Android待机流程分析——锁屏、解锁模块 在深入探讨Android系统中锁屏与解锁模块的工作原理之前,我们先来了解一下这些概念的基本背景。Android操作系统作为全球最广泛使用的移动设备操作系统之一,其用户界面...
【标题】"Android代码-安卓锁屏和恢复出厂设置功能.rar"主要涵盖了两个核心知识点:Android系统的锁屏机制以及设备的恢复出厂设置功能。在Android系统中,这两部分是用户体验和设备安全管理的重要组成部分。 首先,...
在Android平台上,开发一款应用实现一键锁屏功能是常见的需求,尤其对于那些希望快速锁定设备以保护隐私或节省电量的用户。本压缩包文件“Android代码-一键锁屏功能源码.zip”提供了一个完整的实现这一功能的源码...
《Android 2.2锁屏应用详解》 在Android操作系统中,锁屏界面是用户与设备交互的第一道关卡,它不仅提供了设备的安全保护,也是展现个性化和用户体验的重要环节。针对Android 2.2(Froyo)版本,有一款特别设计的...
android-slide-to-unlock 锁屏效果,这是一个模仿苹果"slide to unlock"动画的demo应用。 代码比较简单,就是用android自带的着色器shader去drawText,根据不同的参数, 设置着色器不同的着色位置。
下面我们将详细探讨这个锁屏效果的实现原理、涉及到的关键技术以及源码分析。 1. **滑动解锁基本原理**: - 用户界面:通常包含一个可滑动的指示条,用户通过手指在屏幕上从左到右或从下到上滑动来解锁。 - ...
2. **自定义锁屏界面**:创建一个新的Activity或Fragment作为锁屏界面,并设计相应的UI布局。可以使用XML布局文件来定义按钮、输入框等元素。 3. **处理用户输入**:监听用户的解锁尝试,例如数字密码、图案解锁或...
Android LockScreenSample Using Service - Disable HomeButton Key Event LockScreenSample use Android Service. So, Ignores HomeButton Key Event. Download Current version: [1.0.2] Gradle: compile '...
在Android平台上,开发一款具有“一键锁屏”功能的应用是一个常见的需求,可以帮助用户快速锁定屏幕,提高设备的安全性和便利性。下面将详细讲解这个主题,包括Android系统架构、权限管理、服务、广播接收器以及权限...
在Android平台上,开发一款具有高级特性的应用,如一键锁屏功能,是许多开发者追求的目标。这个"Android高级应用源码-一键锁屏功能源码.zip"提供了实现这一功能的详细代码,对于学习和理解Android系统的锁屏机制非常...
这个名为"Android代码-android一键锁屏源代码android4.2工作正常.zip"的压缩包文件提供了在Android 4.2版本上运行良好的一键锁屏应用的源代码。下面我们将详细探讨这个应用可能涉及的关键技术点和实现原理。 1. **...
标题中的“ppc关屏软件--一键锁屏”指的是针对PPC(Pocket PC)设备的特定软件,旨在提供快速的屏幕关闭和锁定功能。PPC是个人数字助手(Personal Digital Assistant)的一种,早期的智能手机系统,它运行的是...
在本资源中,我们主要关注的是一个Android应用的源码,该应用实现了自定义锁屏功能,模仿了正点闹钟的设计。这个源码对于学习Android编程,特别是想要深入理解自定义锁屏以及闹钟应用的开发人员来说,是一份宝贵的...
标题中的"android-sdk-4.2.2 android-sdk-4.2.2-platforms"指的是Android SDK的一个特定版本,即Android 4.2.2(API级别17),该版本的SDK平台组件。这个版本是Android操作系统的 Jelly Bean 版本的一部分,发布于...
### Android框架浅析之锁屏(Keyguard)机制原理 #### 一、锁屏界面的组成 锁屏(Keyguard)是Android系统中的一个重要组成部分,它主要用于保护用户的隐私数据不被未授权访问。锁屏功能主要由两个部分组成:解锁...
在Android系统中,锁屏和恢复出厂设置是两个非常关键的功能。锁屏是用户与设备交互的第一道防线,提供安全性和隐私保护;恢复出厂设置则是重置设备到初始状态,清除所有用户数据和个性化设置。这份"Android高级应用...
7. **Android布局设计**:使用XML布局文件来定义锁屏界面的结构,包括各组件的位置和属性。可以使用LinearLayout、RelativeLayout或ConstraintLayout等布局管理器。 8. **动画效果**:为了提升用户体验,自定义锁屏...
在Android平台上,开发一款应用程序来高仿iPhone的锁屏界面是一项技术挑战,涉及到多个关键知识点。这份名为"Android代码-源码高仿IPhone锁屏.zip"的压缩包提供了实现这一功能的源代码,让我们深入探讨一下其中涉及...