Android底部菜单的封装及重用Word格式文档下载.docx

上传人:b****1 文档编号:3954336 上传时间:2023-05-02 格式:DOCX 页数:10 大小:50.95KB
下载 相关 举报
Android底部菜单的封装及重用Word格式文档下载.docx_第1页
第1页 / 共10页
Android底部菜单的封装及重用Word格式文档下载.docx_第2页
第2页 / 共10页
Android底部菜单的封装及重用Word格式文档下载.docx_第3页
第3页 / 共10页
Android底部菜单的封装及重用Word格式文档下载.docx_第4页
第4页 / 共10页
Android底部菜单的封装及重用Word格式文档下载.docx_第5页
第5页 / 共10页
Android底部菜单的封装及重用Word格式文档下载.docx_第6页
第6页 / 共10页
Android底部菜单的封装及重用Word格式文档下载.docx_第7页
第7页 / 共10页
Android底部菜单的封装及重用Word格式文档下载.docx_第8页
第8页 / 共10页
Android底部菜单的封装及重用Word格式文档下载.docx_第9页
第9页 / 共10页
Android底部菜单的封装及重用Word格式文档下载.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Android底部菜单的封装及重用Word格式文档下载.docx

《Android底部菜单的封装及重用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Android底部菜单的封装及重用Word格式文档下载.docx(10页珍藏版)》请在冰点文库上搜索。

Android底部菜单的封装及重用Word格式文档下载.docx

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"

  结果程序效果如下图所示:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2