├── .gitignore
├── LICENSE.md
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── github
│ │ └── vardemin
│ │ └── countrypicker
│ │ ├── MainActivity.kt
│ │ ├── MainFragment.kt
│ │ ├── MainViewModel.kt
│ │ ├── PhoneEditConverter.kt
│ │ └── SecondFragment.kt
│ └── res
│ ├── drawable-v24
│ └── ic_launcher_foreground.xml
│ ├── drawable
│ └── ic_launcher_background.xml
│ ├── layout
│ ├── activity_main.xml
│ ├── fragment_main.xml
│ └── fragment_second.xml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── navigation
│ └── country_picker_navigation.xml
│ └── values
│ ├── colors.xml
│ ├── strings.xml
│ └── styles.xml
├── build.gradle
├── fastscroll
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── github
│ │ └── vardemin
│ │ └── fastscroll
│ │ ├── FastScroller.kt
│ │ ├── RecyclerViewScrollListener.kt
│ │ ├── SectionTitleProvider.kt
│ │ ├── Utils.kt
│ │ └── viewprovider
│ │ ├── DefaultBubbleBehavior.kt
│ │ ├── DefaultScrollViewProvider.kt
│ │ ├── ScrollerViewProvider.kt
│ │ └── VisibilityAnimationManager.kt
│ └── res
│ ├── animator
│ ├── fastscroll__default_hide.xml
│ └── fastscroll__default_show.xml
│ ├── drawable
│ ├── fastscroll__default_bubble.xml
│ └── fastscroll__default_handle.xml
│ ├── layout
│ └── fastscroll__default_bubble.xml
│ └── values
│ └── values.xml
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── materialcountrypicker
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── github
│ │ └── vardemin
│ │ └── materialcountrypicker
│ │ ├── Country.kt
│ │ ├── CountryPicker.kt
│ │ ├── CountryPickerActivity.kt
│ │ ├── CountryPickerAdapter.kt
│ │ ├── CountryPickerDialog.kt
│ │ ├── PhoneNumberEditText.kt
│ │ └── Util.kt
│ └── res
│ ├── drawable-nodpi
│ ├── _do.png
│ ├── ad.png
│ ├── ae.png
│ ├── af.png
│ ├── ag.png
│ ├── ai.png
│ ├── al.png
│ ├── am.png
│ ├── ao.png
│ ├── aq.png
│ ├── ar.png
│ ├── at.png
│ ├── au.png
│ ├── aw.png
│ ├── az.png
│ ├── ba.png
│ ├── bb.png
│ ├── bd.png
│ ├── be.png
│ ├── bf.png
│ ├── bg.png
│ ├── bh.png
│ ├── bi.png
│ ├── bj.png
│ ├── bl.png
│ ├── bm.png
│ ├── bn.png
│ ├── bo.png
│ ├── br.png
│ ├── bs.png
│ ├── bt.png
│ ├── bw.png
│ ├── by.png
│ ├── bz.png
│ ├── ca.png
│ ├── cc.png
│ ├── cd.png
│ ├── cf.png
│ ├── cg.png
│ ├── ch.png
│ ├── ci.png
│ ├── ck.png
│ ├── cl.png
│ ├── cm.png
│ ├── cn.png
│ ├── co.png
│ ├── cr.png
│ ├── cu.png
│ ├── cv.png
│ ├── cx.png
│ ├── cy.png
│ ├── cz.png
│ ├── de.png
│ ├── dj.png
│ ├── dk.png
│ ├── dm.png
│ ├── dz.png
│ ├── ec.png
│ ├── ee.png
│ ├── eg.png
│ ├── eh.png
│ ├── er.png
│ ├── es.png
│ ├── et.png
│ ├── fi.png
│ ├── fj.png
│ ├── fk.png
│ ├── fm.png
│ ├── fr.png
│ ├── ga.png
│ ├── gb.png
│ ├── gd.png
│ ├── ge.png
│ ├── gh.png
│ ├── gi.png
│ ├── gm.png
│ ├── gn.png
│ ├── gq.png
│ ├── gr.png
│ ├── gt.png
│ ├── gw.png
│ ├── gy.png
│ ├── hk.png
│ ├── hn.png
│ ├── hr.png
│ ├── ht.png
│ ├── hu.png
│ ├── id.png
│ ├── ie.png
│ ├── il.png
│ ├── in.png
│ ├── iq.png
│ ├── ir.png
│ ├── is.png
│ ├── it.png
│ ├── jm.png
│ ├── jo.png
│ ├── jp.png
│ ├── ke.png
│ ├── kg.png
│ ├── kh.png
│ ├── ki.png
│ ├── km.png
│ ├── kn.png
│ ├── kp.png
│ ├── kr.png
│ ├── ks.png
│ ├── kw.png
│ ├── kz.png
│ ├── la.png
│ ├── lb.png
│ ├── lc.png
│ ├── li.png
│ ├── lk.png
│ ├── lr.png
│ ├── ls.png
│ ├── lt.png
│ ├── lu.png
│ ├── lv.png
│ ├── ly.png
│ ├── ma.png
│ ├── mc.png
│ ├── md.png
│ ├── me.png
│ ├── mg.png
│ ├── mh.png
│ ├── mk.png
│ ├── ml.png
│ ├── mm.png
│ ├── mn.png
│ ├── mr.png
│ ├── mt.png
│ ├── mu.png
│ ├── mv.png
│ ├── mw.png
│ ├── mx.png
│ ├── my.png
│ ├── mz.png
│ ├── na.png
│ ├── ne.png
│ ├── ng.png
│ ├── ni.png
│ ├── nl.png
│ ├── no.png
│ ├── np.png
│ ├── nr.png
│ ├── nz.png
│ ├── om.png
│ ├── pa.png
│ ├── pe.png
│ ├── pg.png
│ ├── ph.png
│ ├── pk.png
│ ├── pl.png
│ ├── pt.png
│ ├── pw.png
│ ├── py.png
│ ├── qa.png
│ ├── ro.png
│ ├── rs.png
│ ├── ru.png
│ ├── rw.png
│ ├── sa.png
│ ├── sb.png
│ ├── sc.png
│ ├── sd.png
│ ├── se.png
│ ├── sg.png
│ ├── si.png
│ ├── sk.png
│ ├── sl.png
│ ├── sm.png
│ ├── sn.png
│ ├── so.png
│ ├── sr.png
│ ├── st.png
│ ├── sv.png
│ ├── sy.png
│ ├── sz.png
│ ├── td.png
│ ├── tg.png
│ ├── th.png
│ ├── tj.png
│ ├── tl.png
│ ├── tm.png
│ ├── tn.png
│ ├── to.png
│ ├── tr.png
│ ├── tt.png
│ ├── tv.png
│ ├── tw.png
│ ├── tz.png
│ ├── ua.png
│ ├── ug.png
│ ├── us.png
│ ├── uy.png
│ ├── uz.png
│ ├── va.png
│ ├── vc.png
│ ├── ve.png
│ ├── vn.png
│ ├── vu.png
│ ├── ws.png
│ ├── ye.png
│ ├── za.png
│ ├── zm.png
│ └── zw.png
│ ├── drawable
│ ├── ccp_selectable_bg.xml
│ ├── flag_tp.xml
│ ├── flag_transparent.png
│ ├── fo.png
│ ├── gf.png
│ ├── gl.png
│ ├── ic_arrow_drop_down.xml
│ ├── ic_backspace_black_24dp.xml
│ ├── ic_clear_black.xml
│ ├── ic_search_black.xml
│ ├── im.png
│ ├── ky.png
│ ├── mo.png
│ ├── mq.png
│ ├── ms.png
│ ├── nc.png
│ ├── nu.png
│ ├── pf.png
│ ├── picker_chip_bg.xml
│ ├── pm.png
│ ├── pn.png
│ ├── pr.png
│ ├── ps.png
│ ├── re.png
│ ├── sx.png
│ ├── tc.png
│ ├── tk.png
│ ├── vg.png
│ ├── vi.png
│ └── wf.png
│ ├── layout
│ ├── activity_country_picker.xml
│ ├── dialog_country_picker.xml
│ ├── header.xml
│ ├── item.xml
│ ├── picker_ui.xml
│ └── picker_view.xml
│ ├── menu
│ └── picker_dialog.xml
│ ├── raw
│ └── english.json
│ └── values
│ ├── attrs.xml
│ ├── color.xml
│ ├── dimen.xml
│ ├── dimens.xml
│ ├── strings.xml
│ └── style.xml
├── screenshots
├── screen1.jpg
└── screen2.jpg
├── sectionedrecycleradapter
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ └── com
│ └── github
│ └── vardemin
│ └── sectionedrecycleradapter
│ ├── ItemCoord.kt
│ ├── ItemProvider.kt
│ ├── PositionManager.kt
│ ├── SectionViewHolder.kt
│ └── SectionedRecyclerViewAdapter.kt
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.apk
3 | *.ap_
4 | *.aab
5 |
6 | # Files for the ART/Dalvik VM
7 | *.dex
8 |
9 | # Java class files
10 | *.class
11 |
12 | # Generated files
13 | bin/
14 | gen/
15 | out/
16 |
17 | # Gradle files
18 | .gradle/
19 | build/
20 |
21 | # Local configuration file (sdk path, etc)
22 | local.properties
23 |
24 | # Proguard folder generated by Eclipse
25 | proguard/
26 |
27 | # Log Files
28 | *.log
29 |
30 | # Android Studio Navigation editor temp files
31 | .navigation/
32 |
33 | # Android Studio captures folder
34 | captures/
35 |
36 | # IntelliJ
37 | *.iml
38 | .idea/
39 |
40 | # Keystore files
41 | # Uncomment the following lines if you do not want to check your keystore files in.
42 | #*.jks
43 | #*.keystore
44 |
45 | # External native build folder generated in Android Studio 2.2 and later
46 | .externalNativeBuild
47 |
48 | # Google Services (e.g. APIs or Firebase)
49 | # google-services.json
50 |
51 | # Freeline
52 | freeline.py
53 | freeline/
54 | freeline_project_description.json
55 |
56 | # fastlane
57 | fastlane/report.xml
58 | fastlane/Preview.html
59 | fastlane/screenshots
60 | fastlane/test_output
61 | fastlane/readme.md
62 |
63 | # Version control
64 | vcs.xml
65 |
66 | # lint
67 | lint/intermediates/
68 | lint/generated/
69 | lint/outputs/
70 | lint/tmp/
71 | # lint/reports/
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2019 Vladimir Akopzhanian
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # MaterialCountryPicker
2 | Country (ISO/phone code) picker library based on EditText (TextInputEditText). [Fresh port to kotlin androidx of https://github.com/jerryOkafor/CountryPicker]
3 | Why edittext? - Ready implementation for material input field. Just wrap this widget with TextInputLayout.
4 |
5 | [](https://jitpack.io/#vardemin/MaterialCountryPicker)
6 |
7 | ## Showcase
8 |
9 |
10 |
11 |
12 |
13 | ## Quick Setup
14 | ### 1. Include library
15 |
16 | **Using Gradle**
17 |
18 | MaterialCountryPicker is currently available in on Jitpack so add the following line before every other thing if you have not done that already.
19 |
20 | ```gradle
21 | allprojects {
22 | repositories {
23 | ...
24 | maven { url 'https://jitpack.io' }
25 | }
26 | }
27 | ```
28 |
29 | Then add the following line
30 |
31 | ``` gradle
32 | dependencies {
33 | implementation 'com.github.vardemin.MaterialCountryPicker:materialcountrypicker:0.2.3'
34 | }
35 | ```
36 |
37 | ### 2. Usage
38 | In your XML layout include the TimelineView as follows:
39 |
40 | ```xml
41 |
62 |
63 | ```
64 |
65 | ## Data Binding
66 | ### 1. Define converter methods
67 | ```kotlin
68 | object PhoneEditConverter {
69 | @InverseMethod("toNumber") //in case of two-way binding
70 | @JvmStatic
71 | fun toString( //read number
72 | view: PhoneNumberEditText,
73 | value: String? //input number
74 | ): String? {
75 | return PhoneNumberEditText.fromTextNumber(view, value ?: "")
76 | }
77 |
78 | @JvmStatic
79 | fun toNumber( //write number
80 | view: PhoneNumberEditText,
81 | value: String? //can be ignored
82 | ): String? {
83 | return PhoneNumberEditText.toTextNumber(view)
84 | }
85 | }
86 | ```
87 | ### 2. Layout binding
88 | Import type
89 | ```xml
90 |
91 |
92 |
93 | ```
94 | Link converter method
95 | ```xml
96 |
110 | ```
111 |
112 | ## XML Attributes
113 |
114 | List of xml attribues that are available in PhoneNumberEdittext
115 |
116 | | XML Attribute | Description | Default |
117 | | ------------- |:---------------:|:---------:|
118 | | cp_autoDetectCountry | Enables auto detection of the country the device is currently being used | true|
119 | |cp_searchAllowed|Enables search functionality in the CountryPicker.|true
120 | |cp_convertPlusTo|String replacing "+" character. null - disabled.|null
121 | |cp_showFastScroll|Determines whether the Fastscroller button is show or not.|true
122 | |cp_dialogKeyboardAutoPopup|Use this to toggle Kwyboard auto popup for CountryPicker in dialog mode. |true
123 | |cp_showFullScreeDialog|Use this to switch between Dialog and full screen Pickers| false
124 | |cp_allowedSymbols|Additional allowed symbols (used in phoneInputFilter filter, u can override it in "filters")| "-"
125 | |cp_showCountryCodeInView|Dtermins whether the country code is shown in the EditText|true
126 | |cp_showCountryCodeInList|Determins whether the Country Code is shown in the picker list.|true
127 | |cp_showCountryDialCodeInView|Determind if the Country Dial code is shown in the view.|true
128 | |cp_showCountryDialCodeInList|Dtermins if the Country Code is show in the picker list.|true
129 | |cp_showCountryDropdownArrow|Dtermins if the Country Dropdown Arrow is shown near the flag.|false
130 | |cp_setCountryCodeBorder|Determins whether a fancy border is shown around the Picker view.|false
131 | |cp_defaultCountryName|Use this to specify the dafult country you want to show in the PickerView|Empty
132 | |cp_preferredCountries|Use this to enter comma seperated list of prefferd countries.|Empty
133 | |cp_fastScrollerBubbleColor| Sets the color of the fast scroller bubble color| #5e64ce
134 | |cp_listItemTextColor| Sets the color of the list item text| @android:color/secondary_text_light
135 | |cp_fullScreenToolbarColor| Sets the background color of the fullscreen toolbar| #008577
136 | |cp_fastScrollerBubbleTextAppearance|Sets the testAppearance of the fastScroller| TextAppearance.AppCompat.Medium|
137 | |cp_fastScrollerHandleColor|Sets the fastscroller handle color| #8f93d1
138 |
139 | ## License
140 |
141 | CountryPicker is distributed under the MIT license. [See LICENSE](https://github.com/vardemin/MaterialCountryPicker/blob/master/LICENSE.md) for details.
142 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.apk
3 | *.ap_
4 | *.aab
5 |
6 | # Files for the ART/Dalvik VM
7 | *.dex
8 |
9 | # Java class files
10 | *.class
11 |
12 | # Generated files
13 | bin/
14 | gen/
15 | out/
16 |
17 | # Gradle files
18 | .gradle/
19 | build/
20 |
21 | # Local configuration file (sdk path, etc)
22 | local.properties
23 |
24 | # Proguard folder generated by Eclipse
25 | proguard/
26 |
27 | # Log Files
28 | *.log
29 |
30 | # Android Studio Navigation editor temp files
31 | .navigation/
32 |
33 | # Android Studio captures folder
34 | captures/
35 |
36 | # IntelliJ
37 | *.iml
38 | .idea/
39 |
40 | # Keystore files
41 | # Uncomment the following lines if you do not want to check your keystore files in.
42 | #*.jks
43 | #*.keystore
44 |
45 | # External native build folder generated in Android Studio 2.2 and later
46 | .externalNativeBuild
47 |
48 | # Google Services (e.g. APIs or Firebase)
49 | # google-services.json
50 |
51 | # Freeline
52 | freeline.py
53 | freeline/
54 | freeline_project_description.json
55 |
56 | # fastlane
57 | fastlane/report.xml
58 | fastlane/Preview.html
59 | fastlane/screenshots
60 | fastlane/test_output
61 | fastlane/readme.md
62 |
63 | # Version control
64 | vcs.xml
65 |
66 | # lint
67 | lint/intermediates/
68 | lint/generated/
69 | lint/outputs/
70 | lint/tmp/
71 | # lint/reports/
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | apply plugin: 'kotlin-android'
4 | apply plugin: 'kotlin-android-extensions'
5 | apply plugin: 'kotlin-kapt'
6 |
7 | androidExtensions {
8 | experimental = true
9 | }
10 |
11 | android {
12 | compileSdkVersion 28
13 | defaultConfig {
14 | applicationId "com.vardemin.countrypicker"
15 | minSdkVersion 16
16 | targetSdkVersion 28
17 | versionCode 1
18 | versionName "1.0"
19 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
20 | }
21 | buildTypes {
22 | release {
23 | minifyEnabled false
24 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
25 | }
26 | }
27 | compileOptions {
28 | sourceCompatibility JavaVersion.VERSION_1_8
29 | targetCompatibility JavaVersion.VERSION_1_8
30 | }
31 | androidExtensions {
32 | experimental = true
33 | }
34 |
35 | dataBinding {
36 | enabled = true
37 | }
38 | }
39 |
40 | dependencies {
41 | def nav_version = "2.1.0-alpha06"
42 | def lifecycle_version = "2.2.0-alpha02"
43 | implementation fileTree(dir: 'libs', include: ['*.jar'])
44 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
45 | implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
46 | implementation 'com.google.android.material:material:1.0.0'
47 | implementation 'androidx.core:core-ktx:1.2.0-alpha02'
48 |
49 | //NAVIGATION
50 | implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
51 | implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
52 |
53 | implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
54 | implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
55 | implementation "androidx.work:work-runtime-ktx:2.0.1"
56 |
57 | implementation project(path: ':materialcountrypicker')
58 | implementation 'androidx.legacy:legacy-support-v4:1.0.0'
59 | }
60 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/vardemin/countrypicker/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.countrypicker
2 |
3 | import androidx.appcompat.app.AppCompatActivity
4 | import android.os.Bundle
5 |
6 | class MainActivity : AppCompatActivity() {
7 |
8 | override fun onCreate(savedInstanceState: Bundle?) {
9 | super.onCreate(savedInstanceState)
10 | setContentView(R.layout.activity_main)
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/vardemin/countrypicker/MainFragment.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.countrypicker
2 |
3 |
4 | import android.app.Activity
5 | import android.content.Context
6 | import android.content.Intent
7 | import android.os.Bundle
8 | import androidx.fragment.app.Fragment
9 | import android.view.LayoutInflater
10 | import android.view.View
11 | import android.view.ViewGroup
12 | import androidx.lifecycle.ViewModelProviders
13 | import androidx.navigation.fragment.findNavController
14 | import com.github.vardemin.countrypicker.databinding.FragmentMainBinding
15 | import com.github.vardemin.materialcountrypicker.CountryPicker
16 | import com.github.vardemin.materialcountrypicker.PhoneNumberEditText
17 | import kotlinx.android.synthetic.main.fragment_main.*
18 |
19 |
20 | class MainFragment : Fragment() {
21 |
22 | private lateinit var viewModel: MainViewModel
23 |
24 | override fun onAttach(context: Context) {
25 | super.onAttach(context)
26 | viewModel = ViewModelProviders.of(activity!!).get(MainViewModel::class.java)
27 | }
28 |
29 | override fun onCreateView(
30 | inflater: LayoutInflater, container: ViewGroup?,
31 | savedInstanceState: Bundle?
32 | ): View? {
33 | val binding = FragmentMainBinding.inflate(inflater, container, false)
34 | val bindingView = binding.root
35 | binding.mainViewModel = viewModel
36 | return bindingView
37 | //return inflater.inflate(R.layout.fragment_main, container, false)
38 | }
39 |
40 |
41 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
42 | super.onViewCreated(view, savedInstanceState)
43 |
44 | editPhone.setOnStartActivityCallback(object : PhoneNumberEditText.OnStartActivityCallback{
45 | override fun onStartActivity(intent: Intent, requestCode: Int) {
46 | startActivityForResult(intent, requestCode)
47 | }
48 | })
49 |
50 | btnResult.setOnClickListener {
51 | val result = "Phone:\t${viewModel.paramsMap["phone"]}\nSecondPhone:\t${viewModel.paramsMap["secondPhone"]}\n"
52 | tvResult.text = result
53 | }
54 | btnNext.setOnClickListener { findNavController().navigate(R.id.secondFragment) }
55 | }
56 |
57 | override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
58 | super.onActivityResult(requestCode, resultCode, data)
59 | if (requestCode == CountryPicker.PICKER_REQUEST_CODE) {
60 | if (resultCode == Activity.RESULT_OK && data != null)
61 | editPhone.handleActivityResult(data)
62 | } else {
63 | super.onActivityResult(requestCode, resultCode, data)
64 | }
65 | }
66 |
67 | }
68 |
--------------------------------------------------------------------------------
/app/src/main/java/com/github/vardemin/countrypicker/MainViewModel.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.countrypicker
2 |
3 | import androidx.databinding.ObservableArrayMap
4 | import androidx.lifecycle.ViewModel
5 |
6 | class MainViewModel: ViewModel() {
7 | val paramsMap = ObservableArrayMap()
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/github/vardemin/countrypicker/PhoneEditConverter.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.countrypicker
2 |
3 | import androidx.databinding.InverseMethod
4 | import com.github.vardemin.materialcountrypicker.PhoneNumberEditText
5 |
6 |
7 | object PhoneEditConverter {
8 | @InverseMethod("toNumber")
9 | @JvmStatic
10 | fun toString(
11 | view: PhoneNumberEditText,
12 | value: String?
13 | ): String? {
14 | return PhoneNumberEditText.fromTextNumber(view, value ?: "")
15 | }
16 |
17 | @JvmStatic
18 | fun toNumber(
19 | view: PhoneNumberEditText,
20 | value: String?
21 | ): String? {
22 | return PhoneNumberEditText.toTextNumber(view)
23 | }
24 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/github/vardemin/countrypicker/SecondFragment.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.countrypicker
2 |
3 |
4 | import android.content.Context
5 | import android.os.Bundle
6 | import androidx.fragment.app.Fragment
7 | import android.view.LayoutInflater
8 | import android.view.View
9 | import android.view.ViewGroup
10 | import androidx.lifecycle.ViewModelProviders
11 | import androidx.navigation.fragment.findNavController
12 | import com.github.vardemin.countrypicker.databinding.FragmentSecondBinding
13 | import kotlinx.android.synthetic.main.fragment_second.*
14 |
15 |
16 | class SecondFragment : Fragment() {
17 |
18 | private lateinit var viewModel: MainViewModel
19 |
20 | override fun onAttach(context: Context) {
21 | super.onAttach(context)
22 | viewModel = ViewModelProviders.of(activity!!).get(MainViewModel::class.java)
23 | }
24 |
25 |
26 | override fun onCreateView(
27 | inflater: LayoutInflater, container: ViewGroup?,
28 | savedInstanceState: Bundle?
29 | ): View? {
30 | val binding = FragmentSecondBinding.inflate(inflater, container, false)
31 | val bindingView = binding.root
32 | binding.mainViewModel = viewModel
33 | return bindingView
34 | // Inflate the layout for this fragment
35 | //return inflater.inflate(R.layout.fragment_second, container, false)
36 | }
37 |
38 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
39 | super.onViewCreated(view, savedInstanceState)
40 |
41 | btnResult.setOnClickListener {
42 | val result = "Phone:\t${viewModel.paramsMap["phone"]}\nSecondPhone:\t${viewModel.paramsMap["secondPhone"]}\n"
43 | tvResult.text = result
44 | }
45 | btnBack.setOnClickListener { findNavController().popBackStack() }
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
70 |
75 |
80 |
85 |
90 |
95 |
100 |
105 |
110 |
115 |
120 |
125 |
130 |
135 |
140 |
145 |
150 |
155 |
160 |
165 |
170 |
171 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
12 |
13 |
14 |
20 |
21 |
32 |
33 |
47 |
48 |
58 |
59 |
64 |
65 |
71 |
76 |
77 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_second.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
12 |
13 |
14 |
20 |
21 |
32 |
33 |
46 |
47 |
57 |
58 |
63 |
64 |
70 |
75 |
76 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/navigation/country_picker_navigation.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #008577
4 | #00574B
5 | #D81B60
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | MaterialCountryPicker
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | ext.kotlin_version = '1.3.50'
5 | repositories {
6 | google()
7 | jcenter()
8 |
9 | }
10 | dependencies {
11 | classpath 'com.android.tools.build:gradle:3.4.2'
12 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
13 | classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
14 | // NOTE: Do not place your application dependencies here; they belong
15 | // in the individual module build.gradle files
16 | }
17 | }
18 |
19 | allprojects {
20 | repositories {
21 | google()
22 | jcenter()
23 |
24 | }
25 | }
26 |
27 | task clean(type: Delete) {
28 | delete rootProject.buildDir
29 | }
30 |
--------------------------------------------------------------------------------
/fastscroll/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/fastscroll/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'kotlin-android'
3 | apply plugin: 'kotlin-android-extensions'
4 | apply plugin: 'com.github.dcendents.android-maven'
5 | group = 'com.github.vardemin'
6 | version = "$materialcountrypicker_version"
7 |
8 | android {
9 | compileSdkVersion 28
10 |
11 |
12 | defaultConfig {
13 | minSdkVersion 16
14 | targetSdkVersion 28
15 | versionCode 1
16 | versionName "1.0"
17 |
18 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
19 |
20 | }
21 |
22 | buildTypes {
23 | release {
24 | minifyEnabled false
25 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
26 | }
27 | }
28 | compileOptions {
29 | sourceCompatibility JavaVersion.VERSION_1_8
30 | targetCompatibility JavaVersion.VERSION_1_8
31 | }
32 | }
33 |
34 | dependencies {
35 | implementation fileTree(dir: 'libs', include: ['*.jar'])
36 |
37 | implementation 'androidx.recyclerview:recyclerview:1.0.0'
38 | implementation 'androidx.core:core-ktx:1.2.0-alpha02'
39 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
40 | }
41 |
--------------------------------------------------------------------------------
/fastscroll/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/fastscroll/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/fastscroll/src/main/java/com/github/vardemin/fastscroll/RecyclerViewScrollListener.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.fastscroll
2 |
3 | import androidx.recyclerview.widget.RecyclerView
4 | import java.util.ArrayList
5 |
6 | class RecyclerViewScrollListener(val scroller: FastScroller): RecyclerView.OnScrollListener() {
7 | internal var listeners: MutableList = ArrayList()
8 | internal var oldScrollState = RecyclerView.SCROLL_STATE_IDLE
9 |
10 | fun addScrollerListener(listener: ScrollerListener) {
11 | listeners.add(listener)
12 | }
13 |
14 | override fun onScrollStateChanged(recyclerView: RecyclerView, newScrollState: Int) {
15 | super.onScrollStateChanged(recyclerView, newScrollState)
16 | if (newScrollState == RecyclerView.SCROLL_STATE_IDLE && oldScrollState != RecyclerView.SCROLL_STATE_IDLE) {
17 | scroller.getViewProvider().onScrollFinished()
18 | } else if (newScrollState != RecyclerView.SCROLL_STATE_IDLE && oldScrollState == RecyclerView.SCROLL_STATE_IDLE) {
19 | scroller.getViewProvider().onScrollStarted()
20 | }
21 | oldScrollState = newScrollState
22 | }
23 |
24 | override fun onScrolled(rv: RecyclerView, dx: Int, dy: Int) {
25 | if (scroller.shouldUpdateHandlePosition()) {
26 | updateHandlePosition(rv)
27 | }
28 | }
29 |
30 | internal fun updateHandlePosition(rv: RecyclerView) {
31 | val relativePos: Float
32 | if (scroller.isVertical()) {
33 | val offset = rv.computeVerticalScrollOffset()
34 | val extent = rv.computeVerticalScrollExtent()
35 | val range = rv.computeVerticalScrollRange()
36 | relativePos = offset / (range - extent).toFloat()
37 | } else {
38 | val offset = rv.computeHorizontalScrollOffset()
39 | val extent = rv.computeHorizontalScrollExtent()
40 | val range = rv.computeHorizontalScrollRange()
41 | relativePos = offset / (range - extent).toFloat()
42 | }
43 | scroller.setScrollerPosition(relativePos)
44 | notifyListeners(relativePos)
45 | }
46 |
47 | fun notifyListeners(relativePos: Float) {
48 | for (listener in listeners) listener.onScroll(relativePos)
49 | }
50 |
51 | }
52 |
53 | interface ScrollerListener {
54 | fun onScroll(relativePos: Float)
55 | }
--------------------------------------------------------------------------------
/fastscroll/src/main/java/com/github/vardemin/fastscroll/SectionTitleProvider.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.fastscroll
2 |
3 | interface SectionTitleProvider {
4 |
5 | /**
6 | * Should be implemented by the adapter of the RecyclerView.
7 | * Provides a text to be shown by the bubble, when RecyclerView reaches
8 | * the position. Usually the first letter of the text shown by the item
9 | * at this position.
10 | * @param position Position of the row in adapter
11 | * @return The text to be shown in the bubble
12 | */
13 | fun getSectionTitle(position: Int): String
14 | }
--------------------------------------------------------------------------------
/fastscroll/src/main/java/com/github/vardemin/fastscroll/Utils.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.fastscroll
2 |
3 | import android.graphics.drawable.Drawable
4 | import android.os.Build
5 | import android.view.View
6 |
7 | fun getViewRawY(view: View): Float {
8 | val location = IntArray(2)
9 | location[0] = 0
10 | location[1] = view.y.toInt()
11 | (view.parent as View).getLocationInWindow(location)
12 | return location[1].toFloat()
13 | }
14 |
15 | fun getViewRawX(view: View): Float {
16 | val location = IntArray(2)
17 | location[0] = view.x.toInt()
18 | location[1] = 0
19 | (view.parent as View).getLocationInWindow(location)
20 | return location[0].toFloat()
21 | }
22 |
23 | fun getValueInRange(min: Float, max: Float, value: Float): Float {
24 | val minimum = kotlin.math.max(min, value)
25 | return kotlin.math.min(minimum, max)
26 | }
27 |
28 | fun setBackground(view: View, drawable: Drawable) {
29 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
30 | view.background = drawable
31 | } else {
32 | view.setBackgroundDrawable(drawable)
33 | }
34 | }
--------------------------------------------------------------------------------
/fastscroll/src/main/java/com/github/vardemin/fastscroll/viewprovider/DefaultBubbleBehavior.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.fastscroll.viewprovider
2 |
3 | class DefaultBubbleBehavior(val animationManager: VisibilityAnimationManager) : ViewBehavior {
4 |
5 | override fun onHandleGrabbed() {
6 | animationManager.show()
7 | }
8 |
9 | override fun onHandleReleased() {
10 | animationManager.hide()
11 | }
12 |
13 | override fun onScrollStarted() {
14 |
15 | }
16 |
17 | override fun onScrollFinished() {
18 |
19 | }
20 | }
21 |
22 | /**
23 | * Created by Michal on 11/08/16.
24 | * Extending classes should use this interface to get notified about events that occur to the
25 | * fastscroller elements (handle and bubble) and react accordingly. See [DefaultBubbleBehavior]
26 | * for an example.
27 | */
28 | interface ViewBehavior {
29 | fun onHandleGrabbed()
30 | fun onHandleReleased()
31 | fun onScrollStarted()
32 | fun onScrollFinished()
33 | }
--------------------------------------------------------------------------------
/fastscroll/src/main/java/com/github/vardemin/fastscroll/viewprovider/DefaultScrollViewProvider.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.fastscroll.viewprovider
2 |
3 | import android.graphics.drawable.InsetDrawable
4 | import android.view.LayoutInflater
5 | import android.view.View
6 | import android.view.ViewGroup
7 | import android.widget.TextView
8 | import androidx.core.content.ContextCompat
9 | import com.github.vardemin.fastscroll.R
10 | import com.github.vardemin.fastscroll.setBackground
11 |
12 | public class DefaultScrollerViewProvider : ScrollerViewProvider() {
13 |
14 | private var bubble: View? = null
15 | private var handle: View? = null
16 |
17 | override fun provideHandleView(container: ViewGroup): View {
18 | handle = View(getContext())
19 |
20 | val verticalInset =
21 | if (getScroller()!!.isVertical()) 0 else getContext()!!.resources.getDimensionPixelSize(R.dimen.fastscroll__handle_inset)
22 | val horizontalInset =
23 | if (!getScroller()!!.isVertical()) 0 else getContext()!!.resources.getDimensionPixelSize(R.dimen.fastscroll__handle_inset)
24 | val handleBg = InsetDrawable(
25 | ContextCompat.getDrawable(getContext()!!, R.drawable.fastscroll__default_handle),
26 | horizontalInset,
27 | verticalInset,
28 | horizontalInset,
29 | verticalInset
30 | )
31 | setBackground(handle!!, handleBg)
32 |
33 | val handleWidth = getContext()!!.resources
34 | .getDimensionPixelSize(if (getScroller()!!.isVertical()) R.dimen.fastscroll__handle_clickable_width else R.dimen.fastscroll__handle_height)
35 | val handleHeight = getContext()!!.resources
36 | .getDimensionPixelSize(if (getScroller()!!.isVertical()) R.dimen.fastscroll__handle_height else R.dimen.fastscroll__handle_clickable_width)
37 | val params = ViewGroup.LayoutParams(handleWidth, handleHeight)
38 | handle!!.layoutParams = params
39 |
40 | return handle!!
41 | }
42 |
43 | override fun provideBubbleView(container: ViewGroup): View {
44 | bubble = LayoutInflater.from(getContext()).inflate(R.layout.fastscroll__default_bubble, container, false)
45 | return bubble as View
46 | }
47 |
48 | override fun provideBubbleTextView(): TextView {
49 | return bubble as TextView
50 | }
51 |
52 | override fun getBubbleOffset(): Int {
53 | return (if (getScroller()!!.isVertical()) handle!!.height.toFloat() / 2f - bubble!!.height else handle!!.width.toFloat() / 2f - bubble!!.width).toInt()
54 | }
55 |
56 | protected override fun provideHandleBehavior(): ViewBehavior? {
57 | return null
58 | }
59 |
60 | protected override fun provideBubbleBehavior(): ViewBehavior {
61 | return DefaultBubbleBehavior(Builder(bubble!!).withPivotX(1f).withPivotY(1f).build())
62 | }
63 | }
--------------------------------------------------------------------------------
/fastscroll/src/main/java/com/github/vardemin/fastscroll/viewprovider/ScrollerViewProvider.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.fastscroll.viewprovider
2 |
3 | import android.content.Context
4 | import android.view.View
5 | import android.view.ViewGroup
6 | import android.widget.TextView
7 | import com.github.vardemin.fastscroll.FastScroller
8 |
9 | abstract class ScrollerViewProvider {
10 | private var scroller: FastScroller? = null
11 | private var handleBehavior: ViewBehavior? = null
12 | private var bubbleBehavior: ViewBehavior? = null
13 |
14 | fun setFastScroller(scroller: FastScroller) {
15 | this.scroller = scroller
16 | }
17 |
18 | protected fun getContext(): Context? {
19 | return scroller?.context
20 | }
21 |
22 | protected fun getScroller(): FastScroller? {
23 | return scroller
24 | }
25 |
26 | /**
27 | * @param container The container [FastScroller] for the view to inflate properly.
28 | * @return A view which will be by the [FastScroller] used as a handle.
29 | */
30 | abstract fun provideHandleView(container: ViewGroup): View
31 |
32 | /**
33 | * @param container The container [FastScroller] for the view to inflate properly.
34 | * @return A view which will be by the [FastScroller] used as a bubble.
35 | */
36 | abstract fun provideBubbleView(container: ViewGroup): View
37 |
38 | /**
39 | * Bubble view has to provide a [TextView] that will show the index title.
40 | * @return A [TextView] that will hold the index title.
41 | */
42 | abstract fun provideBubbleTextView(): TextView
43 |
44 | /**
45 | * To offset the position of the bubble relative to the handle. E.g. in [DefaultScrollerViewProvider]
46 | * the sharp corner of the bubble is aligned with the center of the handle.
47 | * @return the position of the bubble in relation to the handle (according to the orientation).
48 | */
49 | abstract fun getBubbleOffset(): Int
50 |
51 | protected abstract fun provideHandleBehavior(): ViewBehavior?
52 |
53 | protected abstract fun provideBubbleBehavior(): ViewBehavior?
54 |
55 | protected fun getHandleBehavior(): ViewBehavior? {
56 | if (handleBehavior == null) handleBehavior = provideHandleBehavior()
57 | return handleBehavior
58 | }
59 |
60 | protected fun getBubbleBehavior(): ViewBehavior? {
61 | if (bubbleBehavior == null) bubbleBehavior = provideBubbleBehavior()
62 | return bubbleBehavior
63 | }
64 |
65 | fun onHandleGrabbed() {
66 | if (getHandleBehavior() != null) getHandleBehavior()!!.onHandleGrabbed()
67 | if (getBubbleBehavior() != null) getBubbleBehavior()!!.onHandleGrabbed()
68 | }
69 |
70 | fun onHandleReleased() {
71 | if (getHandleBehavior() != null) getHandleBehavior()!!.onHandleReleased()
72 | if (getBubbleBehavior() != null) getBubbleBehavior()!!.onHandleReleased()
73 | }
74 |
75 | fun onScrollStarted() {
76 | if (getHandleBehavior() != null) getHandleBehavior()!!.onScrollStarted()
77 | if (getBubbleBehavior() != null) getBubbleBehavior()!!.onScrollStarted()
78 | }
79 |
80 | fun onScrollFinished() {
81 | if (getHandleBehavior() != null) getHandleBehavior()!!.onScrollFinished()
82 | if (getBubbleBehavior() != null) getBubbleBehavior()!!.onScrollFinished()
83 | }
84 | }
--------------------------------------------------------------------------------
/fastscroll/src/main/java/com/github/vardemin/fastscroll/viewprovider/VisibilityAnimationManager.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.fastscroll.viewprovider
2 |
3 | import android.animation.Animator
4 | import android.animation.AnimatorInflater
5 | import android.animation.AnimatorListenerAdapter
6 | import android.animation.AnimatorSet
7 | import android.view.View
8 | import androidx.annotation.AnimatorRes
9 | import com.github.vardemin.fastscroll.R
10 |
11 | class VisibilityAnimationManager(val view: View,
12 | @AnimatorRes showAnimator: Int,
13 | @AnimatorRes hideAnimator: Int,
14 | val pivotXRelative: Float,
15 | val pivotYRelative: Float,
16 | hideDelay: Int) {
17 |
18 |
19 | private val showAnimator: AnimatorSet
20 | private val hideAnimator: AnimatorSet
21 |
22 | init {
23 | this.hideAnimator = AnimatorInflater.loadAnimator(view.context, hideAnimator) as AnimatorSet
24 | this.hideAnimator.startDelay = hideDelay.toLong()
25 | this.hideAnimator.setTarget(view)
26 | this.showAnimator = AnimatorInflater.loadAnimator(view.context, showAnimator) as AnimatorSet
27 | this.showAnimator.setTarget(view)
28 | this.hideAnimator.addListener(object : AnimatorListenerAdapter() {
29 |
30 | //because onAnimationEnd() goes off even for canceled animations
31 | var wasCanceled: Boolean = false
32 |
33 | override fun onAnimationEnd(animation: Animator) {
34 | super.onAnimationEnd(animation)
35 | if (!wasCanceled) view.visibility = View.INVISIBLE
36 | wasCanceled = false
37 | }
38 |
39 | override fun onAnimationCancel(animation: Animator) {
40 | super.onAnimationCancel(animation)
41 | wasCanceled = true
42 | }
43 | })
44 | updatePivot()
45 | }
46 |
47 |
48 | fun show() {
49 | hideAnimator.cancel()
50 | if (view.visibility == View.INVISIBLE) {
51 | view.visibility = View.VISIBLE
52 | updatePivot()
53 | showAnimator.start()
54 | }
55 | }
56 |
57 | fun hide() {
58 | updatePivot()
59 | hideAnimator.start()
60 | }
61 |
62 | protected fun updatePivot() {
63 | view.pivotX = pivotXRelative * view.measuredWidth
64 | view.pivotY = pivotYRelative * view.measuredHeight
65 | }
66 |
67 | }
68 |
69 | abstract class AbsBuilder(protected val view: View) {
70 | protected var showAnimatorResource = R.animator.fastscroll__default_show
71 | protected var hideAnimatorResource = R.animator.fastscroll__default_hide
72 | protected var hideDelay = 1000
73 | protected var pivotX = 0.5f
74 | protected var pivotY = 0.5f
75 |
76 | fun withShowAnimator(@AnimatorRes showAnimatorResource: Int): AbsBuilder {
77 | this.showAnimatorResource = showAnimatorResource
78 | return this
79 | }
80 |
81 | fun withHideAnimator(@AnimatorRes hideAnimatorResource: Int): AbsBuilder {
82 | this.hideAnimatorResource = hideAnimatorResource
83 | return this
84 | }
85 |
86 | fun withHideDelay(hideDelay: Int): AbsBuilder {
87 | this.hideDelay = hideDelay
88 | return this
89 | }
90 |
91 | fun withPivotX(pivotX: Float): AbsBuilder {
92 | this.pivotX = pivotX
93 | return this
94 | }
95 |
96 | fun withPivotY(pivotY: Float): AbsBuilder {
97 | this.pivotY = pivotY
98 | return this
99 | }
100 |
101 | abstract fun build(): VisibilityAnimationManager
102 | }
103 |
104 | class Builder(view: View) : AbsBuilder(view) {
105 |
106 | override fun build(): VisibilityAnimationManager {
107 | return VisibilityAnimationManager(view, showAnimatorResource, hideAnimatorResource, pivotX, pivotY, hideDelay)
108 | }
109 |
110 | }
--------------------------------------------------------------------------------
/fastscroll/src/main/res/animator/fastscroll__default_hide.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
20 |
21 |
27 |
28 |
--------------------------------------------------------------------------------
/fastscroll/src/main/res/animator/fastscroll__default_show.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
12 |
17 |
18 |
23 |
24 |
--------------------------------------------------------------------------------
/fastscroll/src/main/res/drawable/fastscroll__default_bubble.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
9 |
10 |
--------------------------------------------------------------------------------
/fastscroll/src/main/res/drawable/fastscroll__default_handle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/fastscroll/src/main/res/layout/fastscroll__default_bubble.xml:
--------------------------------------------------------------------------------
1 |
2 |
14 |
--------------------------------------------------------------------------------
/fastscroll/src/main/res/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 20dp
6 | 50dp
7 | 24dp
8 | 3dp
9 | 30dp
10 | 9dp
11 | 2dp
12 | 6dp
13 | RecyclerViewFastScroll
14 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app's APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Automatically convert third-party libraries to use AndroidX
19 | android.enableJetifier=true
20 | # Kotlin code style for this project: "official" or "obsolete":
21 | kotlin.code.style=official
22 |
23 | materialcountrypicker_version=0.1.2
24 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Jul 08 15:34:08 MSK 2019
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Attempt to set APP_HOME
10 | # Resolve links: $0 may be a link
11 | PRG="$0"
12 | # Need this for relative symlinks.
13 | while [ -h "$PRG" ] ; do
14 | ls=`ls -ld "$PRG"`
15 | link=`expr "$ls" : '.*-> \(.*\)$'`
16 | if expr "$link" : '/.*' > /dev/null; then
17 | PRG="$link"
18 | else
19 | PRG=`dirname "$PRG"`"/$link"
20 | fi
21 | done
22 | SAVED="`pwd`"
23 | cd "`dirname \"$PRG\"`/" >/dev/null
24 | APP_HOME="`pwd -P`"
25 | cd "$SAVED" >/dev/null
26 |
27 | APP_NAME="Gradle"
28 | APP_BASE_NAME=`basename "$0"`
29 |
30 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
31 | DEFAULT_JVM_OPTS=""
32 |
33 | # Use the maximum available, or set MAX_FD != -1 to use that value.
34 | MAX_FD="maximum"
35 |
36 | warn () {
37 | echo "$*"
38 | }
39 |
40 | die () {
41 | echo
42 | echo "$*"
43 | echo
44 | exit 1
45 | }
46 |
47 | # OS specific support (must be 'true' or 'false').
48 | cygwin=false
49 | msys=false
50 | darwin=false
51 | nonstop=false
52 | case "`uname`" in
53 | CYGWIN* )
54 | cygwin=true
55 | ;;
56 | Darwin* )
57 | darwin=true
58 | ;;
59 | MINGW* )
60 | msys=true
61 | ;;
62 | NONSTOP* )
63 | nonstop=true
64 | ;;
65 | esac
66 |
67 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
68 |
69 | # Determine the Java command to use to start the JVM.
70 | if [ -n "$JAVA_HOME" ] ; then
71 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
72 | # IBM's JDK on AIX uses strange locations for the executables
73 | JAVACMD="$JAVA_HOME/jre/sh/java"
74 | else
75 | JAVACMD="$JAVA_HOME/bin/java"
76 | fi
77 | if [ ! -x "$JAVACMD" ] ; then
78 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
79 |
80 | Please set the JAVA_HOME variable in your environment to match the
81 | location of your Java installation."
82 | fi
83 | else
84 | JAVACMD="java"
85 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
86 |
87 | Please set the JAVA_HOME variable in your environment to match the
88 | location of your Java installation."
89 | fi
90 |
91 | # Increase the maximum file descriptors if we can.
92 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
93 | MAX_FD_LIMIT=`ulimit -H -n`
94 | if [ $? -eq 0 ] ; then
95 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
96 | MAX_FD="$MAX_FD_LIMIT"
97 | fi
98 | ulimit -n $MAX_FD
99 | if [ $? -ne 0 ] ; then
100 | warn "Could not set maximum file descriptor limit: $MAX_FD"
101 | fi
102 | else
103 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
104 | fi
105 | fi
106 |
107 | # For Darwin, add options to specify how the application appears in the dock
108 | if $darwin; then
109 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
110 | fi
111 |
112 | # For Cygwin, switch paths to Windows format before running java
113 | if $cygwin ; then
114 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
115 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
116 | JAVACMD=`cygpath --unix "$JAVACMD"`
117 |
118 | # We build the pattern for arguments to be converted via cygpath
119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120 | SEP=""
121 | for dir in $ROOTDIRSRAW ; do
122 | ROOTDIRS="$ROOTDIRS$SEP$dir"
123 | SEP="|"
124 | done
125 | OURCYGPATTERN="(^($ROOTDIRS))"
126 | # Add a user-defined pattern to the cygpath arguments
127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129 | fi
130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
131 | i=0
132 | for arg in "$@" ; do
133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
135 |
136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138 | else
139 | eval `echo args$i`="\"$arg\""
140 | fi
141 | i=$((i+1))
142 | done
143 | case $i in
144 | (0) set -- ;;
145 | (1) set -- "$args0" ;;
146 | (2) set -- "$args0" "$args1" ;;
147 | (3) set -- "$args0" "$args1" "$args2" ;;
148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154 | esac
155 | fi
156 |
157 | # Escape application args
158 | save () {
159 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
160 | echo " "
161 | }
162 | APP_ARGS=$(save "$@")
163 |
164 | # Collect all arguments for the java command, following the shell quoting and substitution rules
165 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
166 |
167 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
168 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
169 | cd "$(dirname "$0")"
170 | fi
171 |
172 | exec "$JAVACMD" "$@"
173 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/materialcountrypicker/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/materialcountrypicker/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'kotlin-android'
3 | apply plugin: 'kotlin-android-extensions'
4 | apply plugin: 'kotlin-kapt'
5 | apply plugin: 'com.github.dcendents.android-maven'
6 | group = 'com.github.vardemin'
7 | version = "$materialcountrypicker_version"
8 |
9 | androidExtensions {
10 | experimental = true
11 | }
12 |
13 | android {
14 | compileSdkVersion 28
15 |
16 |
17 | defaultConfig {
18 | minSdkVersion 16
19 | targetSdkVersion 28
20 | versionCode 1
21 | versionName "1.0"
22 | vectorDrawables.useSupportLibrary = true
23 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
24 |
25 | }
26 |
27 | buildTypes {
28 | release {
29 | minifyEnabled false
30 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
31 | }
32 | }
33 | compileOptions {
34 | sourceCompatibility JavaVersion.VERSION_1_8
35 | targetCompatibility JavaVersion.VERSION_1_8
36 | }
37 |
38 | androidExtensions {
39 | experimental = true
40 | }
41 |
42 |
43 | }
44 |
45 | dependencies {
46 | implementation fileTree(dir: 'libs', include: ['*.jar'])
47 |
48 | implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
49 | implementation 'com.google.android.material:material:1.0.0'
50 | implementation 'androidx.core:core-ktx:1.2.0-alpha02'
51 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
52 | implementation 'com.google.code.gson:gson:2.8.5'
53 | implementation project(path: ':fastscroll')
54 | implementation project(path: ':sectionedrecycleradapter')
55 | }
56 | repositories {
57 | mavenCentral()
58 | }
59 |
--------------------------------------------------------------------------------
/materialcountrypicker/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/java/com/github/vardemin/materialcountrypicker/Country.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.materialcountrypicker
2 |
3 | import android.os.Parcelable
4 | import com.google.gson.annotations.SerializedName
5 | import kotlinx.android.parcel.Parcelize
6 |
7 | /**
8 | * @author Vladimir Akopzhanian on 10/07/19.
9 | */
10 |
11 | @Parcelize
12 | data class Country(
13 | @SerializedName("name")
14 | var name: String? = null,
15 | @SerializedName("dial_code")
16 | var dialCode: String? = null,
17 | @SerializedName("code")
18 | var code: String? = null) : Parcelable {
19 |
20 | val flagResID = R.drawable.flag_transparent
21 | }
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/java/com/github/vardemin/materialcountrypicker/CountryPicker.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.materialcountrypicker
2 |
3 | import android.app.Activity
4 | import android.content.Context
5 | import android.content.Intent
6 | import android.os.Bundle
7 | import androidx.annotation.ColorRes
8 | import androidx.annotation.StyleRes
9 |
10 | /**
11 | * @author Vladimir Akopzhanian on 10/07/19.
12 | */
13 |
14 | object CountryPicker {
15 |
16 | val PICKER_REQUEST_CODE = 101
17 | val EXTRA_COUNTRY = "com.github.vardemin.materialcountrypicker_EXTRA_COUNTRY"
18 | val EXTRA_SHOW_FAST_SCROLL = "com.github.vardemin.materialcountrypicker_EXTRA_SHOW_FAST_SCROLL"
19 | val EXTRA_SHOW_FAST_SCROLL_BUBBLE_COLOR = "com.github.vardemin.materialcountrypicker_EXTRA_SHOW_FAST_BUBBLE_COLOR"
20 | val EXTRA_SHOW_FAST_SCROLL_HANDLER_COLOR = "com.github.vardemin.materialcountrypicker_EXTRA_SHOW_FAST_HANDLE_COLOR"
21 | val EXTRA_LIST_ITEM_TEXT_COLOR = "com.github.jaylumba.phonecountrypicker_EXTRA_LIST_ITEM_TEXT_COLOR"
22 | val EXTRA_FULLSCREEN_TOOLBAR_COLOR = "com.github.jaylumba.phonecountrypicker_EXTRA_FULLSCREEN_TOOLBAR_COLOR"
23 | val EXTRA_SHOW_FAST_SCROLL_BUBBLE_TEXT_APPEARANCE =
24 | "com.github.vardemin.materialcountrypicker_EXTRA_SHOW_FAST_BUBBLE_TEXT_APPEARANCE"
25 | val EXTRA_SHOW_COUNTRY_CODE_IN_LIST = "com.github.vardemin.materialcountrypicker_EXTRA_SHOW_COUNTRY_CODE_IN_LIST"
26 |
27 | fun showFullScreenPicker(
28 | activity: Activity,
29 | showFastScroller: Boolean,
30 | @ColorRes fastScrollerBubbleColor: Int,
31 | @ColorRes fastScrollerHandleColor: Int,
32 | @StyleRes fastScrollerBubbleTextAppearance: Int,
33 | showCountryCodeInList: Boolean
34 | ) {
35 | val intent = Intent(activity, CountryPickerActivity::class.java)
36 | val bundle = Bundle()
37 | bundle.putBoolean(CountryPicker.EXTRA_SHOW_FAST_SCROLL, showFastScroller)
38 | bundle.putInt(CountryPicker.EXTRA_SHOW_FAST_SCROLL_BUBBLE_COLOR, fastScrollerBubbleColor)
39 | bundle.putInt(CountryPicker.EXTRA_SHOW_FAST_SCROLL_HANDLER_COLOR, fastScrollerHandleColor)
40 | bundle.putInt(CountryPicker.EXTRA_SHOW_FAST_SCROLL_BUBBLE_TEXT_APPEARANCE, fastScrollerBubbleTextAppearance)
41 | bundle.putBoolean(CountryPicker.EXTRA_SHOW_COUNTRY_CODE_IN_LIST, showCountryCodeInList)
42 | intent.putExtras(bundle)
43 | activity.startActivityForResult(intent, PICKER_REQUEST_CODE)
44 | }
45 |
46 |
47 | fun showDialogPicker(
48 | context: Context,
49 | callback: CountryPickerDialog.OnCountrySelectedCallback,
50 | showFastScroller: Boolean,
51 | @ColorRes fastScrollerBubbleColor: Int,
52 | @ColorRes fastScrollerHandleColor: Int,
53 | @ColorRes listItemTextColor: Int,
54 | @StyleRes fastScrollerBubbleTextAppearance: Int,
55 | showCountryCodeInList: Boolean, isShowCountryCodeInList: Boolean,
56 | isDialogKeyboardAutoPopup: Boolean, isSearchAllowed: Boolean
57 | ) {
58 | CountryPickerDialog.openPickerDialog(
59 | context, callback, isShowCountryCodeInList,
60 | isSearchAllowed, isDialogKeyboardAutoPopup, showFastScroller,
61 | fastScrollerBubbleColor, fastScrollerHandleColor,listItemTextColor, fastScrollerBubbleTextAppearance
62 | )
63 |
64 | }
65 | }
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/java/com/github/vardemin/materialcountrypicker/CountryPickerActivity.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.materialcountrypicker
2 |
3 | import android.app.Activity
4 | import android.content.Intent
5 | import android.os.Bundle
6 | import android.os.PersistableBundle
7 | import android.util.Log
8 | import android.view.Menu
9 | import android.view.MenuItem
10 | import android.view.View
11 | import android.widget.TextView
12 | import androidx.appcompat.app.AppCompatActivity
13 | import androidx.appcompat.widget.SearchView
14 | import androidx.appcompat.widget.Toolbar
15 | import androidx.recyclerview.widget.LinearLayoutManager
16 | import androidx.recyclerview.widget.RecyclerView
17 | import com.github.vardemin.fastscroll.FastScroller
18 | /**
19 | * @author Vladimir Akopzhanian on 10/07/19.
20 | */
21 |
22 | class CountryPickerActivity: AppCompatActivity() {
23 | private var showFastScroller = true
24 | private var fastScrollerBubbleColor = 0
25 | private var fastScrollerHandleColor = 0
26 | private var listItemTextColor = 0
27 | private var fullScreenToolbarColor = 0
28 | private var fastScrollerBubbleTextAppearance = 0
29 | private var showCountryCode: Boolean = false
30 | private val TAG = CountryPickerActivity::class.java.simpleName
31 | private var pickerAdapter: CountryPickerAdapter? = null
32 |
33 | override fun onCreate(savedInstanceState: Bundle?) {
34 | super.onCreate(savedInstanceState)
35 | Log.d(TAG, "OnCreate called")
36 | setContentView(R.layout.activity_country_picker)
37 | val toolbar = findViewById(R.id.my_toolbar)
38 | toolbar.inflateMenu(R.menu.picker_dialog)
39 | val searchView = toolbar.menu.findItem(R.id.search).actionView as SearchView
40 |
41 | setSupportActionBar(toolbar)
42 | if (supportActionBar != null) {
43 | supportActionBar!!.setDisplayHomeAsUpEnabled(true)
44 | supportActionBar!!.setHomeAsUpIndicator(R.drawable.ic_clear_black)
45 | supportActionBar!!.setTitle(getString(R.string.select_country))
46 | }
47 |
48 | if (intent != null) {
49 | val bundle = intent.extras
50 | if (bundle != null) {
51 | showFastScroller = bundle.getBoolean(CountryPicker.EXTRA_SHOW_FAST_SCROLL)
52 | fastScrollerBubbleColor = bundle.getInt(CountryPicker.EXTRA_SHOW_FAST_SCROLL_BUBBLE_COLOR)
53 | fastScrollerHandleColor = bundle.getInt(CountryPicker.EXTRA_SHOW_FAST_SCROLL_HANDLER_COLOR)
54 | listItemTextColor = bundle.getInt(CountryPicker.EXTRA_LIST_ITEM_TEXT_COLOR)
55 | fullScreenToolbarColor = bundle.getInt(CountryPicker.EXTRA_FULLSCREEN_TOOLBAR_COLOR)
56 | fastScrollerBubbleTextAppearance =
57 | bundle.getInt(CountryPicker.EXTRA_SHOW_FAST_SCROLL_BUBBLE_TEXT_APPEARANCE)
58 | showCountryCode = bundle.getBoolean(CountryPicker.EXTRA_SHOW_COUNTRY_CODE_IN_LIST)
59 | }
60 | }
61 |
62 |
63 | //list all the countries
64 | val countries = loadDataFromJson(this)
65 |
66 | //country Groups
67 | val countryGroup = mapList(countries)
68 | val callback = object : OnItemClickCallback {
69 | override fun onItemClick(country: Country) {
70 | //set result and finish
71 | val intent = Intent()
72 | intent.putExtra(CountryPicker.EXTRA_COUNTRY, country)
73 | setResult(Activity.RESULT_OK, intent)
74 | finish()
75 | }
76 | }
77 |
78 | toolbar.setBackgroundColor(fullScreenToolbarColor)
79 |
80 | //recyclerView
81 | val recyclerView = findViewById(R.id.recyclerCountryPicker)
82 |
83 | //no result tv
84 | val tvNoResult = findViewById(R.id.tvNoResult)
85 |
86 | //create picker adapter
87 | pickerAdapter = CountryPickerAdapter(
88 | this, callback, countries, countryGroup,
89 | searchView, tvNoResult, showCountryCode, listItemTextColor
90 | )
91 |
92 | //fast scroller
93 | val fastScroller = findViewById(R.id.fastScroll)
94 |
95 | recyclerView.layoutManager = LinearLayoutManager(this)
96 | recyclerView.adapter = pickerAdapter
97 |
98 | fastScroller.setRecyclerView(recyclerView)
99 | if (isShowFastScroller()) {
100 | if (getFastScrollerBubbleColor() != 0) {
101 | fastScroller.setBubbleColor(getFastScrollerBubbleColor())
102 | }
103 |
104 | if (getFastScrollerHandleColor() != 0) {
105 | fastScroller.setHandleColor(getFastScrollerHandleColor())
106 | }
107 |
108 | if (getFastScrollerBubbleTextAppearance() != 0) {
109 | try {
110 | fastScroller.setBubbleTextAppearance(getFastScrollerBubbleTextAppearance())
111 | } catch (e: Exception) {
112 | e.printStackTrace()
113 | }
114 |
115 | }
116 |
117 | } else {
118 | fastScroller.setVisibility(View.GONE)
119 | }
120 | }
121 |
122 | override fun onCreateOptionsMenu(menu: Menu): Boolean {
123 | Log.d(TAG, "OnCreate Options menu called")
124 | val menuInflater = menuInflater
125 | menuInflater.inflate(R.menu.picker_dialog, menu)
126 | // Associate searchable configuration with the SearchView
127 | val searchView = menu.findItem(R.id.search).actionView as SearchView
128 | pickerAdapter?.setSearchView(searchView)
129 | return true
130 | }
131 |
132 |
133 | override fun onOptionsItemSelected(item: MenuItem): Boolean {
134 | val id = item.itemId
135 | return if (id == android.R.id.home) {
136 | setResult(Activity.RESULT_CANCELED)
137 | finish()
138 | true
139 | } else {
140 | super.onOptionsItemSelected(item)
141 | }
142 | }
143 |
144 | fun getFastScrollerBubbleColor(): Int {
145 | return fastScrollerBubbleColor
146 | }
147 |
148 | fun getFastScrollerHandleColor(): Int {
149 | return fastScrollerHandleColor
150 | }
151 |
152 | fun getFastScrollerBubbleTextAppearance(): Int {
153 | return fastScrollerBubbleTextAppearance
154 | }
155 |
156 |
157 | fun isShowFastScroller(): Boolean {
158 | return showFastScroller
159 | }
160 | }
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/java/com/github/vardemin/materialcountrypicker/CountryPickerAdapter.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.materialcountrypicker
2 |
3 | import android.content.Context
4 | import android.view.LayoutInflater
5 | import android.view.View
6 | import android.view.ViewGroup
7 | import android.widget.*
8 | import androidx.appcompat.widget.SearchView
9 | import com.github.vardemin.fastscroll.SectionTitleProvider
10 | import com.github.vardemin.sectionedrecycleradapter.SectionViewHolder
11 | import com.github.vardemin.sectionedrecycleradapter.SectionedRecyclerViewAdapter
12 | import java.util.ArrayList
13 |
14 | /**
15 | * @author Vladimir Akopzhanian on 10/07/19.
16 | */
17 |
18 | class CountryPickerAdapter(val context: Context,
19 | val clickListener: OnItemClickCallback,
20 | val countries: List,
21 | val countryGroup: Map>,
22 | private var searchView: SearchView? = null,
23 | private val tvNoResult: TextView,
24 | val showCountryCode: Boolean,
25 | val listItemTextColor: Int
26 | ): SectionedRecyclerViewAdapter(), Filterable, SectionTitleProvider {
27 | private var filteredCountryGroup: Map> = countryGroup
28 |
29 | init {
30 | addSearchViewListener()
31 | }
32 |
33 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CountryCodeViewHolder {
34 | val layoutRes: Int = when (viewType) {
35 | VIEW_TYPE_ITEM -> R.layout.item
36 | VIEW_TYPE_HEADER -> R.layout.header
37 | else -> R.layout.item
38 | }
39 | val view = LayoutInflater.from(parent.context).inflate(layoutRes, parent, false)
40 | if (viewType == VIEW_TYPE_ITEM){
41 | view.findViewById(R.id.tvName).setTextColor(listItemTextColor)
42 | view.findViewById(R.id.tvCode).setTextColor(listItemTextColor)
43 | }
44 | return CountryCodeViewHolder(view)
45 | }
46 |
47 | override fun getSectionCount(): Int {
48 | return filteredCountryGroup.size
49 | }
50 |
51 | override fun getItemCount(sectionIndex: Int): Int {
52 | return getItemsForSection(sectionIndex)!!.size
53 | }
54 |
55 | private fun getItemsForSection(section: Int): List? {
56 | return filteredCountryGroup[AZ_STRING[section].toString()]
57 | }
58 |
59 | override fun onBindHeaderViewHolder(holder: CountryCodeViewHolder, section: Int, expanded: Boolean) {
60 | (holder.itemView.findViewById(R.id.tvHeader) as TextView)
61 | .text = AZ_STRING[section].toString().toUpperCase()
62 |
63 | }
64 |
65 | override fun onBindFooterViewHolder(holder: CountryCodeViewHolder, section: Int) {
66 | //do nothing
67 | }
68 |
69 | override fun onBindViewHolder(holder: CountryCodeViewHolder, section: Int, relativePosition: Int, absolutePosition: Int) {
70 | val country = getItemsForSection(section)!![relativePosition]
71 | holder.setCountry(country, absolutePosition)
72 | holder.itemView.setOnClickListener { v -> clickListener.onItemClick(country) }
73 |
74 | }
75 |
76 |
77 | // @Override
78 | // public int getItemCount() {
79 | // return filteredCountryGroup.size();
80 | // }
81 |
82 | override fun getFilter(): Filter {
83 | return object : Filter() {
84 | override fun performFiltering(constraint: CharSequence): Filter.FilterResults {
85 | val charString = constraint.toString()
86 | if (charString.isEmpty()) {
87 | filteredCountryGroup = countryGroup
88 | } else {
89 | val filteredList = ArrayList()
90 | for (country in countries) {
91 | if (country.name!!.toLowerCase().startsWith(charString)) {
92 | //check for country code
93 | // if (showCountryCode && country.getCode().toLowerCase().startsWith(charString)) {
94 | // filteredList.add(country);
95 | // continue;
96 | // }
97 | filteredList.add(country)
98 | }
99 | // else if (showCountryCode && country.getCode().toLowerCase().startsWith(charString)) {
100 | // filteredList.add(country);
101 |
102 | // }
103 | }
104 | filteredCountryGroup = mapList(filteredList)
105 |
106 | }
107 |
108 | val results = Filter.FilterResults()
109 | results.values = filteredCountryGroup
110 | return results
111 | }
112 |
113 | override fun publishResults(constraint: CharSequence, results: Filter.FilterResults) {
114 | filteredCountryGroup = results.values as Map>
115 | notifyDataSetChanged()
116 |
117 | if (filteredCountryGroup.isEmpty()) {
118 | tvNoResult.visibility = View.VISIBLE
119 | } else {
120 | tvNoResult.visibility = View.GONE
121 | }
122 | }
123 | }
124 | }
125 |
126 | override fun getSectionTitle(position: Int): String {
127 | val c = ArrayList()
128 | for (countryList in filteredCountryGroup.values) {
129 | c.addAll(countryList)
130 | }
131 |
132 | //wrap this is a try and catch due to the
133 | //section recycler view
134 | var country: Country? = null
135 | try {
136 | country = c[position]
137 | } catch (e: Exception) {
138 | e.printStackTrace()
139 | }
140 |
141 | // if (preferredCountriesCount > position) {
142 | // return "★";
143 | // } else
144 | return country?.name?.substring(0, 1) ?: "☺" //this should never be the case
145 | }
146 |
147 |
148 | fun setSearchView(searchView: SearchView) {
149 | this.searchView = searchView
150 | addSearchViewListener()
151 | }
152 |
153 | private fun addSearchViewListener() {
154 | if (this.searchView != null)
155 | searchView!!.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
156 | override fun onQueryTextSubmit(query: String): Boolean {
157 | return false
158 | }
159 |
160 | override fun onQueryTextChange(newText: String): Boolean {
161 | filter.filter(newText)
162 | return true
163 | }
164 | })
165 | }
166 |
167 |
168 | inner class CountryCodeViewHolder(itemView: View) : SectionViewHolder(itemView) {
169 | var mainView: RelativeLayout = itemView as RelativeLayout
170 | var tvName: TextView?
171 | var tvCode: TextView?
172 | var ivFlag: ImageView?
173 | var flagWrapper: LinearLayout?
174 | var divider: View?
175 |
176 | init {
177 | tvName = mainView.findViewById(R.id.tvName)
178 | tvCode = mainView.findViewById(R.id.tvCode)
179 | ivFlag = mainView.findViewById(R.id.ivFlag)
180 | flagWrapper = mainView.findViewById(R.id.flagWrapper)
181 | divider = mainView.findViewById(R.id.preferenceDivider)
182 | }
183 |
184 | fun setCountry(country: Country?, position: Int) {
185 | if (position == 0) {
186 | divider?.visibility = View.GONE
187 | }
188 |
189 | if (country != null) {
190 | tvName?.visibility = View.VISIBLE
191 | tvCode?.visibility = View.VISIBLE
192 | flagWrapper?.visibility = View.VISIBLE
193 | if (showCountryCode) {
194 | tvName?.text = context.getString(
195 | R.string.format_country_with_code,
196 | country.name,
197 | country.code!!.toUpperCase()
198 | )
199 | } else {
200 | tvName?.text = context.getString(R.string.format_country, country.name)
201 | }
202 |
203 | tvCode?.text = context.getString(R.string.plus_prefix, country.dialCode)
204 | ivFlag?.setImageResource(getFlagResID(country))
205 | } else {
206 | divider?.visibility = View.VISIBLE
207 | tvName?.visibility = View.GONE
208 | tvCode?.visibility = View.GONE
209 | flagWrapper?.visibility = View.GONE
210 | }
211 | }
212 | }
213 | }
214 |
215 | interface OnItemClickCallback {
216 | fun onItemClick(country: Country)
217 | }
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/java/com/github/vardemin/materialcountrypicker/CountryPickerDialog.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.materialcountrypicker
2 |
3 | import android.app.Dialog
4 | import android.content.Context
5 | import android.view.View
6 | import android.view.Window
7 | import android.view.WindowManager
8 | import android.widget.ImageView
9 | import android.widget.TextView
10 | import androidx.appcompat.widget.SearchView
11 | import androidx.recyclerview.widget.LinearLayoutManager
12 | import androidx.recyclerview.widget.RecyclerView
13 | import com.github.vardemin.fastscroll.FastScroller
14 |
15 | /**
16 | * @author Vladimir Akopzhanian on 10/07/19.
17 | */
18 | object CountryPickerDialog {
19 | private val INSTANCE: Dialog? = null
20 |
21 | fun openPickerDialog(
22 | context: Context,
23 | callback: OnCountrySelectedCallback?,
24 | showCountryCodeInList: Boolean,
25 | isSearchAllowed: Boolean,
26 | isDialogKeyboardAutoPopup: Boolean,
27 | isShowFastScroller: Boolean,
28 | fastScrollerBubbleColor: Int,
29 | fastScrollerHandleColor: Int,
30 | listItemTextColor: Int,
31 | fastScrollerBubbleTextAppearance: Int
32 | ) {
33 | val dialog = getDialog(context)
34 |
35 | dialog!!.requestWindowFeature(Window.FEATURE_NO_TITLE)
36 | if (dialog.window != null)
37 | dialog.window!!.setContentView(R.layout.dialog_country_picker)
38 |
39 | //keyboard
40 | if (isSearchAllowed && isDialogKeyboardAutoPopup) {
41 | dialog.window!!.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
42 | } else {
43 | dialog.window!!.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
44 | }
45 |
46 |
47 | //list all the countries
48 | val countries = loadDataFromJson(context)
49 |
50 | //country Groups
51 | val countryGroup = mapList(countries)
52 |
53 | //set up dialog views
54 | //dialog views
55 | val recyclerView = dialog.findViewById(R.id.recyclerCountryPicker)
56 | val tvNoResult = dialog.findViewById(R.id.tvNoResult)
57 | val ivDismiss = dialog.findViewById(R.id.ivDismiss)
58 | val searchView = dialog.findViewById(R.id.searchView)
59 |
60 |
61 | //set click listeners
62 | ivDismiss.setOnClickListener { v -> dialog.dismiss() }
63 |
64 | val listener = object : OnItemClickCallback {
65 | override fun onItemClick(country: Country) {
66 | callback?.updateCountry(country)
67 | dialog.dismiss()
68 | }
69 | }
70 |
71 | val cca = CountryPickerAdapter(
72 | context, listener, countries, countryGroup,
73 | searchView, tvNoResult, showCountryCodeInList, listItemTextColor
74 | )
75 | recyclerView.setLayoutManager(LinearLayoutManager(context))
76 | recyclerView.adapter = cca
77 |
78 | //fast scroller
79 | val fastScroller = dialog.findViewById(R.id.fastScroll)
80 | fastScroller.setRecyclerView(recyclerView)
81 | if (isShowFastScroller) {
82 | if (fastScrollerBubbleColor != 0) {
83 | fastScroller.setBubbleColor(fastScrollerBubbleColor)
84 | }
85 |
86 | if (fastScrollerHandleColor != 0) {
87 | fastScroller.setHandleColor(fastScrollerHandleColor)
88 | }
89 |
90 | if (fastScrollerBubbleTextAppearance != 0) {
91 | try {
92 | fastScroller.setBubbleTextAppearance(fastScrollerBubbleTextAppearance)
93 | } catch (e: Exception) {
94 | e.printStackTrace()
95 | }
96 |
97 | }
98 |
99 | } else {
100 | fastScroller.visibility = View.GONE
101 | }
102 |
103 |
104 | dialog.show()
105 |
106 | }
107 |
108 | private fun getDialog(context: Context?): Dialog? {
109 | return if (INSTANCE == null && context != null) {
110 | Dialog(context)
111 | } else INSTANCE
112 | }
113 |
114 |
115 | interface OnCountrySelectedCallback {
116 | fun updateCountry(country: Country)
117 | }
118 | }
119 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/_do.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/_do.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ad.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ae.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ae.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/af.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/af.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ag.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ai.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/al.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/al.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/am.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/am.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ao.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/aq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/aq.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ar.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/at.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/at.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/au.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/au.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/aw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/aw.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/az.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/az.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ba.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ba.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bb.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bd.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/be.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/be.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bf.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bg.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bh.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bi.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bj.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bl.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bm.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bn.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bo.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/br.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/br.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bs.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bt.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bw.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/by.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/by.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/bz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/bz.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ca.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ca.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/cc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/cc.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/cd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/cd.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/cf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/cf.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/cg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/cg.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ch.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ci.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ci.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ck.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/cl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/cl.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/cm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/cm.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/cn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/cn.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/co.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/co.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/cr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/cr.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/cu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/cu.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/cv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/cv.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/cx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/cx.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/cy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/cy.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/cz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/cz.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/de.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/de.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/dj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/dj.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/dk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/dk.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/dm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/dm.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/dz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/dz.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ec.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ec.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ee.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/eg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/eg.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/eh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/eh.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/er.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/er.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/es.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/es.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/et.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/et.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/fi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/fi.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/fj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/fj.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/fk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/fk.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/fm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/fm.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/fr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/fr.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ga.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ga.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/gb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/gb.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/gd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/gd.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ge.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/gh.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/gi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/gi.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/gm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/gm.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/gn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/gn.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/gq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/gq.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/gr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/gr.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/gt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/gt.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/gw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/gw.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/gy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/gy.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/hk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/hk.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/hn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/hn.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/hr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/hr.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ht.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ht.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/hu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/hu.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/id.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/id.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ie.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/il.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/il.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/in.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/in.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/iq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/iq.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ir.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/is.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/is.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/it.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/it.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/jm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/jm.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/jo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/jo.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/jp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/jp.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ke.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ke.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/kg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/kg.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/kh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/kh.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ki.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ki.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/km.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/km.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/kn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/kn.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/kp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/kp.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/kr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/kr.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ks.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/kw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/kw.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/kz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/kz.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/la.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/la.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/lb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/lb.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/lc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/lc.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/li.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/li.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/lk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/lk.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/lr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/lr.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ls.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/lt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/lt.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/lu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/lu.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/lv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/lv.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ly.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ly.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ma.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/mc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/mc.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/md.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/md.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/me.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/me.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/mg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/mg.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/mh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/mh.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/mk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/mk.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ml.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ml.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/mm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/mm.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/mn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/mn.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/mr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/mr.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/mt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/mt.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/mu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/mu.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/mv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/mv.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/mw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/mw.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/mx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/mx.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/my.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/my.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/mz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/mz.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/na.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/na.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ne.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ne.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ng.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ni.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/nl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/nl.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/no.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/no.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/np.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/np.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/nr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/nr.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/nz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/nz.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/om.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/om.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/pa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/pa.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/pe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/pe.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/pg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/pg.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ph.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/pk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/pk.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/pl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/pl.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/pt.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/pw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/pw.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/py.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/py.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/qa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/qa.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ro.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/rs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/rs.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ru.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ru.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/rw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/rw.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/sa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/sa.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/sb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/sb.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/sc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/sc.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/sd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/sd.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/se.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/se.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/sg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/sg.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/si.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/si.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/sk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/sk.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/sl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/sl.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/sm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/sm.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/sn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/sn.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/so.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/so.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/sr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/sr.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/st.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/st.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/sv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/sv.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/sy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/sy.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/sz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/sz.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/td.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/td.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/tg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/tg.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/th.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/th.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/tj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/tj.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/tl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/tl.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/tm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/tm.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/tn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/tn.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/to.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/to.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/tr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/tr.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/tt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/tt.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/tv.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/tw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/tw.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/tz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/tz.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ua.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ua.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ug.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/us.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/us.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/uy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/uy.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/uz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/uz.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/va.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/va.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/vc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/vc.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ve.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/vn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/vn.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/vu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/vu.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ws.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ws.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/ye.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/ye.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/za.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/za.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/zm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/zm.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable-nodpi/zw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable-nodpi/zw.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/ccp_selectable_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/flag_tp.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/flag_transparent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/flag_transparent.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/fo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/fo.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/gf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/gf.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/gl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/gl.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/ic_arrow_drop_down.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/ic_backspace_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/ic_clear_black.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/ic_search_black.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/im.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/im.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/ky.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/ky.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/mo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/mo.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/mq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/mq.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/ms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/ms.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/nc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/nc.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/nu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/nu.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/pf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/pf.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/picker_chip_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/pm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/pm.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/pn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/pn.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/pr.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/ps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/ps.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/re.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/re.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/sx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/sx.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/tc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/tc.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/tk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/tk.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/vg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/vg.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/vi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/vi.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/drawable/wf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/materialcountrypicker/src/main/res/drawable/wf.png
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/layout/activity_country_picker.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
18 |
19 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/layout/dialog_country_picker.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
14 |
15 |
25 |
26 |
40 |
41 |
42 |
47 |
48 |
56 |
57 |
58 |
63 |
64 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/layout/header.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
18 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/layout/item.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
17 |
18 |
24 |
25 |
26 |
39 |
40 |
57 |
58 |
67 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/layout/picker_ui.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
26 |
27 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/layout/picker_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
14 |
15 |
20 |
21 |
28 |
29 |
39 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/menu/picker_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/values/color.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #008577
4 | #64b7b7b7
5 | #a2b7b7b7
6 | #64b7b7b7
7 |
8 | @android:color/secondary_text_light
9 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/values/dimen.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 8dp
4 | 5dp
5 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | countrypicker
3 | Select Country
4 | No result found
5 | Search for country
6 | +91
7 | %s ( %s )
8 | %s
9 | %s
10 | (%s) %s
11 | %s
12 | (%s)
13 | Search a country
14 | (NG) +234
15 |
16 |
--------------------------------------------------------------------------------
/materialcountrypicker/src/main/res/values/style.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/screenshots/screen1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/screenshots/screen1.jpg
--------------------------------------------------------------------------------
/screenshots/screen2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vardemin/MaterialCountryPicker/237bc46b86c29a7713de404b060c767271708327/screenshots/screen2.jpg
--------------------------------------------------------------------------------
/sectionedrecycleradapter/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/sectionedrecycleradapter/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'kotlin-android'
3 | apply plugin: 'kotlin-android-extensions'
4 | apply plugin: 'com.github.dcendents.android-maven'
5 | group = 'com.github.vardemin'
6 | version = "$materialcountrypicker_version"
7 |
8 | android {
9 | compileSdkVersion 28
10 |
11 |
12 | defaultConfig {
13 | minSdkVersion 16
14 | targetSdkVersion 28
15 | versionCode 1
16 | versionName "1.0"
17 |
18 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
19 |
20 | }
21 |
22 | buildTypes {
23 | release {
24 | minifyEnabled false
25 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
26 | }
27 | }
28 | compileOptions {
29 | sourceCompatibility JavaVersion.VERSION_1_8
30 | targetCompatibility JavaVersion.VERSION_1_8
31 | }
32 | }
33 |
34 | dependencies {
35 | implementation fileTree(dir: 'libs', include: ['*.jar'])
36 |
37 | implementation 'androidx.recyclerview:recyclerview:1.0.0'
38 | implementation 'androidx.core:core-ktx:1.2.0-alpha02'
39 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
40 | }
41 | repositories {
42 | mavenCentral()
43 | }
44 |
--------------------------------------------------------------------------------
/sectionedrecycleradapter/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/sectionedrecycleradapter/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/sectionedrecycleradapter/src/main/java/com/github/vardemin/sectionedrecycleradapter/ItemCoord.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.sectionedrecycleradapter
2 |
3 | class ItemCoord(val section: Int, val relativePos: Int) {
4 |
5 | fun section(): Int {
6 | return section
7 | }
8 |
9 | fun relativePos(): Int {
10 | return relativePos
11 | }
12 |
13 | override fun equals(other: Any?): Boolean {
14 | return (other is ItemCoord
15 | && other.section() == section()
16 | && other.relativePos() == relativePos())
17 | }
18 |
19 | override fun toString(): String {
20 | return "$section:$relativePos"
21 | }
22 | }
--------------------------------------------------------------------------------
/sectionedrecycleradapter/src/main/java/com/github/vardemin/sectionedrecycleradapter/ItemProvider.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.sectionedrecycleradapter
2 |
3 | import androidx.annotation.RestrictTo
4 |
5 | @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
6 | interface ItemProvider {
7 | fun getSectionCount(): Int
8 |
9 | fun getItemCount(sectionIndex: Int): Int
10 |
11 | fun showHeadersForEmptySections(): Boolean
12 |
13 | fun showFooters(): Boolean
14 | }
--------------------------------------------------------------------------------
/sectionedrecycleradapter/src/main/java/com/github/vardemin/sectionedrecycleradapter/PositionManager.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.sectionedrecycleradapter
2 |
3 | import androidx.collection.ArrayMap
4 |
5 | class PositionManager: PositionDelegate {
6 |
7 | private val headerLocationMap: ArrayMap = ArrayMap()
8 | private val footerLocationMap: ArrayMap = ArrayMap()
9 | private val collapsedSectionMap: ArrayMap = ArrayMap()
10 |
11 | private var itemProvider: ItemProvider? = null
12 | private var hasInvalidated: Boolean = false
13 |
14 | fun hasInvalidated(): Boolean {
15 | return hasInvalidated
16 | }
17 |
18 | fun invalidate(itemProvider: ItemProvider): Int {
19 | this.hasInvalidated = true
20 | this.itemProvider = itemProvider
21 | var count = 0
22 | headerLocationMap.clear()
23 | footerLocationMap.clear()
24 | for (s in 0 until itemProvider.getSectionCount()) {
25 | val itemCount = itemProvider.getItemCount(s)
26 | if (collapsedSectionMap[s] != null) {
27 | headerLocationMap[count] = s
28 | count += 1
29 | continue
30 | }
31 | if (itemProvider.showHeadersForEmptySections() || itemCount > 0) {
32 | headerLocationMap[count] = s
33 | count += itemCount + 1
34 | if (itemProvider.showFooters()) {
35 | footerLocationMap[count] = s
36 | count += 1
37 | }
38 | }
39 | }
40 | return count
41 | }
42 |
43 | override fun isHeader(absolutePosition: Int): Boolean {
44 | return headerLocationMap[absolutePosition] != null
45 | }
46 |
47 | override fun isFooter(absolutePosition: Int): Boolean {
48 | return footerLocationMap[absolutePosition] != null
49 | }
50 |
51 | fun sectionId(absolutePosition: Int): Int {
52 | return headerLocationMap[absolutePosition] ?: return -1
53 | }
54 |
55 | fun footerId(absolutePosition: Int): Int {
56 | return footerLocationMap[absolutePosition] ?: return -1
57 | }
58 |
59 | fun sectionHeaderIndex(section: Int): Int {
60 | for (key in headerLocationMap.keys) {
61 | if (headerLocationMap[key] == section) {
62 | return key!!
63 | }
64 | }
65 | return -1
66 | }
67 |
68 | fun sectionFooterIndex(section: Int): Int {
69 | for (key in footerLocationMap.keys) {
70 | if (footerLocationMap[key] == section) {
71 | return key!!
72 | }
73 | }
74 | return -1
75 | }
76 |
77 | override fun relativePosition(absolutePosition: Int): ItemCoord {
78 | val absHeaderLoc = headerLocationMap[absolutePosition]
79 | if (absHeaderLoc != null) {
80 | return ItemCoord(absHeaderLoc, -1)
81 | }
82 | var lastSectionIndex: Int? = -1
83 | for (sectionIndex in headerLocationMap.keys) {
84 | if (absolutePosition > sectionIndex) {
85 | lastSectionIndex = sectionIndex
86 | } else {
87 | break
88 | }
89 | }
90 | return ItemCoord(
91 | headerLocationMap[lastSectionIndex] ?: -1, absolutePosition - lastSectionIndex!! - 1
92 | )
93 | }
94 |
95 | /**
96 | * Converts a relative position (index inside of a section) to an absolute position (index out of
97 | * all items and headers).
98 | */
99 | fun absolutePosition(sectionIndex: Int, relativeIndex: Int): Int {
100 | if (sectionIndex < 0 || sectionIndex > (itemProvider?.getSectionCount() ?: 0) - 1) {
101 | return -1
102 | }
103 | val sectionHeaderIndex = sectionHeaderIndex(sectionIndex)
104 | return if (relativeIndex > (itemProvider?.getItemCount(sectionIndex)?: 0) - 1) {
105 | -1
106 | } else sectionHeaderIndex + (relativeIndex + 1)
107 | }
108 |
109 | /**
110 | * Converts a relative position (index inside of a section) to an absolute position (index out of
111 | * all items and headers).
112 | */
113 | fun absolutePosition(relativePosition: ItemCoord): Int {
114 | return absolutePosition(relativePosition.section(), relativePosition.relativePos())
115 | }
116 |
117 | fun expandSection(section: Int) {
118 | if (section < 0 || section > (itemProvider?.getSectionCount() ?: 0) - 1) {
119 | throw IllegalArgumentException("Section $section is out of bounds.")
120 | }
121 | collapsedSectionMap.remove(section)
122 | }
123 |
124 | fun collapseSection(section: Int) {
125 | if (section < 0 || section > (itemProvider?.getSectionCount() ?: 0) - 1) {
126 | throw IllegalArgumentException("Section $section is out of bounds.")
127 | }
128 | collapsedSectionMap[section] = true
129 | }
130 |
131 | fun toggleSectionExpanded(section: Int) {
132 | if (collapsedSectionMap[section] != null) {
133 | expandSection(section)
134 | } else {
135 | collapseSection(section)
136 | }
137 | }
138 |
139 | fun expandAllSections() {
140 | for (i in 0 until (itemProvider?.getSectionCount() ?: 0)) {
141 | expandSection(i)
142 | }
143 | }
144 |
145 | fun collapseAllSections() {
146 | for (i in 0 until (itemProvider?.getSectionCount() ?: 0)) {
147 | collapseSection(i)
148 | }
149 | }
150 |
151 | fun isSectionExpanded(section: Int): Boolean {
152 | if (section < 0 || section > (itemProvider?.getSectionCount() ?: 0) - 1) {
153 | throw IllegalArgumentException("Section $section is out of bounds.")
154 | }
155 | return collapsedSectionMap[section] == null
156 | }
157 | }
--------------------------------------------------------------------------------
/sectionedrecycleradapter/src/main/java/com/github/vardemin/sectionedrecycleradapter/SectionViewHolder.kt:
--------------------------------------------------------------------------------
1 | package com.github.vardemin.sectionedrecycleradapter
2 |
3 | import android.view.View
4 | import androidx.recyclerview.widget.RecyclerView
5 |
6 | abstract class SectionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
7 | var positionDelegate: PositionDelegate? = null
8 |
9 | protected fun getRelativePosition(): ItemCoord? {
10 | return positionDelegate?.relativePosition(adapterPosition)
11 | }
12 |
13 | protected fun isHeader(): Boolean {
14 | return positionDelegate?.isHeader(adapterPosition) == true
15 | }
16 |
17 | protected fun isFooter(): Boolean {
18 | return positionDelegate?.isFooter(adapterPosition) == true
19 | }
20 | }
21 |
22 | interface PositionDelegate {
23 | fun relativePosition(absolutePosition: Int): ItemCoord
24 |
25 | fun isHeader(absolutePosition: Int): Boolean
26 |
27 | fun isFooter(absolutePosition: Int): Boolean
28 | }
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':materialcountrypicker', ':sectionedrecycleradapter', ':fastscroll'
2 |
--------------------------------------------------------------------------------