本帖不需回复~~~



(转载于网络 对原作者表示感谢)
2015-11-21 18:39 编辑


你是否在为不懂魅族状态栏布局而无力?
你是否不懂状态栏布局文件各代码的意思?
今天念尘教你详细了解布局代码意思。
教程开始。布局文件为status_bar.xml


<?xml version="1.0" encoding="utf-8"?>
【状态栏布局】<com.android.systemui.statusbar.phone.PhoneStatusBarView androidrientation="vertical" android:background="@drawable/status_bar_background" android:focusable="true" android:descendantFocusability="afterDescendants"此段定义了状态栏的基本布局,整个xml都在这个布局之中。
xmlns:android="http://schemas.android.com/apk
xmlns:systemui="http://schemas.android.com/apk
4.x的布局可以分为两个大布局几个小布局。
代码从上而下:
第一大布局:图标布局
⒈第三方通知图标布局
1.更多图标位置布局
2.第三方通知图标位置布局
⒉系统图标布局
1.信号电量布局
信号细分
电量细分
⒊时间布局
第二大布局:ticker布局
如果布局魅族,可以将其中的⒈⒉⒊整个提取出来,然后进行适当调整。
【图标布局】<LinearLayout androidrientation="horizontal" android:id="@id/icons"(图标) android:paddingLeft="6.0dip" android:paddingRight="6.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">此段定义了状态栏所有图标所在的布局,这个布局包含了以下所有布局,直到ticker。
〔第三方通知图标布局〕<LinearLayout androidrientation="horizontal" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">此段定义了第三方通知图标所在的布局,此布局包含更多及通知图标布局。
<com.android.systemui.statusbar.StatusBarIconView android:id="@id/moreIcon"(更多图标) android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/stat_notify_more" />此段定义了更多图标的位置,也就是通知图标多出布局的宽度时,自动隐藏的图标。
<com.android.systemui.statusbar.phone.IconMerger android:gravity="center_vertical" androidrientation="horizontal" android:id="@id/notificationIcons"(通知图标) android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentLeft="true" />此段定义了第三方通知图标的位置。
</LinearLayout>
〔第三方图标布局结束〕
〔系统图标布局〕<LinearLayout android:gravity="center_vertical" androidrientation="horizontal" android:id="@id/statusIcons"(系统图标) android:layout_width="wrap_content" android:layout_height="fill_parent" />此段定义了系统图标的位置,这段已经成为一个完整的小布局。
〔信号电量布局〕<LinearLayout android:gravity="center" androidrientation="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"(信号) android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/signal_cluster_view" />
<TextView android:textSize="16.0sp" android:textColor="@android:color/holo_blue_light" android:id="@id/percentage" android:paddingLeft="4.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/battery" (电量)android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
〔信号电量布局结束〕
<com.android.systemui.statusbar.policy.Clock (时间)android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="left|center" android:id="@id/clock" android:paddingLeft="6.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />此段定义了时间的位置。
</LinearLayout>
【图标布局结束】
以下都是定义了ticker的配置布局。
不会在状态栏上显示,只有状态栏收到通知时才会出现。
<LinearLayout androidrientation="horizontal" android:id="@id/ticker" android:paddingLeft="6.0dip" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageSwitcher android:id="@id/tickerIcon" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:layout_marginRight="4.0dip">
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="center" />
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="center" />
</ImageSwitcher>
<com.android.systemui.statusbar.phone.TickerView android:id="@id/tickerText" android:paddingTop="2.0dip" android:paddingRight="10.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0">
<TextView android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" />
</com.android.systemui.statusbar.phone.TickerView>
</LinearLayout>


作者:小帅