替代TabActivity,底部菜单主框架搭建

来源:互联网 发布:大数据hadoop生态圈 编辑:程序博客网 时间:2024/05/16 18:29

看到还有些人在使用TabActvity,这个已经被Google废弃了的类,为了大家方便,写了一个能代替TabActivity的东西。说白了也就是对viewpager跟底部菜单进行了一个封装,标准的底部菜单自定义控件已经写好,如果有另外的需求扩展底部菜单控件即可(继承BindPagerAdapterView)。

先上个效果图:
这里写图片描述

使用方式见代码:

package com.example.tabtest;import com.idroid.tab.TabFrgmAdapter;import com.idroid.tab.TabSelectView;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.support.v4.view.ViewPager;import android.view.View;import android.view.ViewGroup;import android.view.Window;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class MainActivity extends FragmentActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main);        ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);        viewPager.setAdapter(new TabFrgmAdapter(getSupportFragmentManager(), AFrgm.class, BFrgm.class, CFrgm.class));        TabSelectView mTabsView = (TabSelectView) findViewById(R.id.tabs);        mTabsView.setViewPager(viewPager);        final String[] strs = new String[] { "首页", "第二页", "我" };        final int[] images = new int[] { R.drawable.image_slt, R.drawable.image_slt, R.drawable.image_slt };        mTabsView.setAdapter(new BaseAdapter() {            @Override            public View getView(int position, View convertView, ViewGroup parent) {                convertView = View.inflate(parent.getContext(), R.layout.tab_item, null);                ImageView image = (ImageView) convertView.findViewById(R.id.item_image);                image.setImageResource(images[position]);                TextView textView = (TextView) convertView.findViewById(R.id.item_text);                textView.setText(strs[position]);                return convertView;            }            @Override            public long getItemId(int position) {                // TODO Auto-generated method stub                return 0;            }            @Override            public Object getItem(int position) {                // TODO Auto-generated method stub                return null;            }            @Override            public int getCount() {                // TODO Auto-generated method stub                return strs.length;            }        });        mTabsView.setCurrentItem(0);    }}

其中有一个注意点,选中图片需要根据android:state_selected=”true”设置,如果用pressed,在跳转时,会丢失pressed状态,图片变成未选中的样式。
我在上线的项目中已经使用了该UI框架,使用过程中很容易满足美工的设计,推荐大家使用。而且本身它也是可扩展的,重写onlayout方法即可。

Demo下载地址
GitHub:TabView

0 0