tab选择效果SelectedTab

概述

这个项目是基于GridView编写,其实用RecycleView更好一些
纯粹实现了功能,没有什么技术含量

文件作用
snapshot程序运行的.gif图
TabDomain.java封装每个tab的属性
CommonAdatper.java
ViewHolder.java
是adapter的工具
MainActivity.java代码实现类

文件

MainActivity.java

public class MainActivity extends Activity {
    private Context mContext;

    private GridView mGvContent;
    private GVAdapter mAdapter;

    private int currentPosition = -1;//当前选中的条目

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = this;
        setContentView(R.layout.activity_tab_selected);
        initViews();
    }

    private void initViews() {
        mGvContent = (GridView) findViewById(R.id.gv_content);
        initData();
    }

    private void initData() {
        final List<TabDomain> mTabList = new ArrayList<>();
        /*--------------模拟初始化数据----------------*/
        TabDomain tab1 = new TabDomain();
        tab1.text = "签到(8:30)";
        tab1.isSelected = true;
        TabDomain tab2 = new TabDomain();
        tab2.text = "中午签退(12:00)";
        TabDomain tab3 = new TabDomain();
        tab3.text = "签到(1:30)";
        TabDomain tab4 = new TabDomain();
        tab4.text = "下午签退(1:30)";
        mTabList.add(tab1);
        mTabList.add(tab2);
        mTabList.add(tab3);
        mTabList.add(tab4);
        if (currentPosition == -1) {//默认第一个选中
            mTabList.get(0).isSelected = true;
            currentPosition = 0;
        }
        //设置gridveiw内容
        mAdapter = new GVAdapter(mContext, mTabList, R.layout.activity_tab_selected_item);
        mGvContent.setAdapter(mAdapter);
        //gridview点击事件
        mGvContent.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if (currentPosition != position) {
                    mTabList.get(currentPosition).isSelected = false;
                    mTabList.get(position).isSelected = true;
                    currentPosition = position;
                    mAdapter.notifyDataSetChanged();
                }
            }
        });
    }

    /**
     * adapter
     */
    private class GVAdapter extends CommonAdapter<TabDomain> {

        public GVAdapter(Context context, List list, int itemLayoutId) {
            super(context, list, itemLayoutId);
        }

        @Override
        public void convert(ViewHolder helper, TabDomain item) {
            helper.setText(R.id.tv_time, item.text);
            if (item.isSelected) {
                ((TextView) helper.getView(R.id.tv_time)).setTextColor(getResources().getColor(item.selectedColor));
                helper.getView(R.id.v_time).setBackgroundColor(getResources().getColor(item.selectedColor));
            }else{
                ((TextView) helper.getView(R.id.tv_time)).setTextColor(getResources().getColor(item.unselectedColor));
                helper.getView(R.id.v_time).setBackgroundColor(getResources().getColor(item.unselectedColor));
            }
        }
    }
}

这里写图片描述

下载地址

https://github.com/407365100/SelectedTab.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值