WheelPicker 사용자 정의 시간 선택 기 컨트롤

본 논문 의 사례 는 WheelPicker 사용자 정의 시간 선택 기 컨트롤 의 구체 적 인 코드 를 공유 하여 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
먼저 위의 그림:

안 드 로 이 드 가 자체 적 으로 가지 고 있 는 DatePicker 컨트롤 을 사용 하 는 것 도 기능 이 가능 하지만 스타일 은 바 꿀 수 없습니다.사용자 정의 스타일 을 구현 하려 면 WheelPicker 를 사용 해 야 합 니 다.
WheelPicker 를 사용 하려 면 WheelPicker 의 인용 을 가 져 와 야 합 니 다.
1.procject 의 build.gradle 에 다음 코드 를 추가 합 니 다.

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}
2.Module 의 build.gradle 에 의존 도 를 추가

compile 'com.github.open-android:WheelPicker:v1.0.0'
3.다음 코드 를 xml 로 복사 합 니 다.

<com.itheima.wheelpicker.WheelPicker
    android:id="@+id/wheel_date_picker_month"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="16dp"
    app:wheel_atmospheric="true"
    app:wheel_curved="true"
    app:wheel_cyclic="true"
    app:wheel_selected_item_position="5"
    app:wheel_item_text_color="@color/text_white"
    app:wheel_selected_item_text_color="@color/orange"/>
  • wheel_atmospheric :  항목 색상 연결 처리 효과 가 더 좋 습 니까?
  • wheel_curved:호형 상태 표시 여부
  • wheel_cyclic:순환 가능 여부
  • wheel_selected_item_position:기본적으로 몇 번 째 항목 을 선택 하 십시오
  • 그리고 사용 하면 됩 니 다.
    페이지 코드:
    
    package com.example.castedemo.user;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.DatePicker;
    
    import com.example.castedemo.R;
    
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.List;
    
    import butterknife.BindView;
    import butterknife.ButterKnife;
    
    import com.example.castedemo.user.bean.DayBean;
    import com.itheima.wheelpicker.WheelPicker;
    
    public class BirthdayActivity extends Activity {
        private static final String TAG = "BirthdayActivity";
    
        @BindView(R.id.wheel_date_picker_year)
        WheelPicker wheelDatePickerYear;
        @BindView(R.id.wheel_date_picker_month)
        WheelPicker wheelDatePickerMonth;
        @BindView(R.id.wheel_date_picker_day)
        WheelPicker wheelDatePickerDay;
        List<Integer> yearList = new ArrayList<Integer>();
        List<Integer> monthList = new ArrayList<Integer>();
        int[] dayArr = {31,28,31,30,31,30,31,31,30,31,30,31};
        int[] runDayArr = {31,29,31,30,31,30,31,31,30,31,30,31};
        List<DayBean> dayBeans = new ArrayList<DayBean>();
        List<DayBean> runDayBeans = new ArrayList<DayBean>();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_birthday);
            ButterKnife.bind(this);
            initWheelDate();
            wheelDatePickerYear.setOnWheelChangeListener(new WheelPicker.OnWheelChangeListener() {
                @Override
                public void onWheelScrolled(int i) {
    
                }
    
                @Override
                public void onWheelSelected(int i) {
                    updateYearValue(i+1900);
                }
    
                @Override
                public void onWheelScrollStateChanged(int i) {
    
                }
            });
            wheelDatePickerMonth.setOnWheelChangeListener(new WheelPicker.OnWheelChangeListener() {
                @Override
                public void onWheelScrolled(int i) {
    
                }
    
                @Override
                public void onWheelSelected(int i) {
                    int year = wheelDatePickerYear.getCurrentItemPosition()+1900;
                    Log.e(TAG,"month i="+i);
                    updateDayValue(year,i);
                }
    
                @Override
                public void onWheelScrollStateChanged(int i) {
    
                }
            });
        }
    
        public void initWheelDate() {
            Calendar calendar = Calendar.getInstance();
            Log.e(TAG,"calendar = "+calendar.toString());
            // 
            for(int i=1900;i<2018;i++){
                yearList.add(i);
            }
            wheelDatePickerYear.setData(yearList);
            // 
            for(int i=0;i<12;i++){
                monthList.add(i+1);
            }
            wheelDatePickerMonth.setData(monthList);
            wheelDatePickerYear.setSelectedItemPosition(calendar.get(Calendar.YEAR));
            wheelDatePickerMonth.setSelectedItemPosition(calendar.get(Calendar.MONTH));
            // 
            updateYearValue(wheelDatePickerYear.getCurrentItemPosition()+1900);
            wheelDatePickerDay.setSelectedItemPosition(calendar.get(Calendar.DAY_OF_MONTH)-1);
    
    
        }
    
        /*
        *            
        * */
        public void updateYearValue(int year){
            int month = wheelDatePickerMonth.getCurrentItemPosition();
            if(isRunYear(year)){
                for(int i=0;i<12;i++){
                    DayBean dayBean = new DayBean();
                    dayBean.setMonth(i+1);
                    List<Integer> rundayList = new ArrayList<Integer>();
                    for(int j=1;j<=runDayArr[i];j++){
                        rundayList.add(j);
                        dayBean.setDay(rundayList);
                    }
                    runDayBeans.add(dayBean);
    //                Log.e(TAG,"rundaybeans="+runDayBeans.get(i).getMonth()+",days="+runDayBeans.get(i).getDay().toArray());
                    if(month ==i){
                        wheelDatePickerDay.setData(runDayBeans.get(month).getDay());
                    }
                }
            }else{
                for(int i=0;i<12;i++){
                    DayBean dayBean = new DayBean();
                    dayBean.setMonth(i+1);
                    List<Integer> dayList = new ArrayList<Integer>();
                    for(int j=1;j<=dayArr[i];j++){
                        dayList.add(j);
                        dayBean.setDay(dayList);
                    }
                    dayBeans.add(dayBean);
    //                Log.e(TAG,"daybeans="+dayBeans.get(i).getMonth()+",day="+dayBeans.get(i).getDay());
                    if(month ==i){
                        wheelDatePickerDay.setData(dayBeans.get(month).getDay());
                    }
                }
            }
        }
    
        /*
        *               
        * */
        public void updateDayValue(int year,int month){
            if(isRunYear(year)){
                for(int i=0;i<runDayBeans.size();i++){
                    if(month == i){
                        wheelDatePickerDay.setData(runDayBeans.get(i).getDay());
                    }
                }
            }else{
                for(int i=0;i<dayBeans.size();i++){
                    if(month == i){
                        wheelDatePickerDay.setData(dayBeans.get(i).getDay());
                    }
                }
            }
        }
    
        public boolean isRunYear(int year){
            if(year%4==0 && year%100 !=0 ||year%400 ==0){
                System.out.println(year +"   ");
                return true;
            } else{
                System.out.println(year +"    !");
                return false;
            }
        }
    }
    레이아웃 파일:
    
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 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:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.castedemo.user.BirthdayActivity">
        <TextView
            android:text="    "
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="48dp" />
        <View
            android:layout_above="@+id/ll_birth"
            android:layout_marginBottom="20dp"
            android:background="@color/text_gray"
            android:layout_width="match_parent"
            android:layout_height="0.3dp"/>
        <LinearLayout
            android:id="@+id/ll_birth"
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <com.itheima.wheelpicker.WheelPicker
                android:id="@+id/wheel_date_picker_year"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:wheel_atmospheric="true"
                app:wheel_curved="true"
                app:wheel_cyclic="true"
                app:wheel_selected_item_position="5"
                app:wheel_item_text_color="@color/text_white"
                app:wheel_selected_item_text_color="@color/orange"/>
            <TextView
                android:text=" "
                android:layout_marginLeft="6dp"
                android:layout_gravity="center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
            <com.itheima.wheelpicker.WheelPicker
                android:id="@+id/wheel_date_picker_month"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="16dp"
                app:wheel_atmospheric="true"
                app:wheel_curved="true"
                app:wheel_cyclic="true"
                app:wheel_selected_item_position="5"
                app:wheel_item_text_color="@color/text_white"
                app:wheel_selected_item_text_color="@color/orange"/>
            <TextView
                android:text=" "
                android:layout_marginLeft="6dp"
                android:layout_gravity="center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
            <com.itheima.wheelpicker.WheelPicker
                android:id="@+id/wheel_date_picker_day"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:wheel_atmospheric="true"
                android:layout_marginLeft="16dp"
                app:wheel_curved="true"
                app:wheel_cyclic="true"
                app:wheel_selected_item_position="5"
                app:wheel_item_text_color="@color/text_white"
                app:wheel_selected_item_text_color="@color/orange"/>
            <TextView
                android:text=" "
                android:layout_marginLeft="6dp"
                android:layout_gravity="center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
        <View
            android:id="@+id/view_bottom"
            android:layout_below="@+id/ll_birth"
            android:layout_marginTop="20dp"
            android:background="@color/text_gray"
            android:layout_width="match_parent"
            android:layout_height="0.3dp"/>
    
        <LinearLayout
            android:layout_marginTop="30dp"
            android:layout_below="@+id/view_bottom"
            android:gravity="center_horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <Button
                android:id="@+id/btn_cancel"
                android:textColor="@color/text_white"
                android:background="@drawable/border_trans_style"
                android:text="  "
                android:padding="5dp"
                android:layout_width="60dp"
                android:layout_height="wrap_content" />
            <Button
                android:id="@+id/btn_save"
                android:background="@drawable/border_trans_style"
                android:textColor="@color/text_white"
                android:text="  "
                android:padding="5dp"
                android:layout_marginLeft="20dp"
                android:layout_width="60dp"
                android:layout_height="wrap_content" />
        </LinearLayout>
     
    
    </RelativeLayout>
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기