woong's

Adnroid 날짜 선택 Widget 사용하기 본문

Develop/Android

Adnroid 날짜 선택 Widget 사용하기

dlsdnd345 2016. 2. 14. 19:12

Adnroid 날짜 선택 Widget 사용하기


안녕하세요. 이번에 날짜 선택 기능이 필요해서 작게 widget 하나 만들게 되어서

공유해 보려 합니다 .



1.위젯 형태



위젯의 모양은 위와 같습니다. 


1. 스크롤 후 스크롤이 멈췄을때 가운데로 올수 있도록 구현

2. 날짜를 선택했을때 가운데로 올수 잇도록 구현

3. 가운데로 왔을 경우 이벤트를 발생시켜 다음 액션을 할수 있도록 구현

4. 년,월 을 통해서 해당 요일 , 날짜 표시 구현

5. 날짜 값을 통해 해당 포지션으로 이동


3.부연설명


첨부파일에 프로젝트 첨부 했습니다.

첨부해서 보면 간단히 사용할수 있습니다 .


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.android.woong.calendardayview;
 
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.DisplayMetrics;
import android.widget.Toast;
 
import com.android.woong.calendardayview.listener.SelectedLisener;
import com.android.woong.calendardayview.view.DayListView;
 
public class MainActivity extends AppCompatActivity {
 
 
    private DayListView hzScheduleDayListView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        initLayout();
        init();
    }
 
 
    /**
     * 데이터 초기화
     */
    private void init(){
 
        initHzScheduleDayListView();
    }
 
 
    /**
     * 레이아웃 초기화
     */
    private void initLayout(){
 
        hzScheduleDayListView = (DayListView) findViewById(R.id.dayListView);
        //리스너 등록
        hzScheduleDayListView.setHzSelectedLisener(mSelectedLisener);
 
    }
 
 
    /**
     * hzScheduleDayListView 초기화
     */
    private void initHzScheduleDayListView(){
 
        hzScheduleDayListView.initDayView(getDeviceHorizontalCenter());
        //날짜를 입력 받아 해당 포지션으로 이동
        hzScheduleDayListView.changePosition("15");
    }
 
 
    /**
     * 디바이스 가로 길이 반환
     * @return
     */
    private int getDeviceHorizontalCenter(){
 
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        return metrics.widthPixels/2;
    }
 
 
    /**
     * DayView 스크롤이 움직이다가 멈췄을 경우
     */
    private SelectedLisener mSelectedLisener = new SelectedLisener(){
 
        @Override
        public void selected(String day) {
 
            Toast.makeText(getApplicationContext(), day + " 가 선택되었습니다.", Toast.LENGTH_SHORT).show();
        }
    };
 
}
 
 
 
cs


간단히 설명 드리면 , customView 를 xml 에 정의하고 객체를 생성합니다.

객체 생성시 디바이스의 중앙 값이 필요합니다.

초기화후 해당 포지션으로 이동 기능이 사용되었습니다.


리스너를 등록하면 스크롤이 중앙에 도착시 이벤트가 발생합니다.


이 프로젝트를 커스텀 하시려면 DayListView 를 커스텀 하시면 됩니다.


Comments