ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android实现不一样的酷炫的Fragment菜单选择控件,轮盘样式让你的项目脑洞打开?

2020-12-24 17:29:48  阅读:368  来源: 互联网

标签:控件 fragmentList Fragment spinMenu 脑洞 add 导入 import


轮盘样式的Fragment菜单选择控件

第一步:首先附上GitHub地址

首先,肯定是附上创作这个功能的大佬GitHub地址。大佬有很多原创功能都挺强大的,大家有时间的话可以去学习学习,正所谓我不会写,我还不会用吗,希望多去大佬多多star,废话不多说,步入正题。
先看效果:
在这里插入图片描述

第二步:导入smlibrary

1.新建一个moudle或者project

主要用于测试这个功能。
在这里插入图片描述

2.导入simlibrary。

文件可以在CSDN下载,设置都也是0积分,csdn地址
也可以在大佬GitHub地址下载文件:GitHub地址

我选择直接粘贴导入的方式:

导入情况如下图:
在这里插入图片描述

3.导入attrs.xml文件:

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <!-- ThumbnailMenu -->
    <declare-styleable name="SpinMenu">
        <attr name="scale_ratio" format="float" />
        <attr name="hint_text_color" format="color"/>
        <attr name="hint_text_size" format="dimension"/>
    </declare-styleable>

</resources>

导入完毕,确定你的文件都没有报红。

第三步:新建Fragment文件

如图所示:
在这里插入图片描述

1.先新建四个Fragment用于测试,删除多余的内容,添加onActivityCreated方法,其他四个Fragment也如图所示:

在这里插入图片描述

2.然后再在Fragment文件里面添加如下方法,用于功能的实现,其他Fragment也想对应修改:

在这里插入图片描述
在这里插入图片描述

3.修改Fragment的背景图片,让等下的效果能够看的更明显。

如图所示:
在这里插入图片描述

第四步:配置xml文件

解析如下:
在这里插入图片描述
代码如下,根据你自己的情况进行修改,可以看一下上面的代码解析:

<?xml version="1.0" encoding="utf-8"?>
<com.example.menu.smlibrary.SpinMenu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/spin_menu"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:hint_text_color="#FFFFFF"
    app:hint_text_size="14sp"
    app:scale_ratio="0.36"
    tools:context=".MainActivity">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#333a4a"></FrameLayout>

</com.example.menu.smlibrary.SpinMenu>

第五步:配置Activity文件

代码如下:

package com.example.menu;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentPagerAdapter;

import android.graphics.Color;
import android.os.Bundle;
import android.widget.Toast;

import com.example.menu.smlibrary.OnSpinMenuStateChangeListener;
import com.example.menu.smlibrary.SpinMenu;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private SpinMenu spinMenu;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        spinMenu = (SpinMenu) findViewById(R.id.spin_menu);   //初始化SpinMenu

        // 设置页面标题
        List<String> hintStrList = new ArrayList<>();
        hintStrList.add("热门信息");        //命名每个页面的名字
        hintStrList.add("实时新闻");           
        hintStrList.add("我的论坛");    
        hintStrList.add("我的信息");
        spinMenu.setHintTextStrList(hintStrList);     //设置页面的名字
        spinMenu.setHintTextColor(Color.parseColor("#FFFFFF"));  //设置字体为白色
        spinMenu.setHintTextSize(14);          //设置字体大小

        // 设置启动手势开启菜单
        spinMenu.setEnableGesture(true);

        // 设置页面适配器
        final List<Fragment> fragmentList = new ArrayList<>();
        fragmentList.add(BlankFragment.newInstance());
        fragmentList.add(BlankFragment2.newInstance());
        fragmentList.add(BlankFragment3.newInstance());
        fragmentList.add(BlankFragment4.newInstance());
        FragmentPagerAdapter fragmentPagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                return fragmentList.get(position);
            }

            @Override
            public int getCount() {
                return fragmentList.size();
            }
        };
        spinMenu.setFragmentAdapter(fragmentPagerAdapter);

        // 设置菜单状态改变时的监听器
        spinMenu.setOnSpinMenuStateChangeListener(new OnSpinMenuStateChangeListener() {
            @Override
            public void onMenuOpened() {
                Toast.makeText(MainActivity.this, "SpinMenu opened", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onMenuClosed() {
                Toast.makeText(MainActivity.this, "SpinMenu closed", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

第六步:运行看一下效果。

恭喜你,成功了,因为我的手机模拟器突然炸了,所有只能用本机来演示了。虽然效果非常酷炫,还有存在一点弊端,这也是我实践遇到的问题,就是不能和recyclerView的下拉加载一起用,会导致体验效果不是很好
在这里插入图片描述

标签:控件,fragmentList,Fragment,spinMenu,脑洞,add,导入,import
来源: https://blog.csdn.net/qq_45137584/article/details/111633906

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有