Android底部菜单的封装及重用Word格式文档下载.docx
- 文档编号:3954336
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:10
- 大小:50.95KB
Android底部菜单的封装及重用Word格式文档下载.docx
《Android底部菜单的封装及重用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Android底部菜单的封装及重用Word格式文档下载.docx(10页珍藏版)》请在冰点文库上搜索。
1.0"
encoding="
utf-8"
>
LinearLayoutxmlns:
android="
android:
layout_width="
fill_parent"
layout_height="
orientation="
vertical"
<
LinearLayoutandroid:
horizontal"
android:
gravity="
bottom"
wrap_content"
id="
@+id/bottom_menu_button_group_id"
/LinearLayout>
2.
设计底部菜单按钮layout:
bottom_menu_button_frame.xml,该页面用来定义每一个按钮的样式,一般需要包含一个位于上方的图片以及一个位于下方的按钮文字。
64px"
@+id/bottom_menu_template_button_id"
background="
@drawable/tab_one_normal"
ImageViewandroid:
@+id/bottom_menu_template_img_id"
paddingTop="
5px"
layout_gravity="
center"
src="
@drawable/image"
/>
TextViewandroid:
@+id/bottom_menu_template_text_id"
textSize="
11sp"
paddingBottom="
3.
自定义封装按钮的JAVA类:
BottomButton,封装底部菜单按钮的基本信息:
图片、文字、按钮事件、是否当前被选中的按钮等。
publicclassBottomButton
{
//按钮菜单文字
privateStringtext;
//按钮菜单图片
privateintbackgroundResource;
//点击事件。
privateView.OnClickListenerclickListener;
//是否当前已经选中的按钮,如果是则高亮,并且忽略点击事件。
privatebooleanisCurrent=false;
}
4.
自定义底部菜单Layout
类:
BottomMenuLayout,该类继承自LinearLayout,用来处理按钮的展示,该类负责以下三件事情:
a)
将底部菜单layout加入到整个大视图页面中。
b)
绑定每一个菜单按钮。
c)
重新计算整个布局的大小,将菜单固定在底部。
publicclassBottomMenuLayoutextendsLinearLayout{
//实例化layout使用的类
privateLayoutInflatermInflater;
//保存菜单按钮的集合,每一个集合元素代表一个按钮,包含了按钮所需要的信息:
图片,文字,按键处理事件。
privateList<
BottomButton>
bottomButtons;
//封装菜单按钮的布局。
privateViewbottomMenuLayout;
publicvoidprocessInitButton()
{
//初始化布局,将底部菜单layout加入到视图中。
initLayout(this.getContext());
//绑定每一个菜单按钮
bindingButton();
//重新计算整个布局的大小,使用整个屏幕的高度减去底部菜单的高度,
//得出并设置中间页面部分的高度,就能够将菜单固定在底部。
resizeLayout();
}
注:
这里屏蔽了实现细节,具体参考附件代码。
5.当以上每一个零散的部分都完成以后,就需要一个组装者,来负责将各个部分组装在一起,使之能够正常运作起来,这里定义一个继承自Activity的类:
BaseBottomMenuActivity,用来充当组装者的角色,开发业务时需要更改方式,原来直接继承自Activity的类改为继承该类。
该类主要完成以下工作:
a)创建出整个大视图页面。
b)创建出中间内容部分页面,也就是由开发者定义的实际layout内容。
并加到整个大视图的页面中来。
c)创建出底部菜单,并将底部菜单加入到整个大视图的页面中来。
d)需要得知子类继承该类后,具体使用的layout页面的ID,定义抽象方法由子类实现以提供该ID。
e)需要得知子类继承该类后,具体需要哪些菜单按钮,定义抽象方法由子类实现以提供按钮的列表。
f)需要得知子类继承该类后,还需要做哪些页面初始化的工作,定义抽象方法由子类实现以便在页面初始过程中调用。
publicabstractclassBaseBottomMenuActivityextendsActivity
protectedBottomMenuLayoutbottomMenuLayout;
//底部菜单UI部分
protectedViewcontentView;
//页面中间UI部分
finalprotectedvoidonCreate(BundlesavedInstanceState)
//a)创建出整个大视图页面。
//b)创建出中间内容部分页面,也就是由开发者定义的实际layout内容。
//c)创建出底部菜单,并将底部菜单加入到整个大视图的页面中来。
}
/**
*子类实现后,在原来的onCreate方法中内容移到这里来操作。
*@paramsavedInstanceState
*/
protectedabstractvoidonCreatOverride(BundlesavedInstanceState);
*返回layoutxml的ID
*原本在Activity的onCreate方法中调用的setContentView(R.layout.xxxxLayoutId);
现在从该方法返回。
*@return
publicabstractintgetContentViewLayoutResId();
*创建底部菜单,需要子类实现,在此方法中,
*创建多个BottomButton对象并放置到List中返回即可。
*如果需要哪一个按钮当前被选中,则设置BottomButton的isCurrent属性为ture.
*@parambottomButtons
*@parambottomMenuLayout
publicabstractList<
getButtonList();
注:
实现及使用
具体实现代码见附件。
在上述设计的各部分都实现后,就可以进行使用了,使用时,与平常开发正常页面的步骤一样,首先画layout.xml,然后定义activity,进行绑定并配置AndroidManifest.xml文件,不同的地方在于定义的Activity需要继承BaseBottomMenuActivity。
并且根据以下步骤开发该Activity:
1.在子类中继承实现getButtonList方法,在方法中封装BottomButton对象返回,每一个BottomButton代表一个菜单项,具体属性见BottomButton定义。
2.在子类中继承实现getContentViewLayoutResId方法,返回layoutxml的ID。
3.在子类中继承实现onCreatOverride方法,原先在onCreat方法中完成的事情挪到这里,super.onCreate(savedInstanceState);
和setContentView就不需要调用了。
测试
让我们来写一个简单的Demo来进行测试,该Demo中,除了底部菜单,只有一个TextView文本,该类继承了BaseBottomMenuActivity:
publicclassDemoextendsBaseBottomMenuActivity{
publicList<
getButtonList(){
Map<
String,String>
buttonMaps=newHashMap<
();
buttonMaps.put("
Menu1"
String.valueOf(R.drawable.home));
Menu2"
Menu3"
Menu4"
主菜单"
List<
buttons=newArrayList<
Iterator<
String>
itKey=buttonMaps.keySet().iterator();
while(itKey.hasNext())
Stringkey=itKey.next();
StringvalueRes=buttonMaps.get(key);
BottomButtononeBottomButton=newBottomButton();
oneBottomButton.setText(key);
oneBottomButton.setBackgroundResource(Integer.parseInt(valueRes));
buttons.add(oneBottomButton);
returnbuttons;
publicintgetContentViewLayoutResId(){returnR.layout.main;
protectedvoidonCreatOverride(BundlesavedInstanceState){}
在返回按钮的getButtonList方法中,返回了5个按钮。
其布局文件如下:
>
text="
@string/hello"
结果程序效果如下图所示:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 底部 菜单 封装 重用