一:图标大小打修改
1.反编译framework-res.apk
2.打开res/values/dimens.xml文件
3.修改如下代码:
<dimen
name="status_bar_height">25.0dip</dimen>
<dimen
name="status_bar_icon_size">25.0dip</dimen>
4.第一个是状态栏的高度,25.0dip是现在看到的高度,建议修改成20即可
5.第二个是图标的高度,比状态栏的小1-3dpi最佳
6.回编译,替换回到原来的apk里
二:线性布局
Android的五大布局分别是LinearLayout(线性布局)、FrameLayout(单帧布局,也叫框架布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)和TableLayout(表格布局)。而我们对于仿魅族用得更多的是线性布局。然而对于有的少部分手机它也涉及框架布局和相对布局。
下面主要讲线性布局
android:background 设置整个布局画面的背景 , 如android:background='@drawable/img_bg' //img_bg就为为drawable下的一张图片 。比如状态栏透明,就需要改这个引号里的为透明代码。
android:orientation="vertical"垂直线性布局,"horizontal"水平线性布局
~~~~~~~分割线~~~~~~~~
Ø android:id 为控件指定相应的id
Ø android:text 指定控件当中显示的文字,需要注意的是,尽量使用strings.xml
Øandroid:textSize ="35.0dip"指定控件当中字体的大小 ,比如添加到时间代码或者运营商等等代码里面就可以控制时间大小。
Øandroid:textcolor=" #264EBF "这是控制颜色的代码。引号里的即为颜色代码。此为蓝色。你们也可以自己更改。比如添加到时间和运营商等等里面就可以控制颜色。
即为android:layout_width="fill_parent"定义当前视图在屏幕上 可以消费的宽度,fill_parent即填充整个屏幕。
android:layout_height="wrap_content":随着文字栏位的不同 而改变这个视图的宽度或者高度。有点自动设置框度或者高度的意思
android:gravity="top(上)"(buttom(下)、left(左)、right右、center_vertical(中心垂直)、fill_vertical、center_horizontal(中心平行)、fill_horizontal、center、fill、clip_vertical、clip_horizontal)控制布局中控件的对齐方式。如果是没有子控件的控件设置此属性,表示其内容的对齐方式,比如说TextView里面文字的对齐方式;
~~~~~~~分割线~~~~~~~
若是有子控件的控件设置此属性,则表示其子控件的对齐方式,gravity如果需要设置多个属性值,需要使用“|”进行组合,如右下(gravity='bottom|right)
android:gravity 与 android:layout_gravity的区别
android:gravity是指定本元素的子元素相对它的对齐方式。
android:layout_gravity是指定本元素相对它的父元素的对齐方式( 如果子控件layout_gravity对齐方式设置为右对齐,如果想layout_gravity起作用的话,线性布局必须是垂直, 同理,如果对齐方式设置为下对齐,则线性布局必须是水平的。 对于线性布局,其中的子控件的对齐属性如果设置右下对齐,即:layout_gravity='bottom|right',那么 如果是水平线性布局,则下对齐起作用,右对齐不起作用。 如果是垂直线性布局,则右对齐起作用,下对齐不起作用。 )。后面举个例子
例子:布局对于子控件来说具有绝对的权威,在布局的gravity属性中定义的对齐方式是什么就是什么,子控件无法进行修改。
1.如果布局是水平线性布局,则子控件可以修改自身的上下对齐方式,即:layout_gravity='top'和layout_gravity='bottom'
是可以起作用的,这将会对布局中gravity属性定义的上下对齐方式进行覆盖。
2.如果布局是垂直线性布局,则子控件可以修改自身的左右对齐方式,即:
layout_gravity='left'和layout_gravity='right'
是可以起作用的。这将会对布局中gravity属性定义的左右对齐方式进行覆盖。
(注:线性布局没有orientation属性,默认是水平线性布局)
~~~~~分割线~~~~~~~
⢡android:padding 设置子元素与布局边缘之间的空白可以添加离左离右如 android:paddingLeft="111.dip"即为离布局左边缘距离(记住那个Left首字母大写,我就犯过这个错误导致不能回编译,其他也一样)
android:layout_margin="10dp" 设置自身对象边缘与父布局的边缘之间的空白
⢡ 解决LinearLayout中控件不能居右对齐 在LinearLayout布局时使用右对齐(android:layout_gravity='right')控件对齐方式不生效,需要设置 android:layout_weight='1' 才能右对齐控件,原因在于后者把位置平分了。即为在 LinearLayout整段代码后面加 android:layout_weight='1'
android:layout_weight (线性布局 内子元素对未占用空间【水平或垂直】分配权重值,其值越小,权重越大。
前提是子元素 设置了 android:layout_width = "fill_parent" 属性(水平方向)
或 android:layout_height = "fill_parent" 属性(垂直方向)
如果某个子元素的 android:layout_width = "wrap_content"
或 android:layout_height =" wrap_content” ,
则 android:layout_weight 的设置值 对该方向上空间的分配刚好相反。
⢡ android:sigleLine 如果设置为true,则将控件的内容在同一行中进行显示。
//如果字符太多就自动用“...”省略号代替。假如这个值为false的话,有可能内容太多把其它的控件给挤到看不到了
android:layout_alignParentLeft="true" /> 子视图的左边与其父视图的左边重合,也就是子视图在父视图中居左显示。
安卓状态栏里最常用的就是线性布局,也就是LinearLayout(线性布局)那么怎样才为一个完整的线性布局呢?看我下面解释。例子:
<LinearLayout
xxxxxx其中内容
</LinearLayout>这就为一个线性布局。
即当有一段代码以<LinearLayout开头的时候,而那段以 <LinearLayout开头的整段代码中,结束的时候没有 含有/>结尾的时候代表这段线性布局没有结束。到最后必须要有一个 </LinearLayout>与之对其结束才算一个完整的线性布局。记住啊,对齐呃。
当然如果以 <LinearLayout 开始的整段代码中,整段结束时含有 />结尾,那么一个线性布局就完了。后面就不再需要 </LinearLayout>这个来结束了。比如说状态栏布局代码中的状态图标 <LinearLayout android:gravity="bottom|right" android:orientation="horizontal" android:id="@id/statusIcons" android:paddingRight="0.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" />就是这样。
上面中的 xxxxxx其中内容里面也可以还含有 <LinearLayout开始的。当还含有线性布局,那么这个线性布局可以由它前面的线性布局包裹,也可以与前面的线性布局对齐。但对齐的话,你就必须把上面那个线性布局以 </LinearLayout>对齐结束了。 而包裹他就在上一个线性布局的控制里。
记住,每一个线性布局开始都要有结束呃。不要忘了。。汗。我是不是很啰嗦。感觉有点。
下面来说布局xml里面的各段代码指什么。
<com.android.systemui.statusbar.phone.PhoneStatusBarView android:orientation="vertical" android:background="@drawable/status_bar_background" android:focusable="true" android:descendantFocusability="afterDescendants"此段定义了状态栏的基本布局,整个xml都在这个布局之中。
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
这些内容我们都可以直接无视它。从下面开始
<LinearLayout android:orientation="horizontal" android:id="@id/icons"(图标) android:paddingLeft="6.0dip" android:paddingRight="6.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">这是一个线性布局的开始。
<LinearLayout android:orientation="horizontal" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">这也是一个线性布局的开始。不知你们看没看到这个线性布局开头比上个线性布局的开头空格多些,这样这个线性布局就属于上个线性布局包裹之内。
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" ........这段指控制时间代码的部分
<com.android.systemui.statusbar.phone.IconMerger ......... android:id="@id/notificationIcons"这段是控制通知图标的,也就是那些第三方软件后台显示,信息来了显示的图标。
<com.android.systemui.statusbar.StatusBarIconView android:id="@id/moreIcon" 此段定义了更多图标的位置,也就是通知图标多出布局的宽度时,自动隐藏的图标。
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/statusIcons" 此段定义了系统图标的位置,这段结尾部分就有个 />结束,所以这段已经成为一个完整的小布局。
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/signal_battery_cluster"(信号,电量) android:paddingLeft="2.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent">此段定义了信号,电量等等的位置布局。
<include android:id="@id/signal_cluster"(信号)这是信号部分代码。
<ImageView android:id="@id/battery" (电量)这是电量部分的代码。
<com.android.systemui.statusbar.phone.CarrierLabel.......这段代码是控制运营商的。有的手机不自带运营商。你就可以添加。
当然,这其中可能还还有其他textview等等代码,但我们状态栏顶部的布局跟它没什么关系。所以我们不用去动它。仿魅族状态栏状态栏显示无非时间,状态栏图标,通知图标。运营商这些。
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:paddingLeft="6.0dip" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent">这个线性布局以下都是定义了ticker的配置布局,不会在状态栏上显示,只有状态栏收到通知时才会出现,而我们的仿魅族状态栏跟它没什么关系。所以它后面的我们都不用动它。
每段指什么你们一定要清楚,不然你拿什么去布局?
1.反编译framework-res.apk
2.打开res/values/dimens.xml文件
3.修改如下代码:
<dimen
name="status_bar_height">25.0dip</dimen>
<dimen
name="status_bar_icon_size">25.0dip</dimen>
4.第一个是状态栏的高度,25.0dip是现在看到的高度,建议修改成20即可
5.第二个是图标的高度,比状态栏的小1-3dpi最佳
6.回编译,替换回到原来的apk里
二:线性布局
Android的五大布局分别是LinearLayout(线性布局)、FrameLayout(单帧布局,也叫框架布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)和TableLayout(表格布局)。而我们对于仿魅族用得更多的是线性布局。然而对于有的少部分手机它也涉及框架布局和相对布局。
下面主要讲线性布局
android:background 设置整个布局画面的背景 , 如android:background='@drawable/img_bg' //img_bg就为为drawable下的一张图片 。比如状态栏透明,就需要改这个引号里的为透明代码。
android:orientation="vertical"垂直线性布局,"horizontal"水平线性布局
~~~~~~~分割线~~~~~~~~
Ø android:id 为控件指定相应的id
Ø android:text 指定控件当中显示的文字,需要注意的是,尽量使用strings.xml
Øandroid:textSize ="35.0dip"指定控件当中字体的大小 ,比如添加到时间代码或者运营商等等代码里面就可以控制时间大小。
Øandroid:textcolor=" #264EBF "这是控制颜色的代码。引号里的即为颜色代码。此为蓝色。你们也可以自己更改。比如添加到时间和运营商等等里面就可以控制颜色。
即为android:layout_width="fill_parent"定义当前视图在屏幕上 可以消费的宽度,fill_parent即填充整个屏幕。
android:layout_height="wrap_content":随着文字栏位的不同 而改变这个视图的宽度或者高度。有点自动设置框度或者高度的意思
android:gravity="top(上)"(buttom(下)、left(左)、right右、center_vertical(中心垂直)、fill_vertical、center_horizontal(中心平行)、fill_horizontal、center、fill、clip_vertical、clip_horizontal)控制布局中控件的对齐方式。如果是没有子控件的控件设置此属性,表示其内容的对齐方式,比如说TextView里面文字的对齐方式;
~~~~~~~分割线~~~~~~~
若是有子控件的控件设置此属性,则表示其子控件的对齐方式,gravity如果需要设置多个属性值,需要使用“|”进行组合,如右下(gravity='bottom|right)
android:gravity 与 android:layout_gravity的区别
android:gravity是指定本元素的子元素相对它的对齐方式。
android:layout_gravity是指定本元素相对它的父元素的对齐方式( 如果子控件layout_gravity对齐方式设置为右对齐,如果想layout_gravity起作用的话,线性布局必须是垂直, 同理,如果对齐方式设置为下对齐,则线性布局必须是水平的。 对于线性布局,其中的子控件的对齐属性如果设置右下对齐,即:layout_gravity='bottom|right',那么 如果是水平线性布局,则下对齐起作用,右对齐不起作用。 如果是垂直线性布局,则右对齐起作用,下对齐不起作用。 )。后面举个例子
例子:布局对于子控件来说具有绝对的权威,在布局的gravity属性中定义的对齐方式是什么就是什么,子控件无法进行修改。
1.如果布局是水平线性布局,则子控件可以修改自身的上下对齐方式,即:layout_gravity='top'和layout_gravity='bottom'
是可以起作用的,这将会对布局中gravity属性定义的上下对齐方式进行覆盖。
2.如果布局是垂直线性布局,则子控件可以修改自身的左右对齐方式,即:
layout_gravity='left'和layout_gravity='right'
是可以起作用的。这将会对布局中gravity属性定义的左右对齐方式进行覆盖。
(注:线性布局没有orientation属性,默认是水平线性布局)
~~~~~分割线~~~~~~~
⢡android:padding 设置子元素与布局边缘之间的空白可以添加离左离右如 android:paddingLeft="111.dip"即为离布局左边缘距离(记住那个Left首字母大写,我就犯过这个错误导致不能回编译,其他也一样)
android:layout_margin="10dp" 设置自身对象边缘与父布局的边缘之间的空白
⢡ 解决LinearLayout中控件不能居右对齐 在LinearLayout布局时使用右对齐(android:layout_gravity='right')控件对齐方式不生效,需要设置 android:layout_weight='1' 才能右对齐控件,原因在于后者把位置平分了。即为在 LinearLayout整段代码后面加 android:layout_weight='1'
android:layout_weight (线性布局 内子元素对未占用空间【水平或垂直】分配权重值,其值越小,权重越大。
前提是子元素 设置了 android:layout_width = "fill_parent" 属性(水平方向)
或 android:layout_height = "fill_parent" 属性(垂直方向)
如果某个子元素的 android:layout_width = "wrap_content"
或 android:layout_height =" wrap_content” ,
则 android:layout_weight 的设置值 对该方向上空间的分配刚好相反。
⢡ android:sigleLine 如果设置为true,则将控件的内容在同一行中进行显示。
//如果字符太多就自动用“...”省略号代替。假如这个值为false的话,有可能内容太多把其它的控件给挤到看不到了
android:layout_alignParentLeft="true" /> 子视图的左边与其父视图的左边重合,也就是子视图在父视图中居左显示。
安卓状态栏里最常用的就是线性布局,也就是LinearLayout(线性布局)那么怎样才为一个完整的线性布局呢?看我下面解释。例子:
<LinearLayout
xxxxxx其中内容
</LinearLayout>这就为一个线性布局。
即当有一段代码以<LinearLayout开头的时候,而那段以 <LinearLayout开头的整段代码中,结束的时候没有 含有/>结尾的时候代表这段线性布局没有结束。到最后必须要有一个 </LinearLayout>与之对其结束才算一个完整的线性布局。记住啊,对齐呃。
当然如果以 <LinearLayout 开始的整段代码中,整段结束时含有 />结尾,那么一个线性布局就完了。后面就不再需要 </LinearLayout>这个来结束了。比如说状态栏布局代码中的状态图标 <LinearLayout android:gravity="bottom|right" android:orientation="horizontal" android:id="@id/statusIcons" android:paddingRight="0.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" />就是这样。
上面中的 xxxxxx其中内容里面也可以还含有 <LinearLayout开始的。当还含有线性布局,那么这个线性布局可以由它前面的线性布局包裹,也可以与前面的线性布局对齐。但对齐的话,你就必须把上面那个线性布局以 </LinearLayout>对齐结束了。 而包裹他就在上一个线性布局的控制里。
记住,每一个线性布局开始都要有结束呃。不要忘了。。汗。我是不是很啰嗦。感觉有点。
下面来说布局xml里面的各段代码指什么。
<com.android.systemui.statusbar.phone.PhoneStatusBarView android:orientation="vertical" android:background="@drawable/status_bar_background" android:focusable="true" android:descendantFocusability="afterDescendants"此段定义了状态栏的基本布局,整个xml都在这个布局之中。
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
这些内容我们都可以直接无视它。从下面开始
<LinearLayout android:orientation="horizontal" android:id="@id/icons"(图标) android:paddingLeft="6.0dip" android:paddingRight="6.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">这是一个线性布局的开始。
<LinearLayout android:orientation="horizontal" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">这也是一个线性布局的开始。不知你们看没看到这个线性布局开头比上个线性布局的开头空格多些,这样这个线性布局就属于上个线性布局包裹之内。
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" ........这段指控制时间代码的部分
<com.android.systemui.statusbar.phone.IconMerger ......... android:id="@id/notificationIcons"这段是控制通知图标的,也就是那些第三方软件后台显示,信息来了显示的图标。
<com.android.systemui.statusbar.StatusBarIconView android:id="@id/moreIcon" 此段定义了更多图标的位置,也就是通知图标多出布局的宽度时,自动隐藏的图标。
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/statusIcons" 此段定义了系统图标的位置,这段结尾部分就有个 />结束,所以这段已经成为一个完整的小布局。
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/signal_battery_cluster"(信号,电量) android:paddingLeft="2.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent">此段定义了信号,电量等等的位置布局。
<include android:id="@id/signal_cluster"(信号)这是信号部分代码。
<ImageView android:id="@id/battery" (电量)这是电量部分的代码。
<com.android.systemui.statusbar.phone.CarrierLabel.......这段代码是控制运营商的。有的手机不自带运营商。你就可以添加。
当然,这其中可能还还有其他textview等等代码,但我们状态栏顶部的布局跟它没什么关系。所以我们不用去动它。仿魅族状态栏状态栏显示无非时间,状态栏图标,通知图标。运营商这些。
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:paddingLeft="6.0dip" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent">这个线性布局以下都是定义了ticker的配置布局,不会在状态栏上显示,只有状态栏收到通知时才会出现,而我们的仿魅族状态栏跟它没什么关系。所以它后面的我们都不用动它。
每段指什么你们一定要清楚,不然你拿什么去布局?
附件线性布局.doc下载次数: 0次,上传时间: 2015-05-21 08:48
28.0K