android SDK开发 -- TitleBar封装(二)
来源:互联网 发布:mac下制作u盘winpe 编辑:程序博客网 时间:2024/05/30 04:12
android SDK开发 -- TitleBar封装 (一) 点击打开链接
这一篇讲述一下TitleBar怎么增加交互
BaseActivity 中的逻辑实现
private ViewSwitcher[] titleSwitcher;/** * 初始化View */protected void findViewById() {titleSwitcher = new ViewSwitcher[3];titleSwitcher[0] = (ViewSwitcher) findViewById(R.id.app_title_left_switcher);titleSwitcher[1] = (ViewSwitcher) findViewById(R.id.app_title_middle_switcher);titleSwitcher[2] = (ViewSwitcher) findViewById(R.id.app_title_right_switcher);}protected void setTitle(TitleRes leftTitle, TitleRes middleTitle, TitleRes rightTitle) {TitleRes[] reses = new TitleRes[] { leftTitle, middleTitle, rightTitle };for (int i = 0; i < reses.length; i++) {TitleRes res = reses[i];ViewSwitcher switcher = titleSwitcher[i];if (res == null) {switcher.setVisibility(View.INVISIBLE);} else {switcher.setVisibility(View.VISIBLE);// 触发单击事件的ViewView clickView = null;// 文字if (res.getType() == 0) {switcher.setDisplayedChild(0);// 显示TextView//Object resource = res.getResource();String title = resource instanceof Integer ? getResources().getString((Integer) resource) : String.valueOf(resource);((TextView) switcher.getChildAt(0)).setText(title);clickView = switcher.getChildAt(0);} else {switcher.setDisplayedChild(1);// 显示ImageView//int imageResource = (Integer) res.getResource();((ImageView) switcher.getChildAt(1)).setImageResource(imageResource);clickView = switcher.getChildAt(1);}// 设置title的单击事件clickView.setOnClickListener(res.getClickListener());}}}
自雷TitleSampleActivity 调用如下
@Overrideprotected void findViewById() {setContentView(R.layout.title_demo);super.findViewById();// setTitle("返回主页", "这是一个Title", "下一个界面");TitleRes left = new TitleRes("left", new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(TitleDemoActivity.this, "click left", Toast.LENGTH_SHORT).show();//showToast("click left");}});TitleRes middle = new TitleRes("middle", new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(TitleDemoActivity.this, "click middle", Toast.LENGTH_SHORT).show();//showToast("click middle");}});TitleRes right = new TitleRes("right", new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(TitleDemoActivity.this, "click right", Toast.LENGTH_SHORT).show();//showToast("click right");}});//setTitle(left, middle, right);}
这个时候title三个控件都具备了交互的能力
Toast.makeText(TitleDemoActivity.this,"click right",Toast.LENGTH_SHORT).show();
程序中会频繁的用到 context Toast等对象
采用Class.this的方式在代码移植、维护、重构等方面很不友好
另外频繁调用Toast每次都那么写的话 麻烦死
所以BaseActivity中新增俩方法
作用于暂且定义为protected 以后估计还得改
protected Context getContext() {
return this;
}
protected void showToast(String message) {
Toast.makeText(getContext(), message,Toast.LENGTH_SHORT).show();
}
这个时候子类调用父类的代码如下
TitleRes left =newTitleRes("left",newView.OnClickListener() {
@Override
public void onClick(View v) {
showToast("click left");//
}
});
。。。。中、右略
//
setTitle(left,middle, right);
- android SDK开发 -- TitleBar封装(二)
- android SDK开发 -- TitleBar封装(一)
- APP开发:封装TitleBar
- Android SDK开发 -- TitleBar重构 (代理模式-优化)
- Android标题栏的封装TitleBar
- android开发,去除TitleBar:
- Android SDK开发 -- TitleBar重构 (代理模式的使用)
- Android SDK开发 -- TitleBar重构 - 使用策略模式、舍弃代理模式
- Android开发:定制Activity的标题栏(Titlebar)
- Android开发:定制Activity的标题栏(Titlebar)
- Android开发 如何去除标题栏title titleBar
- Android开发之自定义ActionBar和TitleBar
- Android开发随笔之自定义TitleBar
- Ubuntu Android 开发(二) Android SDK 安装
- android Menu与ActionBar和TitleBar 浅析 二
- androidUI开发之自定义Android标题栏TitleBar布局
- Android开发之——自定义标题栏titlebar
- android工程封装成SDK
- Masonry框架的使用
- Eclipse使用技巧
- MySQL sql-mode
- codeforces 301B. Yaroslav and Time(下标的艺术)
- Linux学习第二篇
- android SDK开发 -- TitleBar封装(二)
- OnGlobalLayoutListener获得一个视图的高度
- 显示有限的接口到外部
- 关于基于ARM cortex-r5的Marvell1093r2主控的IPC通信心得
- sharedPrefereces
- P1 VS mspdbsrv.exe导致的问题
- Tableview 默认选中第一行以及选中背景自定义
- Android中SQLite应用详解
- keil MDK之RTX的消息邮箱的API函数