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);



更多相关文章

  1. Android(安卓)让一个Service开机自动启动
  2. Android原生SQLite常用SQL语句
  3. Android访问远程网页取回json数据
  4. Android分包机制个人总结
  5. android实现音乐播放器(进度条)
  6. Android(安卓)下载
  7. android实现分享功能
  8. Android之用HttpURLConnection参数以XML形式封装的部分关键代码
  9. Android中解决EditText与NestedScrollView垂直滑动冲突

随机推荐

  1. Android游戏开发设计步骤
  2. 傻瓜式安卓 APP开发入门教程
  3. Android入门前言(一)之------Android应用
  4. IDC:Android市场占有率仍未超越Symbian
  5. 专访丰生强:Android软件安全与逆向分析
  6. Android开发基础(2.2)--利用NDK搭建自己的A
  7. 极光推送 使用实例 (一)服务端
  8. android 面试题经典
  9. Android小項目之ListView实现论坛管理效
  10. Android Framework 框架系列之 PhoneWind