类似微信、简单Android UI基础框架(ViewPager结合Fragment实现)

下方是RadioGroup 点击时使用选择器,来修改背景图片和文字颜色

<RadioButton
    android:id="@+id/home_page_rb"
    style="@style/tab_menu_item"
    android:background="@drawable/tab_line"
    android:checked="true"
    android:drawableTop="@drawable/tab_menu_page_home"
    android:drawablePadding="7dp"
    android:paddingTop="15dp"
    android:text="首页" />

文字颜色:

tab_menu_text:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/home_tab_select" android:state_checked="true" />
    <item android:color="@color/home_tab_normal" />
</selector>

图片变化:

tab_menu_page_home:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/icon_tab_home_home_select" android:state_checked="true" />
<item android:drawable="@mipmap/icon_tab_home_home_normal" />
</selector>

其他两个RadioButton,也是如此

RadioGroup 上方是自定义的viewpager,禁止了viewpager的滑动

viewpager上放置的是三个Fragment。

第一个Fragment:

class HomeFragment : Fragment(), Handler.Callback {

    private val handler = Handler(this)

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fragment_home, null, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        initListener()
        //禁止下拉加载
        home_refresh.isEnableLoadMore = false
    }

    private fun initListener() {
        //下拉刷新
        home_refresh.setOnRefreshListener {
            //获取数据
            getData()
        }
    }

    /**
     * 获取数据方法
     */
    private fun getData() {
        //假的数据加载效果
        handler?.sendEmptyMessageDelayed(1, 2000)
    }

    override fun handleMessage(msg: Message): Boolean {
        when (msg?.what) {
            1 -> {
                home_refresh.finishRefresh(true)
                Toast.makeText(context, "刷新成功!", Toast.LENGTH_SHORT).show()
            }

        }
        return false
    }
}

还有一个就是adapter:

public class MyFragmentPagerAdapter extends FragmentPagerAdapter {

    public ArrayList<Fragment> mFragmentlist = null;


    public void setDatas(ArrayList<Fragment> fragmentlist){
        mFragmentlist = fragmentlist;
    }

    public MyFragmentPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return mFragmentlist.size();
    }

    @Override
    public Object instantiateItem(ViewGroup vg, int position) {
        return super.instantiateItem(vg, position);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
//        super.destroyItem(container, position, object);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentlist.get(position);
    }


}

下拉刷新使用的是:SmartRefreshLayout

源码地址:https://download.csdn.net/download/NewActivity/13159599

源码里忘记写控制checkbox图片尺寸了,代码如下:

private fun initRadioGroupSize() {
    //dp转px
    val pxValue = DensityUtil.dp2px(20f)
    val drawableWeiHome: Drawable = resources.getDrawable(R.drawable.tab_menu_page_home)
    drawableWeiHome.setBounds(0, 0, pxValue, pxValue)
    home_page_rb.setCompoundDrawables(null, drawableWeiHome, null, null) 

    val drawableWeiMsg: Drawable = resources.getDrawable(R.drawable.tab_menu_page_msg)
    drawableWeiMsg.setBounds(0, 0, pxValue, pxValue)
    msg_page_rb.setCompoundDrawables(null, drawableWeiMsg, null, null) 

    val drawableWeiMine: Drawable = resources.getDrawable(R.drawable.tab_menu_page_mine)
    drawableWeiMine.setBounds(0, 0, pxValue, pxValue)
    mine_page_rb.setCompoundDrawables(null, drawableWeiMine, null, null)
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值