android中使用回调接口实现底部菜单的切换
来源:互联网 发布:仿折800源码 编辑:程序博客网 时间:2024/06/01 07:44
android中底部菜单的切换可用多种方式来实现,今天介绍的是用回调接口的形式进行实现,相比较其他的方式而言,用回调的方式实现。。。。。。
直接上代码:底部的菜单java代码
package com.example.testqq;import android.content.Context;import android.util.AttributeSet;import android.widget.Button;import android.widget.LinearLayout;import android.view.View;import android.view.View.OnClickListener;/*** @author zhaoshaopeng* @version 创建时间:2015年12月10日 下午2:57:25 类说明*/public class TabView extends LinearLayout implements OnClickListener {private final Button mStateButton1;private final Button mStateButton2;private final Button mStateButton3;private final Button mStateButton4;private int mState = 0;private OnTabChangeListener mOnTabChangedListener;public TabView(Context context) {this(context, null);}public TabView(Context context, AttributeSet attrs) {this(context, attrs, 0);}public TabView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs);// TODO Auto-generated constructor stubinflate(context, R.layout.view_tab, this);mStateButton1 = (Button) findViewById(R.id.button_state1);mStateButton2 = (Button) findViewById(R.id.button_state2);mStateButton3 = (Button) findViewById(R.id.button_state3);mStateButton4 = (Button) findViewById(R.id.button_state4);mStateButton1.setOnClickListener(this);mStateButton2.setOnClickListener(this);mStateButton3.setOnClickListener(this);mStateButton4.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.button_state1:switchState(0);break;case R.id.button_state2:switchState(1);break;case R.id.button_state3:switchState(2);break;case R.id.button_state4:switchState(3);break;default:break;}}private void switchState(int state) {if (mState == state)return;mState = state;mStateButton1.setSelected(false);mStateButton2.setSelected(false);mStateButton3.setSelected(false);mStateButton4.setSelected(false);Object tag = null;switch (mState) {case 0:mStateButton1.setSelected(true);tag = mStateButton1.getTag();break;case 1:mStateButton2.setSelected(true);tag = mStateButton2.getTag();break;case 2:mStateButton3.setSelected(true);tag = mStateButton3.getTag();break;case 3:mStateButton4.setSelected(true);tag = mStateButton4.getTag();break;default:break;}if (mOnTabChangedListener != null) {if (tag != null && mOnTabChangedListener != null) {mOnTabChangedListener.onTabChange(tag.toString());} else {mOnTabChangedListener.onTabChange(null);}}}public void setOnTabChangeListener(OnTabChangeListener listener) {mOnTabChangedListener = listener;}public void setCurrentTab(int index) {switchState(index);}public static interface OnTabChangeListener {public void onTabChange(String tag);}}在以上代码中定义了一个接口,当本页面触发onclick事件的时候写入tag值,在下面的代码中实现OnTabChangeListener接口的ontabchange方法,在此方法中进行页面的切换。
下面是主页面java代码:
package com.example.testqq;import com.example.testqq.TabView.OnTabChangeListener;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.widget.TextView;/** * @author zhaoshaopeng * @version 创建时间:2015年12月10日 下午2:53:17 类说明 */public class Startactivity extends FragmentActivity implements OnTabChangeListener {private FragmentManager mFragmentManager;private Fragment mCurrentFragment;private TextView mTitleTextView;private TabView mTabView;/** 上一次的状态 */private int mPreviousTabIndex = 1;/** 当前状态 */private int mCurrentTabIndex = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);mCurrentTabIndex = 1;mPreviousTabIndex = 1;mFragmentManager = getSupportFragmentManager();setupViews();}private void setupViews() {setContentView(R.layout.activity_main);// mTitleTextView = (TextView) findViewById(R.id.text_title);mTabView = (TabView) findViewById(R.id.view_tab);mTabView.setOnTabChangeListener(this);mTabView.setCurrentTab(mCurrentTabIndex);mCurrentFragment = new ServiceFragment();FragmentUtils.replaceFragment(mFragmentManager, R.id.layout_content, ServiceFragment.class, null, false);}@Overridepublic void onTabChange(String tag) {// TODO Auto-generated method stubif (tag != null) {if (tag.equals("message")) {mPreviousTabIndex = mCurrentTabIndex;mCurrentTabIndex = 0;mCurrentFragment = FragmentUtils.switchFragment(mFragmentManager, R.id.layout_content, mCurrentFragment,SessionFragment.class, null, false);} else if ("service".equals(tag)) {mPreviousTabIndex = mCurrentTabIndex;mCurrentTabIndex = 1;mCurrentFragment = FragmentUtils.switchFragment(mFragmentManager, R.id.layout_content, mCurrentFragment,ServiceFragment.class, null, false);} else if (tag.equals("personal")) {mPreviousTabIndex = mCurrentTabIndex;mCurrentTabIndex = 2;mCurrentFragment = FragmentUtils.switchFragment(mFragmentManager, R.id.layout_content, mCurrentFragment,ProfileFragment.class, null, false);} else if (tag.equals("settings")) {mPreviousTabIndex = mCurrentTabIndex;mCurrentTabIndex = 3;mCurrentFragment = FragmentUtils.switchFragment(mFragmentManager, R.id.layout_content, mCurrentFragment,SettingFragment.class, null, false);}}}}
精益求精方可融会贯通!
0 0
- android中使用回调接口实现底部菜单的切换
- 使用Fragment实现底部菜单的切换
- Android底部菜单切换实现
- FragmentTabHost+Fragment实现底部菜单的切换
- RadioButton实现底部切换的菜单
- Android底部菜单的实现
- Android中使用RadioButton实现QQ底部图片切换
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- Android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- android中fragment实现底部标签页的切换
- Android-小巫新闻客户端底部菜单切换实现
- Android-小巫新闻客户端底部菜单切换实现
- Android底部菜单,使用fragment实现
- android 用Fragment实现如新浪微博一样的底部菜单的切换
- word2vec
- 趣味编程第一天
- 第十四周 项目二 二叉树排序树中查找的路径
- 皇轩平台为你揭秘黑链市场的地下产业链
- Liunx 导入MySQL数据库
- android中使用回调接口实现底部菜单的切换
- 第十六周上机实践项目1 - 验证算法(快速排序)
- 第十六周--验证算法(希尔排序)
- 第六周 项目二 建立链栈算法库
- 选择排序之堆排序
- 第十五周 项目1 排序(快速排序)
- 项目1.3 快速排序
- 第15周项目2-用哈希法组织关键字
- windows端搭建svn服务器 客户端xcode利用svn提交项目到服务端 流程全纪录