WheelPicker 사용자 정의 시간 선택 기 컨트롤
14001 단어 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"/>
페이지 코드:
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>
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
명령 history 에 시간 스탬프 보이 기history 는 매우 실 용적 인 셸 명령 입 니 다. 그러나 언제 어떤 사람 이 어떤 명령 을 실 행 했 는 지 알 아 보 는 것 은 매우 힘 든 것 같 습 니 다. 실행 하지 말 아야 한다 고 생각 하 는 명령...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.