輪盤樣式的Fragment選單選擇控制元件
- 第一步:首先附上GitHub地址
- 第二步:匯入smlibrary
- 1.新建一個moudle或者project
- 2.匯入simlibrary,
- 我選擇直接粘貼匯入的方式:
- 3.匯入attrs.xml檔案:
- 第三步:新建Fragment檔案
- 1.先新建四個Fragment用于測驗,`洗掉多余的內容,添加onActivityCreated方法`,其他四個Fragment也如圖所示:
- 2.然后再在Fragment檔案里面添加如下方法,用于功能的實作,其他Fragment也想對應修改:
- 3.修改Fragment的背景圖片,讓等下的效果能夠看的更明顯,
- 第四步:配置xml檔案
- 第五步:配置Activity檔案
- 第六步:運行看一下效果,
第一步:首先附上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的下拉加載一起用,會導致體驗效果不是很好,

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/240079.html
標籤:其他
