Launcher2中横屏竖屏dimens参数意义分析详解
来源:互联网 发布:免费的空间和域名 编辑:程序博客网 时间:2024/06/10 22:54
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Launcher2中横屏竖屏dimens参数意义分析详解
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Android系统平台:4.0.4
实验机器:1024*768 px 的8寸平板
研究代码路径:packages\apps\Launcher2\res\values-sw600dp-port
Ps:
1.只拿竖屏研究,不知道为什么比较喜欢竖屏,横屏同理。
2.这里的sw600dp是对应我们这机子的。
3.如果你改了参数没影响,可以看看是不是平台下有别的device覆盖掉源代码中的参数。
源代码:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- AppsCustomize -->
<dimen name="apps_customize_cell_width">96dp</dimen>
<dimen name="apps_customize_cell_height">96dp</dimen>
<!-- Workspace -->
<!-- the area at the edge of the screen that makes the workspace go left
or right while you're dragging. -->
<dimen name="scroll_zone">20dp</dimen>
<dimen name="workspace_left_padding">6dip</dimen>
<dimen name="workspace_right_padding">6dip</dimen>
<dimen name="workspace_top_padding">18dip</dimen>
<dimen name="workspace_bottom_padding">0dip</dimen>
<dimen name="workspace_width_gap">32dp</dimen>
<dimen name="workspace_height_gap">72dp</dimen>
<dimen name="workspace_page_spacing">16dp</dimen>
<!--Apps_customize -->
<dimen name="apps_customize_pageLayoutWidthGap">24dp</dimen>
<dimen name="apps_customize_pageLayoutHeightGap">52dp</dimen>
<dimen name="apps_customize_pageLayoutPaddingTop">48dp</dimen>
<dimen name="apps_customize_pageLayoutPaddingBottom">56dp</dimen>
<dimen name="apps_customize_pageLayoutPaddingLeft">53dp</dimen>
<dimen name="apps_customize_pageLayoutPaddingRight">53dp</dimen>
<integer name="apps_customize_widget_cell_count_x">2</integer>
<integer name="apps_customize_widget_cell_count_y">3</integer>
<integer name="apps_customize_cling_focused_x">2</integer>
<integer name="apps_customize_cling_focused_y">2</integer>
<!-- Cling -->
<!-- The offset for the text in the cling -->
<dimen name="cling_text_block_offset_x">80dp</dimen>
<dimen name="cling_text_block_offset_y">160dp</dimen>
</resources>
这里分为两部分:
A.Workspace:这个代表桌面,即按HOME键回到的那个位置
B.Apps_customize:这个代表应用程序列表
A.Workspace:
workspace:
workspaceDetail:
workspace:
workspaceDetail:
注意点:
1.width gap与 height gap在app cell 前后都有。例:如果桌面最多显示5*5个app图标那么总的width gap 就有6个。
2.如果你虚拟屏幕设置和实际屏幕相差太大(在桌面中),那么会出现以下情况(红框为bug)
bug1:
这个可以调整:workspace_left_padding、workspace_right_padding、workspace_width_gap、workspace_page_spacing。
公式:Virtual screen width=left padding+right padding+width gap*(cell number+1)+cell width*cell number+unknown width
3.我将各个padding都设为0dp,然后移一个widget到桌面,发现这个虚拟屏幕有个原始的padding存在,左右一样12dip,上边0dip,下边18dip。这个就是我前面所说的unknown width之一(我估计着这是在源码中写死的了)
遗留问题:
1.这个虽然注释写得很清楚,但是我把值都设为0dp、100dp都没有看出有什么不同之处。还不是很理解这个滚动区域具体指什么?
questionPic:
questionPic:
B.Apps_customize
解析可以参考上面的图,意思都差不多。
多增加的:
apps_customize_widget_cell_count_x:横向显示的widget个数
apps_customize_widget_cell_count_y:竖向显示的widget个数
注意点:
1.虚拟屏幕不能比实际屏幕小,否则会出现这种情况(红色框为bug)
bug2:
分析原因:大家都知道向左拖动的时候会有右边那个虚拟屏幕的图标阴影变化。这是因为那个阴影是根据你当前虚拟屏幕和实际屏幕相差的宽度设定的,具体实现可以参考源码,占时没有研究那么多。
iconListView:
iconListView:
2.如果虚拟屏幕设定过大,app icon会被挤到下一行,然后虚拟屏幕会重新自适应变小。
遗留问题:
1.应用程序列表中的unknown width(公式有提到)我这边固定是38dp,但是具体不知道是为什么?
2.apps_customize_cling_focused_x、apps_customize_cling_focused_y这两个不知道什么意思?
3.cling_text_block_offset_x、cling_text_block_offset_y这两个猜想是点击屏幕,然后在点击的正中间加宽,加高,再算出具体是点击那个icon。
扩展(查找资料的时候看到些问题还有好的帖子和一些小的问题解析):
1.图标文字显示一半:
http://www.apkbus.com/android-69418-1-1.html
bug3:
这个是因为app cell设置小了
2.把大小不一的图标设置成一样大、设置文字宽度:
http://www.eoeandroid.com/thread-198629-1-1.html
http://www.eoeandroid.com/thread-198629-1-1.html
该问题已解决,为了看到我这篇也有同样的问题的人提供的链接
图标大小:values--dimens.xml-->app_icon_size
体占位的长宽:values--styles.xml
体占位的长宽:values--styles.xml
3.dp和px转换问题:
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=72310&highlight=
px = (density/160)dp
density一般为3个常用固定值240/160/120
分别对应WVGA/HVGA/QVGA
density一般为3个常用固定值240/160/120
分别对应WVGA/HVGA/QVGA
4.设置应用程序列表中显示N*N的问题:
路径:packages\apps\Launcher2\res\values\workspace.xml
launcher:cellCountX="6"
launcher:cellCountY="4"(这是设置显示的多少乘多少)
5.android launcher icon size:
http://blog.csdn.net/sdsunqian/article/details/7891976
这个是我入门的帖子,没事可以点开看看。
6.Bitmap和Drawable区别:
http://dyh7077063.iteye.com/blog/970672
这个是看Utilities类引发的问题。
7.通过Drawable的名字获得资源:
http://blog.sina.com.cn/s/blog_7acf43c50100v4vj.html
这个是看Utilities类引发的问题。
8.修改应用列表图标背景:
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=187316&extra=page%3D1&page=1
---------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------
0 0
- Launcher2中横屏竖屏dimens参数意义分析详解
- Launcher2中横屏竖屏dimens参数意义分析详解
- dimens.xml详解
- android Launcher2分析
- android Launcher2 分析
- android Launcher2分析
- Android Launcher2源码分析
- Android Launcher2启动分析
- dimens
- TOP 命令详解,各参数代表意义
- TOP命令各个参数代表意义详解
- Launcher2 相关分析 android2.3
- Android Launcher2 源码分析 续
- launcher2
- launcher2
- Launcher2分析(二)--res分析
- linux top显示的各个符号参数意义详解
- linux top显示的各个符号参数意义详解
- HashMap,HashTable,LinkedMap,TreeMap
- Cocoa2d-x 音乐与音效
- activeMQ安装使用
- Java的的三元运算符
- 显示隐藏文件或不显示隐藏文件 - iOS开发
- Launcher2中横屏竖屏dimens参数意义分析详解
- solrj操作core
- 男人八题总结
- JSB内存管理
- mysql定时任务与存储过程实例
- java的三元运算符
- Kindeditor编辑器 jsp上传错误解决方法 与struts2冲突整合
- poj-2728-Desert King-01分数规划+最小生成树
- NSPredicate用法总结