All Projects → DavidProdinger → Weekdays-Selector

DavidProdinger / Weekdays-Selector

Licence: MIT license
Android Library for selecting Weekdays

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Weekdays-Selector

React Native Input Spinner
An extensible input number spinner component for react-native highly customizable. This component enhance a text input for entering numeric values, with increase and decrease buttons.
Stars: ✭ 155 (+369.7%)
Mutual labels:  selector
WeightedRandomSelector
Very fast C# class for weighted random picking.
Stars: ✭ 117 (+254.55%)
Mutual labels:  selector
selector
JSON Selector - fast and easy to use JSON selector
Stars: ✭ 74 (+124.24%)
Mutual labels:  selector
Jsonframe Cheerio
simple multi-level scraper json input/output for Cheerio
Stars: ✭ 196 (+493.94%)
Mutual labels:  selector
Bezierseekbar
Beautiful custom View, SeekBar selector, easy to use, and rich in customization.漂亮的区间选择器,贝塞尔曲线优雅实现
Stars: ✭ 252 (+663.64%)
Mutual labels:  selector
EasyAlbum
📷 A lightweight, pure-Swift library for pick up photo from your album.
Stars: ✭ 31 (-6.06%)
Mutual labels:  picker-library
Css What
a CSS selector parser
Stars: ✭ 134 (+306.06%)
Mutual labels:  selector
Sketch-SelectPlus
Sketch plugin to select different layers of specific types. It basically selects everything!
Stars: ✭ 20 (-39.39%)
Mutual labels:  selector
Swiftsoup
SwiftSoup: Pure Swift HTML Parser, with best of DOM, CSS, and jquery (Supports Linux, iOS, Mac, tvOS, watchOS)
Stars: ✭ 3,079 (+9230.3%)
Mutual labels:  selector
GWLPhotoSelector
相册照片多张选择控件
Stars: ✭ 50 (+51.52%)
Mutual labels:  selector
Tristatetogglebutton
Customizable tri-state toggle button (with three states, three state toggle) for Android
Stars: ✭ 198 (+500%)
Mutual labels:  selector
Redux Tiles
Composable way to create less verbose Redux code
Stars: ✭ 239 (+624.24%)
Mutual labels:  selector
SupperShape
🏡替代Shape和Selector和Layer-list的xml,减小apk体积
Stars: ✭ 57 (+72.73%)
Mutual labels:  selector
Goq
A declarative struct-tag-based HTML unmarshaling or scraping package for Go built on top of the goquery library
Stars: ✭ 192 (+481.82%)
Mutual labels:  selector
set-syntax
An Atom package that creates easy Command Palette commands for setting the syntax of the current file
Stars: ✭ 24 (-27.27%)
Mutual labels:  selector
Colored Time Selector
A smart colored time selector. Users can select just free time with a handy colorful range selector.
Stars: ✭ 156 (+372.73%)
Mutual labels:  selector
react-dom-inject
Binds an HTML element by selector to a ReactElement and renders to a DOM tree (with redux injection)
Stars: ✭ 18 (-45.45%)
Mutual labels:  selector
rofi-fontawesome
fontawesome icon list for rofi dmenu
Stars: ✭ 58 (+75.76%)
Mutual labels:  selector
photoselect
No description or website provided.
Stars: ✭ 39 (+18.18%)
Mutual labels:  selector
SKChoosePopView
SKChoosePopView是一个HUD风格的可定制化选项弹窗的快速解决方案,集成了上、下、左、右、中5个进场方向的6种动画效果,如果不能满足你对酷炫效果的需要,SKChoosePopView同样支持自定义动画,以及选择记录、动画的开闭、点击特效、行列数量控制等
Stars: ✭ 70 (+112.12%)
Mutual labels:  selector

Weekdays-Selector

Widget for selecting the weekdays

JitPack

Screenshots

Screenshot

Installation

Gradle

Add the JitPack repository to your root build.gradle file

allprojects {
    repositories {
        // ...
        maven { url 'https://jitpack.io' }
    }
}

Add the dependency

dependencies {
    implementation 'com.github.DavidProdinger:weekdays-selector:1.1.1'
}

Maven

Add the JitPack repository to your build file

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

Add the dependency

<dependency>
    <groupId>com.github.DavidProdinger</groupId>
    <artifactId>weekdays-selector</artifactId>
    <version>1.1.1</version>
</dependency>

Usage

In your layout file

<com.dpro.widgets.WeekdaysPicker
    android:id="@+id/weekdays"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:sunday_first_day="false" />

Your Java file

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // ...

        WeekdaysPicker widget = (WeekdaysPicker) findViewById(R.id.weekdays);
        widget.setOnWeekdaysChangeListener(new OnWeekdaysChangeListener() {
            @Override
            public void onChange(View view, int clickedDayOfWeek, List<Integer> selectedDays) {
                // Do Something
            }
        });
        
        // ...
    }
    
    // ...
}

Configuration

Layout file

  • enabled: If user is allowed to select weekdays (default=true)
  • highlight_color: Color of selected days and unselected Text (default=Color.RED)
  • background_color: Background-Color of unselected days (default=Color.LTGRAY)
  • text_color: Color of selected days text (default=Color.WHITE)
  • text_unselected_color: Color of unselected days text (default=highlight_color)
  • sunday_first_day: Starting with Sunday or Monday (default=true)
  • show_weekend: Display weekend (Satuarday and Sunday) (default=true)
  • weekenddarker: Allows that weekend has another color (default=false)
  • weekend_color: Background-Color from unselected Weekend (default=Color.GRAY)
  • weekend_text_color: Set the unselected text color from the weekend (default=highlight_color)
  • full_size: Shows the days with the dayname (f.e. Mo.) and in a rectangle form (default=false)
  • recurrence: Shows a spinner to select the week recurrence (default=false)
  • border_color: Set the Border-Color from unselected days (default=-1 no border)
  • border_thickness: Set the Border-Thickness from unselected days (default=4)
  • border_highlight_color: Set the Border-Color from selected days (default=-1 no border)
  • border_highlight_thickness: Set the Border-Thickness from selected days (default=4)

Methods and Functions

Assuming widget is an WeekdaysPicker object

WeekdaysPicker widget = (WeekdaysPicker) findViewById(R.id.weekdays);

OnChange Listener

widget.setOnWeekdaysChangeListener(new OnWeekdaysChangeListener() {
    @Override
    public void onChange(View view, int clickedDayOfWeek, List<Integer> selectedDays) {
        // Do Something
    }
});

OnWeekRecurrenceChange Listener

widget.setOnWeekRecurrenceChangeListener(new OnWeekRecurrenceChangeListener() {
    @Override
    public void onWeekChange(View view, List<Integer> selectedDays, int even_week) {
        // Do something else
        switch (even_week) {
            case WeekdaysPicker.ALL:
                // if all weeks selected
                break;
            case WeekdaysPicker.ODD:
                // if odd weeks selected
                break;
            case WeekdaysPicker.EVEN:
                // if even weeks selected
                break;
        } 
    }
});

Get selected Days

Returns selected Days as Integer-List according to Calendar.MONDAY, Calendar.TUESDAY and so on

List<Integer> selectedDays = widget.getSelectedDays();

Get selected Days as Text

Returns selected Days as Text Optional: Set locale

List<String> selectedDays = widget.getSelectedDaysText();

Select Days

Accept Integer-List of days you would like to select

List<Integer> days = Arrays.asList(Calendar.MONDAY, Calendar.WEDNESDAY, Calendar.FRIDAY, Calendar.SUNDAY);

widget.setSelectedDays(days);

Select one Day

Select day by Integer of Day (eg. Calendar.SUNDAY)

widget.selectDay(Calendar.SUNDAY);

Check if all Days are selected

onCreate

if (widget.allDaysSelected()){
    // Do Something
}

onChange

widget.setOnWeekdaysChangeListener(new OnWeekdaysChangeListener() {
    @Override
    public void onChange(View view, int clickedDayOfWeek, List<Integer> selectedDays) {
        if (selectedDays.size() == 7){
            // Do Something
        }
    }
});

Check if no Day is selected

onCreate

if (widget.noDaySelected()){
    // Do Something
}

onChange

widget.setOnWeekdaysChangeListener(new OnWeekdaysChangeListener() {
    @Override
    public void onChange(View view, int clickedDayOfWeek, List<Integer> selectedDays) {
        if (selectedDays.size() == 0){
            // Do Something
        }
    }
});

Check if Selector is editable

if (widget.isInEditMode()){
    // Do Something
}

Set editable

// Enable the widget
widget.setEditable(true);

// Disable the widget
widget.setEditable(false);

Set custom days:

// Integer = CalendarDay, Boolean = selected
LinkedHashMap<Integer, Boolean> map = new LinkedHashMap<>();
mp.put(SUNDAY, true);
mp.put(SATURDAY, true); //counting
mp.put(THURSDAY, false);
mp.put(FRIDAY, true);
mp.put(TUESDAY, true);
mp.put(SATURDAY, false); //For duplicated values, the first one is counting, but the last one is updating the selected value

//Add the custom map
widget.setCustomDays(map);

// To disable the custom days:
widget.setCustomDays(null);

Other Methods (for all Setter it gives a Getter):

widget.setHighlightColor(Color.RED);
widget.setBackgroundColor(Color.LTGRAY);
widget.setWeekendColor(Color.GRAY);
widget.setTextColor(Color.WHITE);
widget.setTextUnselectedColor(Color.WHITE);
widget.setSundayFirstDay(true);
widget.setShowWeekend(true);
widget.setRecurrence(true);
widget.setWeekendDarker(true);
widget.setWeekendTextColor(Color.WHITE);
widget.setBorderColor(Color.BLUE);
widget.setBorderThickness(3);
widget.setBorderHighlightColor(Color.MAGENTA);
widget.setBorderHighlightThickness(10);
widget.setFullSize(true);
widget.setSelectOnlyOne(true);
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].