- 浏览: 151928 次
- 来自: 深圳
最新评论
-
ritterliu:
您好,这个问题麻烦您看下http://topic.csdn.n ...
Android 2.2的锁屏界面修改 -
lnb333666:
不知道飞扬兄可否有空,可否加QQ339579300联系,想向您 ...
Android 2.2的锁屏界面修改 -
飞扬云:
<div class="quote_title ...
Android 2.2的锁屏界面修改 -
black_smart:
<div class="quote_title ...
Android 2.2的锁屏界面修改 -
飞扬云:
<div class="quote_title ...
Android 2.2的锁屏界面修改
Android 2.2的锁屏界面如图1所示,左右两侧是2个滑动条,正常状态下左边的是解锁,右边的是声音的开关,来电话时,左边是接听电话的解锁,右边是不接听来电的解锁。
text:当拖动左边的滑动条时,会出现“Unlock”文本,就是这个text。如图5所示。
图5
target: 当触摸到这个滑动条时,左、右边会各有一个点,就是目标点target,他起到一个临界指示作用,每次拖动滑动条达到这个临界点时就会触发解锁事件,解锁结束后就可以使用主界面了。如图6所示。要注意的是:这个目标点只是起到临界指示作用,没有别的含义。真正的临界点时看不见的,为了起到一个视觉的认识,在这里就使用这样一个目标点来代表临界点,下面会在代码中解释真正的临界点在哪里。
图6
在这个Slider内部类中有一个布局方法:void layout(int l, int t, int r, int b, int alignment)
核心代码是:
if (alignment == ALIGN_LEFT || alignment == ALIGN_RIGHT) {
// horizontal
Log.i(TAG,"Is this horizontal ?");
final int targetTop = (parentHeight - targetHeight) / 2;
final int targetBottom = targetTop + targetHeight;
final int top = (parentHeight - handleHeight) / 2;
final int bottom = (parentHeight + handleHeight) / 2;
if (alignment == ALIGN_LEFT) {
Log.i(TAG,"Is this leftBar? ");
// modified by zhuluofeng 2011-11-15
// 0 to 0+50,leftTarget to leftTarget+500
tab.layout(0, top, handleWidth, bottom);
text.layout(0 - parentWidth, top, 0, bottom);
text.setGravity(Gravity.RIGHT);
target.layout(leftTarget, targetTop, leftTarget + targetWidth, targetBottom);
Log.i(TAG,"targetTop is: " + targetTop);
Log.i(TAG,"targetBottom is: " + targetBottom);
alignment_value = l;
} else {
Log.i(TAG,"Is this RightBar?");
tab.layout(parentWidth - handleWidth, top, parentWidth, bottom);
text.layout(parentWidth, top, parentWidth + parentWidth, bottom);
target.layout(rightTarget, targetTop, rightTarget + targetWidth, targetBottom);
text.setGravity(Gravity.TOP);
alignment_value = r;
}
} else {
// vertical
Log.i(TAG,"Is this vertical ?");
final int targetLeft = (parentWidth - targetWidth) / 2;
final int targetRight = (parentWidth + targetWidth) / 2;
final int top = (int) (THRESHOLD * parentHeight) + handleHeight / 2 - targetHeight;
final int bottom = (int) ((1.0f - THRESHOLD) * parentHeight) - handleHeight / 2;
if (alignment == ALIGN_TOP) {
Log.i(TAG,"Is this TopBar ?");
tab.layout(left, 0, right, handleHeight);
text.layout(left, 0 - parentHeight, right, 0);
target.layout(targetLeft, top, targetRight, top + targetHeight);
alignment_value = t;
} else {
Log.i(TAG,"Is this BottomBar ?");
// modified by zhuluofeng 2011-11-15
// bottom to bottom+500, parentHeight - handleHeight to parentHeight - handleHeight-50
// the bottom is the right side
tab.layout(left, parentHeight - handleHeight, right, parentHeight);
text.layout(left, parentHeight, right, parentHeight + parentHeight);
target.layout(targetLeft, bottom, targetRight, bottom + targetHeight);
Log.i(TAG,"the vertical bottom is: " + bottom);
Log.i(TAG,"the vertical targetHeight is: " + targetHeight);
alignment_value = b;
}
}
这段代码其实就一个if else控制语句,if (alignment == ALIGN_LEFT || alignment == ALIGN_RIGHT) 表示:
手机处在竖屏时(即滑动条处在水平方向),如果拖动左边的滑动条或者拖动右边的滑动条时的处理方法。
else中的代码表示手机处于横屏时(即滑动条处在竖直方向),如果拖动下面的滑动条或者拖动上面的滑动条的处理方法。
在大的if语句中包含了一个if else语句,if表示的是左边的滑动条,else就是右边的滑动条;在大得else语句中也包含了一个if else语句,if表示的是竖直方向的上面的滑动条,else表示的是竖直方向的下面的滑动条。
理解了这一点就很容易定位到具体的滑动条的代码了。
先修改当手机处在竖直方向时(即滑动条处在水平方向)左边的解锁滑动条的距离,目标点的距离。
a) 将左边的滑动条tab向右边移动下
看上面紫红颜色的代码,将andleWidth加上一个数值即可,比如我们加上50变成:
tab.layout(0, top, handleWidth + 50, bottom);
那这几个参数是什么意思呢?
public void layout (int l, int t, int r, int b)
Assign a size and position to a view and all of its descendants
This is the second phase of the layout mechanism. (The first is measuring). In this phase, each parent calls layout on all of its children to position them. This is typically done using the child measurements that were stored in the measure pass().
Derived classes should not override this method. Derived classes with children should override onLayout. In that method, they should call layout on each of their children.
Parameters
Left position, relative to parent |
Top position, relative to parent |
Right position, relative to parent |
Bottom position, relative to parent
|
评论
http://topic.csdn.net/u/20120730/15/8d3dacf2-7196-4e5e-a325-0e16a87208f6.html
我现在已经不在做UI这一块了,不过可以讨论,交流,谢谢。。。
我现在 需要做一个仿htc的滑动锁屏界面,由于刚接触不久 ,也没有很好的思路,能否指点一二呢?(直接在framework里面修改的话感觉改动挺大的,而且不知道怎样去实现)
:)
一般来说,源码那么大,全面掌握太难,我这里基本上就是在做项目中熟悉基本架构,然后学会使用grep find命令去搜索,这样就很容易定位到某个文件。比如:如果你看到某个图片,先可以在目录下查找,找到后,可以通过这个图片得名子去搜索和这个图片相关的文件。你查看多了,自然就会了解目录结构了。一般来说,图片和各种在资源在framework以及package下面的res里面。好了,这也是我大概学习的过程,仅供参考。你多和你同事沟通,时间长了,肯定有自己的方法。。。如果有好的方法,还请提供一下,互相学习。。。
我现在已经不在做UI这一块了,不过可以讨论,交流,谢谢。。。
我现在 需要做一个仿htc的滑动锁屏界面,由于刚接触不久 ,也没有很好的思路,能否指点一二呢?(直接在framework里面修改的话感觉改动挺大的,而且不知道怎样去实现)
我现在已经不在做UI这一块了,不过可以讨论,交流,谢谢。。。
相关推荐
首先,我们要明白Android 2.2的通讯录系统是由多个组件组成的,包括数据库管理、UI界面、服务以及广播接收器等。主要涉及以下几个关键知识点: 1. **Content Provider**:通讯录数据存储的核心组件,它提供了一个...
Android13 锁屏界面禁止下拉状态栏.patch
9. **UI改进**:在用户界面方面,Android 2.2做了许多细节调整,使操作更加直观,用户体验得到提升。例如,改进了通知中心的设计,增加了动态壁纸等个性化设置。 10. **开发者工具**:Android 2.2源码还包括了...
在“android2.2 adb工具”这个主题下,我们主要关注的是适用于Android 2.2(Froyo)版本的ADB工具及其相关功能。 ### ADB简介 ADB全称为Android Debug Bridge,它是Google提供的一个开发工具套件的一部分,主要用于...
Android 2.2 API,又称为Froyo(冻酸奶),是Android操作系统的一个重要版本,为开发者提供了丰富的功能和改进,旨在提升应用性能和用户体验。本文将深入探讨Android 2.2 API的关键特性、更新以及如何利用这些知识来...
- **自定义修改**:开发者可以根据需求修改系统源码,创建自己的Android ROM或添加特定功能。 - **性能优化**:源码分析有助于找出性能瓶颈并进行优化,提高应用运行效率。 - **学习编程技巧**:Android的源码中充满...
标题提到的"Android 2.2下能用的SwitchButton"是指在Android 2.2(API级别8)这个较旧的版本上,开发者通常无法直接使用原生的Switch控件,因为Switch是在Android 4.0(API级别14)及以上版本引入的。描述中提到的...
《Android 2.2 ApiDemos深度解析》 在Android开发领域,ApiDemos是一个非常重要的参考资料,它是由Google官方提供的一个示例程序,包含了Android SDK中的各种API功能的演示。这个项目,针对的是Android 2.2(API...
Android 2.2 API中文文档合集是一份极其宝贵的资源,尤其对于正在学习或从事Android应用开发的人员来说。这份文档集合包含了Android 2.2(API级别8)及部分2.3(API级别9)的详细中文翻译,旨在帮助开发者理解和使用...
在Android操作系统的发展历程中,Android 2.2(Froyo)是一个重要的里程碑,它带来了许多性能提升和新功能。本文将深入探讨Android 2.2源码的相关知识点,包括其下载、解压、编译以及如何利用这些源码进行学习和开发...
通过分析和研究Android 2.2源码,开发者不仅可以了解Android系统的底层运作,还能发现性能瓶颈,优化应用程序,或是开发出独特的系统修改和扩展。源码学习是Android开发者进阶的必经之路,也是提升自身技能的有效...
《Android 2.2 源码解析与深入理解》 Android 2.2,代号Froyo(冻酸奶),是Google推出的一款重要的移动操作系统版本。它在2010年发布,带来了诸多性能提升和新功能,为开发者提供了更丰富的API和工具。源码的开放...
【Android 2.2 开发环境配置详解】 随着Google在2010年Google I/O大会上发布了Android 2.2(代号Froyo),开发者们迎来了一个性能大幅提升的新版本。Froyo不仅引入了对Flash 10.1的支持,还对系统界面和功能进行了...
针对"android2.2 录音程序完整源码"这个主题,我们将深入探讨Android 2.2(Froyo)版本下的录音API,以及如何实现一个简单的录音应用。这段源码为初学者提供了实践和理解Android录音机制的良好机会。 Android录音...
在Android系统中,排序和文本处理对于用户界面的本地化和国际化是非常关键的。这个"android2.2中文排序data包"显然与Android 2.2版本中的中文字符排序功能有关,它涉及到Android如何处理中文字符的顺序,这对于构建...
在这个压缩包中,包含的是Android 2.2的源代码,这对于开发者来说是一个宝贵的资源,可以深入理解系统的内部工作原理,进行自定义修改,或者对Android应用程序进行更底层的优化。 一、Android 2.2的特性与改进 1. *...
在Android平台上,创建一个仿播放器的锁屏界面可以为用户提供独特的交互体验,尤其是在音乐播放、视频观看等场景下。本项目"LockScreenDemo"旨在教你如何实现这一功能,使用的是Android Studio作为开发工具。 首先...
android2.2sdk1共2个 android2.2sdk1共2个android2.2sdk1共2个
《Android 2.2 API 中文版》是一个针对Android开发者的重要资源,它提供了全面的、中文解释的Android 2.2版本的应用程序接口(API)文档。这份文档对于那些使用这个平台进行移动应用开发的专业人士来说,无疑是一份...
Android 2.2(Froyo)源码学习是Android开发者深入理解系统工作原理和优化应用性能的关键步骤。源码提供了对操作系统内核、库、框架以及用户界面等所有层次的详细视图,使得开发者能够从底层到高层全面了解Android...