Android開源項目滾輪選擇器WheelPicker的基本用法總結
2020年07月17日
| 萬仟網IT程式設計
|
我要評論
1. 添加依賴在Project的build.gradle中,添加maven { url ‘https:jitpack.io’}在相關Module(一般是Module:app)的build.gradle中,添加implementation 'cn.aigestudio.wheelpicker:WheelPicker:1.1.3'注意不是 implemention ‘com.github.open-android:WheelPicker:v1.0.0’,那篇文章(即百度WheelPicker排第一的簡書
1. 添加依賴
在Project的build.gradle中,添加maven { url 'https:jitpack.io'}
在相關Module(一般是Module:app)的build.gradle中,添加implementation 'cn.aigestudio.wheelpicker:WheelPicker:1.1.3'
注意不是 implemention ‘com.github.open-android:WheelPicker:v1.0.0’,那篇文章(即百度WheelPicker排第一的簡書那篇)我個人懷疑有高度借鑒的行為。
2. 基本用法
在xml檔案中設定WheelPicker。
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
android:id="@+id/wp"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="#ffffff"
app:wheel_item_text_size="16sp"
/>
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="btn1"
android:onClick="onClick"/>
設定一個實體類,模拟實際開發場景。
public class People {
private String name;
public People(String name){
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "People{" +
"name='" + name + '\'' +
'}';
}
}
然後在相關的java檔案中調用(這裡是demo,是以是MainActivity)
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = "MainActivity";
WheelPicker wheelPicker;
List list = new ArrayList<>();
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wheelPicker = findViewById(R.id.wp);
initData();
initWP(); // 必用的方法
//initWPShow(); //改變各種顯示狀态的方法
//initWPText(); //Text相關的顯示狀态
}
private void initData() {
list.add(new People("張三"));
list.add(new People("李四"));
list.add(new People("王五"));
list.add(new People("劉七"));
list.add(new People("鄧八"));
list.add(new People("趙九"));
}
private void initWP() {
// 通過setData方式設定資料集,不過此方法設定的資料在顯示時都會被自動轉換為String
// 如果資料傳入的是一個類的集合,那顯示時就會直接調用他的toString方法,此時就要重寫toString。
wheelPicker.setData(list);
//選擇監聽器,會監聽被選中的item(滑動停止後),需要自己做強制類型轉換
wheelPicker.setOnItemSelectedListener(new WheelPicker.OnItemSelectedListener() {
@Override
public void onItemSelected(WheelPicker picker, Object data, int position) {
Log.i(TAG, "onItemSelected: " + (People)data + " " + position);
}
});
//擷取目前的item,一樣要做強制類型轉換
People people = (People) wheelPicker.getData().get(wheelPicker.getCurrentItemPosition());
Log.i(TAG, "initWP: " + people);
//滾輪監聽器,滑動狀态監聽
wheelPicker.setOnWheelChangeListener(new WheelPicker.OnWheelChangeListener() {
@Override
public void onWheelScrolled(int offset) {
// 滑動距離,初始狀态(即一開始position=0時)為0
// 資料往上滑(即手往下滑)為正數,往下滑為負數
Log.i(TAG, "onWheelScrolled: " + offset);
}
@Override
public void onWheelSelected(int position) {
// 等同于選擇監聽器的onItemSelected,停止滑動時所在的position
Log.i(TAG, "onWheelSelected: " + position);
}
@Override
public void onWheelScrollStateChanged(int state) {
// 滾動狀态監聽器,0表示沒有在滑動,1表示觸屏造成的滑動,
// 2表示停止觸屏時造成的滑動(停止觸屏後的回彈)
Log.i(TAG, "onWheelScrollStateChanged: " + state);
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn:
//強制切換到標明的item,第二個參數表示跳轉是否顯示動畫,不傳時預設為true
wheelPicker.setSelectedItemPosition(3, true);
//wheelPicker.setSelectedItemPosition(3);
break;
}
}
}
3. 設定顯示效果
常用的顯示效果如下:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = "MainActivity";
WheelPicker wheelPicker;
List list = new ArrayList<>();
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wheelPicker = findViewById(R.id.wp);
initData();
initWP(); // 必用的方法
initWPShow(); //改變各種顯示狀态的方法
initWPText(); //Text相關的顯示狀态
}
private void initData() {
//省略剛才出現過的代碼
}
private void initWP() {
//省略剛才出現過的代碼
}
private void initWPShow() {
// 設定資料是否循環顯示
wheelPicker.setCyclic(true);
// 檢視是否循環顯示
wheelPicker.isCyclic();
//設定是否有訓示器,設定後選中項的上下會用線框柱
wheelPicker.setIndicator(true);
wheelPicker.setIndicatorColor(0xFF123456); //16進制
wheelPicker.setIndicatorSize(3); //機關是px
// 設定是否有幕布,設定後選中項會被指定的顔色覆寫,預設false
wheelPicker.setCurtain(false);
wheelPicker.setCurtainColor(0xFF777777);
// 設定是否有空氣感,設定後上下邊緣會漸變為透明,預設false
wheelPicker.setAtmospheric(true);
// 設定是否有卷曲感,不能微調卷曲幅度,預設false
wheelPicker.setCurved(true);
// 設定item的排列,左中右,預設中
wheelPicker.setItemAlign(WheelPicker.ALIGN_CENTER);
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
private void initWPText() {
// 設定選中項的字色,16進制(0xFF+16進制的rgb)
wheelPicker.setSelectedItemTextColor(0xFF000000);
// 設定字型大小,字型顔色
wheelPicker.setItemTextColor(0xFF888888);
wheelPicker.setItemTextSize(30); // 機關px,需要自己做sp轉px,也可以在xml中直接設定sp
// 設定字型排列方式,同普通textView,一般兩行以上的資料才有效果
wheelPicker.setTextAlignment(TEXT_ALIGNMENT_TEXT_START);
}
}
參考材料
還有WheelPicker的源碼。
本文位址:https://blog.csdn.net/qq_41872247/article/details/107364456
版權聲明:本文内容由網際網路使用者貢獻,該文觀點僅代表作者本人。本站僅提供資訊存儲服務,不擁有所有權,不承擔相關法律責任。
如發現本站有涉嫌抄襲侵權/違法違規的内容, 請發送郵件至 [email protected] 舉報,一經查實将立刻删除。
相關文章:
java continue break 制作簡單聊天室程式,屏蔽不文明語言,顯示每句話聊天時間
package com.s...
前言 同源政策:判斷是否是同源的,主要看這三點,協定,ip,端口。 同源政策就是浏覽器出于網站安全性的考慮,限制不同源之間的資源互相通路的一種政策。...
spring profile 多環境配置管理
現象
如果在開發時進行一些資料庫測試,...
java線程會議如下三種方式結束,結束後就處于死亡狀态
1、run()或者call()方法執行完成,線程正常結束;
2、線程抛出...
面向對象: 程式由對象構成,每個對象包含對使用者公開的特定功能部分(public)和隐藏實作部分(private)。 類: 構造對象的模闆 對象: 對...
AOP簡介 AOP (Aspect Oriented Programing) 稱為:面向切面程式設計,它是一種程式設計思想。AOP 是 OOP(面向對象程式設計...
簡介該文檔主要介紹以nacos為配置中心,實作spring cloud gateway 實作動态路由的功能。spring cloud gateway啟動時候,就...
添加此plugin到項目的pom.xml中
...
一.理論準備 希爾排序(shell sort)是插入排序的一種,是針對直接插入排序算法的改進,是将整個無序列分割成若幹小的...
在上一篇部落格中分析了springBoot啟動流程,大體的輪廓隻是冰山一角。今天就來看一下springBoot的亮點功能:自動化裝配功能。 先從@Sp...
網友評論
驗證碼: