├── .gitignore ├── .idea ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── gradle.xml ├── misc.xml ├── modules.xml └── runConfigurations.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── qlh │ │ └── dropmenu │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── qlh │ │ │ └── dropmenu │ │ │ └── MainActivity.java │ └── res │ │ ├── drawable │ │ ├── drop_down_selected_icon.png │ │ └── drop_down_unselected_icon.png │ │ ├── layout │ │ ├── activity_main.xml │ │ └── content_view.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 │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── qlh │ └── dropmenu │ └── ExampleUnitTest.java ├── build.gradle ├── dropdownmenu ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── qlh │ │ └── dropdownmenu │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── qlh │ │ │ └── dropdownmenu │ │ │ ├── DeviceUtils.java │ │ │ ├── DropDownMenu.java │ │ │ ├── adapter │ │ │ └── TextAdapter.java │ │ │ └── view │ │ │ ├── MultiMenusView.java │ │ │ ├── SingleMenuView.java │ │ │ └── ViewBaseAction.java │ └── res │ │ ├── anim │ │ ├── dd_mask_in.xml │ │ ├── dd_mask_out.xml │ │ ├── dd_menu_in.xml │ │ └── dd_menu_out.xml │ │ ├── drawable │ │ ├── choose_item_selected.png │ │ ├── choose_level_one_menu_item_selector.xml │ │ └── choose_level_two_menu_item_selector.xml │ │ ├── layout │ │ ├── choose_item.xml │ │ ├── tab_menu_ly.xml │ │ ├── view_multi_menu.xml │ │ └── view_single_menu.xml │ │ ├── values-1024x600 │ │ ├── lay_x.xml │ │ └── lay_y.xml │ │ ├── values-1024x768 │ │ ├── lay_x.xml │ │ └── lay_y.xml │ │ ├── values-1184x720 │ │ ├── lay_x.xml │ │ └── lay_y.xml │ │ ├── values-1196x720 │ │ ├── lay_x.xml │ │ └── lay_y.xml │ │ ├── values-1280x720 │ │ ├── lay_x.xml │ │ └── lay_y.xml │ │ ├── values-1280x800 │ │ ├── lay_x.xml │ │ └── lay_y.xml │ │ ├── values-1812x1080 │ │ ├── lay_x.xml │ │ └── lay_y.xml │ │ ├── values-1920x1080 │ │ ├── lay_x.xml │ │ └── lay_y.xml │ │ ├── values-2560x1440 │ │ ├── lay_x.xml │ │ └── lay_y.xml │ │ ├── values-480x320 │ │ ├── lay_x.xml │ │ └── lay_y.xml │ │ ├── values-800x480 │ │ ├── lay_x.xml │ │ └── lay_y.xml │ │ ├── values-854x480 │ │ ├── lay_x.xml │ │ └── lay_y.xml │ │ ├── values-960x540 │ │ ├── lay_x.xml │ │ └── lay_y.xml │ │ └── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── qlh │ └── dropdownmenu │ └── ExampleUnitTest.java ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | 47 | 48 | 49 | 50 | 1.8 51 | 52 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 最新修改(可以直接DropMenu:+   [随时获取最新的版本]) 2 | 1.0.1版本:修改MultiMenusView中levelOneMenuList固定数目的错误;增加控制是否使用高度百分比的属性isUsePopMenuHeightPercent;给二级菜单添加分割线 3 | ## 简介 4 | 这是一个改写过的多级下拉菜单(给自己项目使用的),可以根据自己的需求进行添加各种菜单样式,在很多App上都能看到这个效果,如美团,爱奇艺电影票等,单级菜单, 5 | 多级菜单和其他自定义的菜单。本项目参考下面的开源库,搭了基本的框架,可以自己根据要求添加菜单视图。 6 | 7 | 主要参考开源库:[DropDownMenu](https://github.com/dongjunkun/DropDownMenu)。在此表示感谢,喜欢的可以自己参考原库进行改写 8 | ## 特色 9 | * 支持多级菜单,对应类**MultiMenusView** 10 | * 支持单级菜单,对应类**SingleMenuView** 11 | * 当然你也可以完全自定义下拉列表的展现形式,使用复杂的布局等 12 | * 你可以完全自定义你的菜单样式,我这里只是封装了一些实用的方法,Tab的切换效果,菜单显示隐藏效果等 13 | * 并非用popupWindow实现,无卡顿 14 | ## ScreenShot 15 | ![dropmenu.gif](http://note.youdao.com/yws/public/resource/7ef1d889de68ddafc07874e25cadfd57/xmlnote/8C9AEFB246474938BA5DA99FEFA087A0/10690) 16 | 17 | ## 使用 18 | 1. 添加依赖 19 | 20 | Add it in your project build.gradle at the end of repositories: 21 | ``` 22 | allprojects { 23 | repositories { 24 | ... 25 | maven { url 'https://jitpack.io' } 26 | } 27 | } 28 | ``` 29 | Add it in your module build.gradle 30 | ``` 31 | dependencies { 32 |        compile 'com.github.wzgl5533:DropMenu:1.0.1' 33 | } 34 | ``` 35 | 2. 添加DropDownMenu 到你的布局文件,如下: 36 | ``` 37 | 51 | ``` 52 | 53 | ## DropDownMenu类的主要结构: 54 | 55 | 根布局包含: 56 | 57 | * tabMenuView —— 菜单顶部导航布局 58 | * underLine —— 下划线 59 | * containerView(包含contentView[内容],maskView[遮罩],popupMenuViews[下拉弹框])—— 底部容器 60 | * 说明:这些布局都是可以进行自己定义,根据自己的项目需求进行改装 61 | 62 | ## 本项目主文件MainActivity.java 63 | ``` 64 | package com.qlh.dropmenu; 65 | 66 | import android.os.Bundle; 67 | import android.support.v7.app.AppCompatActivity; 68 | import android.view.LayoutInflater; 69 | import android.view.View; 70 | 71 | import com.qlh.dropdownmenu.DropDownMenu; 72 | import com.qlh.dropdownmenu.view.MultiMenusView; 73 | import com.qlh.dropdownmenu.view.SingleMenuView; 74 | 75 | import java.util.ArrayList; 76 | import java.util.Arrays; 77 | import java.util.List; 78 | 79 | public class MainActivity extends AppCompatActivity { 80 | 81 | private MainActivity instance; 82 | private String[] headers;//菜单头部选项 83 | private List popupViews = new ArrayList<>();//菜单列表视图 84 | private DropDownMenu mDropDownMenu; 85 | private MultiMenusView multiMenusView;//多级菜单 86 | private SingleMenuView singleMenuView;//单级菜单 87 | //内容视图 88 | private View contentView; 89 | 90 | @Override 91 | protected void onCreate(Bundle savedInstanceState) { 92 | super.onCreate(savedInstanceState); 93 | setContentView(R.layout.activity_main); 94 | 95 | init(); 96 | } 97 | 98 | private void init() { 99 | instance = this; 100 | initView(); 101 | initMenus(); 102 | initListener(); 103 | 104 | } 105 | 106 | private void initView() { 107 | 108 | mDropDownMenu = (DropDownMenu) findViewById(R.id.dropDownMenu); 109 | } 110 | 111 | private void initMenus() { 112 | 113 | headers = new String[]{"木材类别", "产地"}; 114 | //初始化多级菜单 115 | final String[] levelOneMenu = {"全部", "原木", "板材", "方料"}; 116 | final String[][] levelTwoMenu = { 117 | {"辐射松", "铁杉", "樟子松", "云杉", "红橡", "白橡", "樟木", "桦木", "沙比利", "奥坎", "榉木", "落叶松"}, 118 | {"辐射松", "铁杉", "樟子松", "云杉"}, 119 | {"红橡", "白橡", "樟木", "桦木"}, 120 | {"沙比利", "奥坎", "榉木", "落叶松"} 121 | }; 122 | multiMenusView = new MultiMenusView(instance,levelOneMenu,levelTwoMenu); 123 | popupViews.add(multiMenusView); 124 | //初始化单级菜单 125 | String[] addressArrays = {"不限","澳大利亚", "美国", "英国", "法国", "日本", "新西兰", "印度"}; 126 | singleMenuView = new SingleMenuView(instance,addressArrays); 127 | popupViews.add(singleMenuView); 128 | //初始化内容视图 129 | contentView = LayoutInflater.from(instance).inflate(R.layout.content_view,null); 130 | //装载 131 | mDropDownMenu.setDropDownMenu(Arrays.asList(headers),popupViews,contentView); 132 | 133 | } 134 | 135 | private void initListener() { 136 | 137 | //下拉菜单 138 | multiMenusView.setOnSelectListener(new MultiMenusView.OnSelectListener() { 139 | @Override 140 | public void getValue(String showText) { 141 | mDropDownMenu.setTabText(showText); 142 | mDropDownMenu.closeMenu(); 143 | } 144 | }); 145 | singleMenuView.setOnSelectListener(new SingleMenuView.OnSelectListener() { 146 | @Override 147 | public void getValue(int position, String showText) { 148 | mDropDownMenu.setTabText(showText); 149 | mDropDownMenu.closeMenu(); 150 | } 151 | }); 152 | } 153 | } 154 | ``` 155 | ## 备注 156 | 如果你要了解更多,可以直接看源码或者关注原作者的项目,喝水不忘挖井人,喜欢的可以打个星,欢迎不断扩展 157 | > 可以直接添加依赖库到工程中(AS),ES的只能复制了 158 | 159 | ## 关于我的点滴 160 | 161 | 简书:[小胖归来](http://www.jianshu.com/p/0a313554364b) 162 | 163 | CSDN:[奔跑的小虎](http://blog.csdn.net/wzgl708937822) 164 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 25 5 | buildToolsVersion "25.0.2" 6 | defaultConfig { 7 | applicationId "com.qlh.dropmenu" 8 | minSdkVersion 15 9 | targetSdkVersion 25 10 | versionCode 1 11 | versionName "1.0" 12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(include: ['*.jar'], dir: 'libs') 24 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 25 | exclude group: 'com.android.support', module: 'support-annotations' 26 | }) 27 | compile 'com.android.support:appcompat-v7:25.3.1' 28 | compile 'com.android.support.constraint:constraint-layout:1.0.2' 29 | testCompile 'junit:junit:4.12' 30 | compile project(':dropdownmenu') 31 | } 32 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in D:\Android\SDK\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | # Uncomment this to preserve the line number information for 20 | # debugging stack traces. 21 | #-keepattributes SourceFile,LineNumberTable 22 | 23 | # If you keep the line number information, uncomment this to 24 | # hide the original source file name. 25 | #-renamesourcefileattribute SourceFile 26 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/qlh/dropmenu/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.qlh.dropmenu; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumentation test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.qlh.dropmenu", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/qlh/dropmenu/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.qlh.dropmenu; 2 | 3 | import android.os.Bundle; 4 | import android.support.v7.app.AppCompatActivity; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | 8 | import com.qlh.dropdownmenu.DropDownMenu; 9 | import com.qlh.dropdownmenu.view.MultiMenusView; 10 | import com.qlh.dropdownmenu.view.SingleMenuView; 11 | 12 | import java.util.ArrayList; 13 | import java.util.Arrays; 14 | import java.util.List; 15 | 16 | public class MainActivity extends AppCompatActivity { 17 | 18 | private MainActivity instance; 19 | private String[] headers;//菜单头部选项 20 | private List popupViews = new ArrayList<>();//菜单列表视图 21 | private DropDownMenu mDropDownMenu; 22 | private MultiMenusView multiMenusView;//多级菜单 23 | private SingleMenuView singleMenuView;//单级菜单 24 | //内容视图 25 | private View contentView; 26 | 27 | @Override 28 | protected void onCreate(Bundle savedInstanceState) { 29 | super.onCreate(savedInstanceState); 30 | setContentView(R.layout.activity_main); 31 | 32 | init(); 33 | } 34 | 35 | private void init() { 36 | instance = this; 37 | initView(); 38 | initMenus(); 39 | initListener(); 40 | 41 | } 42 | 43 | private void initView() { 44 | 45 | mDropDownMenu = (DropDownMenu) findViewById(R.id.dropDownMenu); 46 | } 47 | 48 | private void initMenus() { 49 | 50 | headers = new String[]{"木材类别", "产地"}; 51 | //初始化多级菜单 52 | final String[] levelOneMenu = {"全部", "原木", "板材", "方料","灌木"}; 53 | final String[][] levelTwoMenu = { 54 | {"辐射松", "铁杉", "樟子松", "云杉", "红橡", "白橡", "樟木", "桦木", "沙比利", "奥坎", "榉木", "落叶松"}, 55 | {"辐射松", "铁杉", "樟子松", "云杉"}, 56 | {"红橡", "白橡", "樟木", "桦木"}, 57 | {"沙比利", "奥坎", "榉木", "落叶松"}, 58 | {"针叶", "观杨", "梧桐", "香樟树"} 59 | }; 60 | multiMenusView = new MultiMenusView(instance,levelOneMenu,levelTwoMenu); 61 | popupViews.add(multiMenusView); 62 | //初始化单级菜单 63 | String[] addressArrays = {"不限","澳大利亚", "美国", "英国", "法国", "日本", "新西兰", "印度"}; 64 | singleMenuView = new SingleMenuView(instance,addressArrays); 65 | popupViews.add(singleMenuView); 66 | //初始化内容视图 67 | contentView = LayoutInflater.from(instance).inflate(R.layout.content_view,null); 68 | //装载 69 | mDropDownMenu.setDropDownMenu(Arrays.asList(headers),popupViews,contentView); 70 | 71 | } 72 | 73 | private void initListener() { 74 | 75 | //下拉菜单 76 | multiMenusView.setOnSelectListener(new MultiMenusView.OnSelectListener() { 77 | @Override 78 | public void getValue(String showText) { 79 | mDropDownMenu.setTabText(showText); 80 | mDropDownMenu.closeMenu(); 81 | } 82 | }); 83 | singleMenuView.setOnSelectListener(new SingleMenuView.OnSelectListener() { 84 | @Override 85 | public void getValue(int position, String showText) { 86 | mDropDownMenu.setTabText(showText); 87 | mDropDownMenu.closeMenu(); 88 | } 89 | }); 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/drop_down_selected_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/app/src/main/res/drawable/drop_down_selected_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/drop_down_unselected_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/app/src/main/res/drawable/drop_down_unselected_icon.png -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/content_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | #D8D8D8 7 | #0084ff 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | DropMenu 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/test/java/com/qlh/dropmenu/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.qlh.dropmenu; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.3.1' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | } 19 | } 20 | 21 | task clean(type: Delete) { 22 | delete rootProject.buildDir 23 | } 24 | -------------------------------------------------------------------------------- /dropdownmenu/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /dropdownmenu/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 25 5 | buildToolsVersion "25.0.2" 6 | 7 | defaultConfig { 8 | minSdkVersion 15 9 | targetSdkVersion 25 10 | versionCode 1 11 | versionName "1.0" 12 | 13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 14 | 15 | } 16 | buildTypes { 17 | release { 18 | minifyEnabled false 19 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 20 | } 21 | } 22 | } 23 | 24 | dependencies { 25 | compile fileTree(dir: 'libs', include: ['*.jar']) 26 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 27 | exclude group: 'com.android.support', module: 'support-annotations' 28 | }) 29 | compile 'com.android.support:appcompat-v7:25.3.1' 30 | testCompile 'junit:junit:4.12' 31 | } 32 | -------------------------------------------------------------------------------- /dropdownmenu/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in D:\Android\SDK\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | # Uncomment this to preserve the line number information for 20 | # debugging stack traces. 21 | #-keepattributes SourceFile,LineNumberTable 22 | 23 | # If you keep the line number information, uncomment this to 24 | # hide the original source file name. 25 | #-renamesourcefileattribute SourceFile 26 | -------------------------------------------------------------------------------- /dropdownmenu/src/androidTest/java/com/qlh/dropdownmenu/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.qlh.dropdownmenu; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumentation test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.qlh.dropdownmenu.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/java/com/qlh/dropdownmenu/DeviceUtils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Peng fei Pan 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.qlh.dropdownmenu; 18 | 19 | import android.annotation.TargetApi; 20 | import android.content.Context; 21 | import android.graphics.Point; 22 | import android.os.Build; 23 | import android.view.Display; 24 | import android.view.WindowManager; 25 | 26 | /** 27 | * 设备工具箱,提供与设备硬件相关的工具方法 28 | */ 29 | public class DeviceUtils { 30 | 31 | /** 32 | * 获取屏幕尺寸 33 | */ 34 | @SuppressWarnings("deprecation") 35 | @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) 36 | public static Point getScreenSize(Context context){ 37 | WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 38 | Display display = windowManager.getDefaultDisplay(); 39 | if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2){ 40 | return new Point(display.getWidth(), display.getHeight()); 41 | }else{ 42 | Point point = new Point(); 43 | display.getSize(point); 44 | return point; 45 | } 46 | } 47 | 48 | 49 | } -------------------------------------------------------------------------------- /dropdownmenu/src/main/java/com/qlh/dropdownmenu/DropDownMenu.java: -------------------------------------------------------------------------------- 1 | package com.qlh.dropdownmenu; 2 | 3 | import android.content.Context; 4 | import android.content.res.TypedArray; 5 | import android.support.annotation.NonNull; 6 | import android.text.TextUtils; 7 | import android.util.AttributeSet; 8 | import android.util.DisplayMetrics; 9 | import android.util.TypedValue; 10 | import android.view.LayoutInflater; 11 | import android.view.View; 12 | import android.view.ViewGroup; 13 | import android.view.animation.AnimationUtils; 14 | import android.widget.FrameLayout; 15 | import android.widget.ImageView; 16 | import android.widget.LinearLayout; 17 | import android.widget.TextView; 18 | 19 | import java.util.List; 20 | 21 | /** 22 | * Created by qlh on 2017/7/5. 23 | * 根布局DropDownMenu主要包括:tabMenuView,underLine,containerView(包含popupMenuViews,maskView) 24 | */ 25 | public class DropDownMenu extends LinearLayout { 26 | 27 | private Context context; 28 | //顶部菜单布局 29 | private LinearLayout tabMenuView; 30 | //底部容器,包含popupMenuViews,maskView 31 | private FrameLayout containerView; 32 | //弹出菜单父布局 33 | private FrameLayout popupMenuViews; 34 | //遮罩半透明View,点击可关闭DropDownMenu 35 | private View maskView; 36 | //tabMenuView里面选中的tab位置,-1表示未选中 37 | private int current_tab_position = -1; 38 | 39 | //分割线颜色 40 | private int dividerColor = 0xffcccccc; 41 | //tab选中颜色 42 | private int textSelectedColor = 0xff890c85; 43 | //tab未选中颜色 44 | private int textUnselectedColor = 0xff111111; 45 | //遮罩颜色 46 | private int maskColor = 0x88888888; 47 | //tab字体大小 48 | private int menuTextSize = 14; 49 | 50 | //tab选中图标 51 | private int menuSelectedIcon; 52 | //tab未选中图标 53 | private int menuUnselectedIcon; 54 | //menu tab高度,暂时不用 55 | private float tabMenuHeightPercent = ViewGroup.LayoutParams.WRAP_CONTENT; 56 | //是否使用高度百分比 57 | private boolean isUsePopMenuHeightPercent = false; 58 | //menu弹框最大高度,按照屏幕比例计算 59 | private float popMenuHeightPercent = 0.5f; 60 | 61 | 62 | public DropDownMenu(Context context) { 63 | super(context, null); 64 | } 65 | 66 | public DropDownMenu(Context context, AttributeSet attrs) { 67 | this(context, attrs, 0); 68 | } 69 | 70 | public DropDownMenu(Context context, AttributeSet attrs, int defStyleAttr) { 71 | super(context, attrs, defStyleAttr); 72 | 73 | this.context = context; 74 | //设置根布局为垂直方向 75 | setOrientation(VERTICAL); 76 | 77 | //为DropDownMenu添加自定义属性 78 | int menuBackgroundColor = 0xffffffff;//菜单导航背景颜色 79 | int underlineColor = 0xffcccccc;//下划线颜色 80 | //自定义属性 81 | TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DropDownMenu); 82 | underlineColor = a.getColor(R.styleable.DropDownMenu_ddunderlineColor, underlineColor);//下划线颜色 83 | dividerColor = a.getColor(R.styleable.DropDownMenu_dddividerColor, dividerColor);//分割线颜色 84 | //文本选中颜色 85 | textSelectedColor = a.getColor(R.styleable.DropDownMenu_ddtextSelectedColor, textSelectedColor); 86 | //文本未选中颜色 87 | textUnselectedColor = a.getColor(R.styleable.DropDownMenu_ddtextUnselectedColor, textUnselectedColor); 88 | //菜单导航背景颜色 89 | menuBackgroundColor = a.getColor(R.styleable.DropDownMenu_ddmenuBackgroundColor, menuBackgroundColor); 90 | //遮罩层颜色 91 | maskColor = a.getColor(R.styleable.DropDownMenu_ddmaskColor, maskColor); 92 | //菜单导航文本字体大小 93 | menuTextSize = a.getDimensionPixelSize(R.styleable.DropDownMenu_ddmenuTextSize, menuTextSize); 94 | //菜单导航item选中时箭头图标 95 | menuSelectedIcon = a.getResourceId(R.styleable.DropDownMenu_ddmenuSelectedIcon, menuSelectedIcon); 96 | //菜单导航item未选中时箭头图标 97 | menuUnselectedIcon = a.getResourceId(R.styleable.DropDownMenu_ddmenuUnselectedIcon, menuUnselectedIcon); 98 | //是否使用高度百分比 99 | isUsePopMenuHeightPercent = a.getBoolean(R.styleable 100 | .DropDownMenu_ddIsUsePopMenuHeightPercent,isUsePopMenuHeightPercent); 101 | //菜单导航高度 102 | popMenuHeightPercent = a.getFloat(R.styleable.DropDownMenu_ddpopMenuHeightPercent, popMenuHeightPercent); 103 | a.recycle(); 104 | 105 | //初始化tabMenuView并添加到主布局DropDownMenu 106 | tabMenuView = new LinearLayout(context); 107 | LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 108 | tabMenuView.setOrientation(HORIZONTAL); 109 | tabMenuView.setBackgroundColor(menuBackgroundColor); 110 | tabMenuView.setLayoutParams(params); 111 | addView(tabMenuView, 0); 112 | 113 | //为主布局DropDownMenu添加下划线 114 | View underLine = new View(getContext()); 115 | underLine.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dpTpPx 116 | (0.5f))); 117 | underLine.setBackgroundColor(underlineColor); 118 | addView(underLine, 1); 119 | 120 | //初始化containerView并将其添加到DropDownMenu 121 | containerView = new FrameLayout(context); 122 | containerView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); 123 | addView(containerView, 2); 124 | 125 | } 126 | 127 | /** 128 | * 初始化DropDownMenu 129 | * 130 | * @param tabTexts 131 | * @param popupViews 132 | * @param contentView 133 | */ 134 | public void setDropDownMenu(@NonNull List tabTexts, @NonNull List popupViews, @NonNull View contentView) { 135 | if (tabTexts.size() != popupViews.size()) { 136 | throw new IllegalArgumentException("params not match, tabTexts.size() should be equal popupViews.size()"); 137 | } 138 | 139 | for (int i = 0; i < tabTexts.size(); i++) { 140 | addTab(tabTexts, i); 141 | } 142 | containerView.addView(contentView, 0); 143 | 144 | maskView = new View(getContext()); 145 | maskView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); 146 | maskView.setBackgroundColor(maskColor); 147 | maskView.setOnClickListener(new OnClickListener() { 148 | @Override 149 | public void onClick(View v) { 150 | closeMenu(); 151 | } 152 | }); 153 | containerView.addView(maskView, 1); 154 | maskView.setVisibility(GONE); 155 | 156 | popupMenuViews = new FrameLayout(getContext()); 157 | 158 | if (isUsePopMenuHeightPercent) 159 | popupMenuViews.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams 160 | .MATCH_PARENT,(int)(DeviceUtils.getScreenSize(getContext()).y * popMenuHeightPercent))); 161 | 162 | popupMenuViews.setVisibility(GONE); 163 | containerView.addView(popupMenuViews, 2); 164 | 165 | for (int i = 0; i < popupViews.size(); i++) { 166 | popupViews.get(i).setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 167 | popupMenuViews.addView(popupViews.get(i), i); 168 | } 169 | 170 | } 171 | 172 | private void addTab(@NonNull List tabTexts, int i) { 173 | 174 | final View tabView = LayoutInflater.from(context).inflate(R.layout.tab_menu_ly,null); 175 | tabView.setLayoutParams(new LayoutParams(0, ViewGroup.LayoutParams 176 | .WRAP_CONTENT,1.0f)); 177 | tabView.setPadding(dpTpPx(0), dpTpPx(12), dpTpPx(0), dpTpPx(12)); 178 | 179 | TextView tabText = (TextView) tabView.findViewById(R.id.tab_menu_txt); 180 | ImageView tabImg = (ImageView) tabView.findViewById(R.id.tab_menu_img); 181 | 182 | tabText.setSingleLine(); 183 | tabText.setEllipsize(TextUtils.TruncateAt.END); 184 | tabText.setTextSize(TypedValue.COMPLEX_UNIT_PX,menuTextSize); 185 | tabText.setTextColor(textUnselectedColor); 186 | tabText.setText(tabTexts.get(i)); 187 | LayoutParams lp = (LayoutParams) tabText.getLayoutParams(); 188 | lp.rightMargin = (int) getResources().getDimension(R.dimen.txt_to_img_distance); 189 | tabText.setLayoutParams(lp); 190 | 191 | tabImg.setImageResource(menuUnselectedIcon); 192 | tabImg.setLayoutParams(new LayoutParams((int)(getResources().getDimension(R.dimen 193 | .img_icon_width)),(int) (getResources().getDimension(R.dimen 194 | .img_icon_height)))); 195 | 196 | tabView.setOnClickListener(new OnClickListener() { 197 | @Override 198 | public void onClick(View v) { 199 | switchMenu(tabView); 200 | } 201 | }); 202 | tabMenuView.addView(tabView); 203 | //添加分割线 204 | if (i < tabTexts.size() - 1) { 205 | View view = new View(getContext()); 206 | view.setLayoutParams(new LayoutParams(dpTpPx(0.5f), ViewGroup.LayoutParams.MATCH_PARENT)); 207 | view.setBackgroundColor(dividerColor); 208 | tabMenuView.addView(view); 209 | } 210 | } 211 | 212 | /** 213 | * 改变tab文字 214 | * 215 | * @param text 216 | */ 217 | public void setTabText(String text) { 218 | if (current_tab_position != -1) { 219 | 220 | LinearLayout ly = (LinearLayout) tabMenuView.getChildAt(current_tab_position); 221 | ((TextView)ly.getChildAt(0)).setText(text); 222 | } 223 | } 224 | 225 | public void setTabClickable(boolean clickable) { 226 | for (int i = 0; i < tabMenuView.getChildCount(); i = i + 2) { 227 | tabMenuView.getChildAt(i).setClickable(clickable); 228 | } 229 | } 230 | 231 | /** 232 | * 关闭菜单 233 | */ 234 | public void closeMenu() { 235 | if (current_tab_position != -1) { 236 | 237 | LinearLayout ly = (LinearLayout) tabMenuView.getChildAt(current_tab_position); 238 | ((TextView)ly.getChildAt(0)).setTextColor(textUnselectedColor); 239 | ((ImageView)ly.getChildAt(1)).setImageResource(menuUnselectedIcon); 240 | 241 | popupMenuViews.setVisibility(View.GONE); 242 | popupMenuViews.setAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.dd_menu_out)); 243 | maskView.setVisibility(GONE); 244 | maskView.setAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.dd_mask_out)); 245 | current_tab_position = -1; 246 | } 247 | 248 | } 249 | 250 | /** 251 | * DropDownMenu是否处于可见状态 252 | * 253 | * @return 254 | */ 255 | public boolean isShowing() { 256 | return current_tab_position != -1; 257 | } 258 | 259 | /** 260 | * 切换菜单 261 | * 262 | * @param target 263 | */ 264 | private void switchMenu(View target) { 265 | 266 | for (int i = 0; i < tabMenuView.getChildCount(); i = i + 2) { 267 | if (target == tabMenuView.getChildAt(i)) { 268 | if (current_tab_position == i) { 269 | closeMenu(); 270 | } else { 271 | if (current_tab_position == -1) { 272 | popupMenuViews.setVisibility(View.VISIBLE); 273 | popupMenuViews.setAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.dd_menu_in)); 274 | maskView.setVisibility(VISIBLE); 275 | maskView.setAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.dd_mask_in)); 276 | popupMenuViews.getChildAt(i / 2).setVisibility(View.VISIBLE); 277 | } else { 278 | popupMenuViews.getChildAt(i / 2).setVisibility(View.VISIBLE); 279 | } 280 | current_tab_position = i; 281 | 282 | LinearLayout ly = (LinearLayout) tabMenuView.getChildAt(i); 283 | ((TextView)ly.getChildAt(0)).setTextColor(textSelectedColor); 284 | ((ImageView)ly.getChildAt(1)).setImageResource(menuSelectedIcon); 285 | 286 | } 287 | } else { 288 | 289 | LinearLayout ly = (LinearLayout) tabMenuView.getChildAt(i); 290 | ((TextView)ly.getChildAt(0)).setTextColor(textUnselectedColor); 291 | ((ImageView)ly.getChildAt(1)).setImageResource(menuUnselectedIcon); 292 | 293 | popupMenuViews.getChildAt(i / 2).setVisibility(View.GONE); 294 | } 295 | } 296 | } 297 | 298 | public int dpTpPx(float value) { 299 | DisplayMetrics dm = getResources().getDisplayMetrics(); 300 | return (int) (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value, dm) + 0.5); 301 | } 302 | } 303 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/java/com/qlh/dropdownmenu/adapter/TextAdapter.java: -------------------------------------------------------------------------------- 1 | package com.qlh.dropdownmenu.adapter; 2 | 3 | import android.content.Context; 4 | import android.util.TypedValue; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.View.OnClickListener; 8 | import android.view.ViewGroup; 9 | import android.widget.ArrayAdapter; 10 | import android.widget.TextView; 11 | 12 | import com.qlh.dropdownmenu.R; 13 | 14 | import java.util.Arrays; 15 | import java.util.List; 16 | 17 | 18 | public class TextAdapter extends ArrayAdapter { 19 | 20 | private Context mContext; 21 | private List mListData; 22 | private String[] mArrayData; 23 | private int selectedPos = -1; 24 | private String selectedText = ""; 25 | /**选中的背景图片*/ 26 | private int selectBgId; 27 | /**未选中的背景图片*/ 28 | private int unSelectBgId; 29 | /**选中的文字颜色*/ 30 | private int selectTextColor; 31 | /**未选中的文字颜色*/ 32 | private int unSelectTextColor; 33 | private float textSize; 34 | private OnClickListener onClickListener; 35 | private OnItemClickListener mOnItemClickListener; 36 | 37 | public TextAdapter(Context context, List listData, int selectBgId, int unSelectBgId, 38 | int selectTextColor,int unSelectTextColor ) { 39 | super(context, R.string.no_data, listData); 40 | mContext = context; 41 | mListData = listData; 42 | this.selectBgId = selectBgId; 43 | this.unSelectBgId = unSelectBgId; 44 | this.selectTextColor = selectTextColor; 45 | this.unSelectTextColor = unSelectTextColor; 46 | 47 | init(); 48 | } 49 | 50 | public TextAdapter(Context context, String[] arrayData, int selectBgId, int unSelectBgId, 51 | int selectTextColor,int unSelectTextColor) { 52 | 53 | this(context, Arrays.asList(arrayData),selectBgId,unSelectBgId,selectTextColor,unSelectTextColor); 54 | } 55 | 56 | private void init() { 57 | onClickListener = new OnClickListener() { 58 | 59 | @Override 60 | public void onClick(View view) { 61 | selectedPos = (Integer) view.getTag(); 62 | setSelectedPosition(selectedPos); 63 | if (mOnItemClickListener != null) { 64 | mOnItemClickListener.onItemClick(view, selectedPos); 65 | } 66 | } 67 | }; 68 | } 69 | 70 | /** 71 | * 设置选中的position,并通知列表刷新 72 | */ 73 | public void setSelectedPosition(int pos) { 74 | if (mListData != null && pos < mListData.size()) { 75 | selectedPos = pos; 76 | selectedText = mListData.get(pos); 77 | notifyDataSetChanged(); 78 | } else if (mArrayData != null && pos < mArrayData.length) { 79 | selectedPos = pos; 80 | selectedText = mArrayData[pos]; 81 | notifyDataSetChanged(); 82 | } 83 | 84 | } 85 | 86 | /** 87 | * 设置选中的position,但不通知刷新 88 | */ 89 | public void setSelectedPositionNoNotify(int pos) { 90 | selectedPos = pos; 91 | if (mListData != null && pos < mListData.size()) { 92 | selectedText = mListData.get(pos); 93 | } else if (mArrayData != null && pos < mArrayData.length) { 94 | selectedText = mArrayData[pos]; 95 | } 96 | } 97 | 98 | /** 99 | * 获取选中的position 100 | */ 101 | public int getSelectedPosition() { 102 | if (mArrayData != null && selectedPos < mArrayData.length) { 103 | return selectedPos; 104 | } 105 | if (mListData != null && selectedPos < mListData.size()) { 106 | return selectedPos; 107 | } 108 | 109 | return -1; 110 | } 111 | 112 | /** 113 | * 设置列表字体大小 114 | */ 115 | public void setTextSize(float tSize) { 116 | textSize = tSize; 117 | } 118 | 119 | @Override 120 | public View getView(int position, View convertView, ViewGroup parent) { 121 | TextView view; 122 | if (convertView == null) { 123 | view = (TextView) LayoutInflater.from(mContext).inflate(R.layout.choose_item, parent, false); 124 | } else { 125 | view = (TextView) convertView; 126 | } 127 | view.setTag(position); 128 | String mString = ""; 129 | if (mListData != null) { 130 | if (position < mListData.size()) { 131 | mString = mListData.get(position); 132 | } 133 | } else if (mArrayData != null) { 134 | if (position < mArrayData.length) { 135 | mString = mArrayData[position]; 136 | } 137 | } 138 | if (mString.contains("不限")) 139 | view.setText("不限"); 140 | else 141 | view.setText(mString); 142 | view.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize); 143 | 144 | if (selectedText != null && selectedText.equals(mString)) { 145 | //view.setBackgroundDrawable(selectBgId);//设置选中的背景图片 146 | view.setBackgroundResource(selectBgId); 147 | view.setTextColor(selectTextColor); 148 | } else { 149 | //view.setBackgroundDrawable(mContext.getResources().getDrawable(unSelectBgId)); 150 | //设置未选中状态背景图片 151 | view.setBackgroundResource(unSelectBgId); 152 | view.setTextColor(unSelectTextColor); 153 | } 154 | //view.setPadding(20, 0, 0, 0); 155 | view.setOnClickListener(onClickListener); 156 | return view; 157 | } 158 | 159 | public void setOnItemClickListener(OnItemClickListener l) { 160 | mOnItemClickListener = l; 161 | } 162 | 163 | /** 164 | * 重新定义菜单选项单击接口 165 | */ 166 | public interface OnItemClickListener { 167 | public void onItemClick(View view, int position); 168 | } 169 | 170 | } 171 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/java/com/qlh/dropdownmenu/view/MultiMenusView.java: -------------------------------------------------------------------------------- 1 | package com.qlh.dropdownmenu.view; 2 | 3 | import android.content.Context; 4 | import android.graphics.Color; 5 | import android.util.AttributeSet; 6 | import android.util.SparseArray; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.widget.LinearLayout; 10 | import android.widget.ListView; 11 | 12 | import com.qlh.dropdownmenu.R; 13 | import com.qlh.dropdownmenu.adapter.TextAdapter; 14 | 15 | import java.util.ArrayList; 16 | import java.util.LinkedList; 17 | 18 | public class MultiMenusView extends LinearLayout implements ViewBaseAction { 19 | 20 | private ListView levelOneMenuListView; 21 | private ListView levelTwoMenuListView; 22 | /**一级菜单*/ 23 | private String[] levelOneMenu; 24 | private ArrayList levelOneMenusList = new ArrayList(); 25 | /**二级菜单*/ 26 | private String[][] levelTwoMenu; 27 | private LinkedList levelTwoMenusList = new LinkedList(); 28 | /**映射一级和二级菜单*/ 29 | private SparseArray> children = new SparseArray>(); 30 | /**一级菜单ListView适配器*/ 31 | private TextAdapter levelTwoMenuListViewAdapter; 32 | /**二级菜单ListView适配器*/ 33 | private TextAdapter levelOneMenuListViewAdapter; 34 | /**选中完成的监听器*/ 35 | private OnSelectListener mOnSelectListener; 36 | /**一级菜单选中位置*/ 37 | private int levelOneMenuPosition = 0; 38 | /**二级菜单选中位置*/ 39 | private int levelTwoMenuPosition = 0; 40 | /**二级菜单最终选中的选项*/ 41 | private String showString = "不限"; 42 | 43 | public MultiMenusView(Context context,String[] levelOneMenu,String[][] levelTwoMenu) { 44 | super(context); 45 | this.levelOneMenu = levelOneMenu; 46 | this.levelTwoMenu = levelTwoMenu; 47 | init(context); 48 | } 49 | 50 | public MultiMenusView(Context context, AttributeSet attrs) { 51 | super(context, attrs); 52 | init(context); 53 | } 54 | 55 | public void updateShowText(String showArea, String showBlock) { 56 | if (showArea == null || showBlock == null) { 57 | return; 58 | } 59 | for (int i = 0; i < levelOneMenusList.size(); i++) { 60 | if (levelOneMenusList.get(i).equals(showArea)) { 61 | levelOneMenuListViewAdapter.setSelectedPosition(i); 62 | levelTwoMenusList.clear(); 63 | if (i < children.size()) { 64 | levelTwoMenusList.addAll(children.get(i)); 65 | } 66 | levelOneMenuPosition = i; 67 | break; 68 | } 69 | } 70 | for (int j = 0; j < levelTwoMenusList.size(); j++) { 71 | if (levelTwoMenusList.get(j).replace("不限", "").equals(showBlock.trim())) { 72 | levelTwoMenuListViewAdapter.setSelectedPosition(j); 73 | levelTwoMenuPosition = j; 74 | break; 75 | } 76 | } 77 | setDefaultSelect(); 78 | } 79 | 80 | 81 | /** 82 | * 设置菜单内容 83 | */ 84 | public void setMenuContent() { 85 | 86 | for (int i = 0; i < levelOneMenu.length; i++) { 87 | levelOneMenusList.add(levelOneMenu[i]); 88 | LinkedList tItem = new LinkedList(); 89 | for (int j = 0; j < levelTwoMenu[i].length; j++) { 90 | 91 | tItem.add(levelTwoMenu[i][j]); 92 | 93 | } 94 | children.put(i, tItem); 95 | } 96 | 97 | } 98 | 99 | private void init(Context context) { 100 | LayoutInflater inflater = (LayoutInflater) context 101 | .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 102 | inflater.inflate(R.layout.view_multi_menu, this, true); 103 | levelOneMenuListView = (ListView) findViewById(R.id.level_one_menu_ls); 104 | levelTwoMenuListView = (ListView) findViewById(R.id.level_two_menu_ls); 105 | 106 | setBackgroundColor(Color.parseColor("#FFFFFF")); 107 | setMenuContent(); 108 | 109 | levelOneMenuListViewAdapter = new TextAdapter(context, levelOneMenusList, 110 | R.drawable.choose_item_selected, 111 | R.drawable.choose_level_one_menu_item_selector, Color.parseColor("#0084ff"),Color.BLACK); 112 | levelOneMenuListViewAdapter.setTextSize(getResources().getDimension(R.dimen.x43)); 113 | levelOneMenuListViewAdapter.setSelectedPositionNoNotify(levelOneMenuPosition); 114 | levelOneMenuListView.setAdapter(levelOneMenuListViewAdapter); 115 | levelOneMenuListViewAdapter 116 | .setOnItemClickListener(new TextAdapter.OnItemClickListener() { 117 | 118 | @Override 119 | public void onItemClick(View view, int position) { 120 | if (position < children.size()) { 121 | levelTwoMenusList.clear(); 122 | levelTwoMenusList.addAll(children.get(position)); 123 | levelTwoMenuListViewAdapter.notifyDataSetChanged(); 124 | } 125 | } 126 | }); 127 | //初始化菜单 128 | if (levelOneMenuPosition < children.size()) 129 | levelTwoMenusList.addAll(children.get(levelOneMenuPosition)); 130 | 131 | levelTwoMenuListViewAdapter = new TextAdapter(context, levelTwoMenusList, 132 | R.drawable.choose_item_selected, 133 | R.drawable.choose_level_two_menu_item_selector,Color.parseColor("#0084ff"),Color.BLACK); 134 | levelTwoMenuListViewAdapter.setTextSize(getResources().getDimension(R.dimen.x43)); 135 | //levelTwoMenuListViewAdapter.setSelectedPositionNoNotify(levelTwoMenuPosition); 136 | levelTwoMenuListView.setAdapter(levelTwoMenuListViewAdapter); 137 | levelTwoMenuListViewAdapter 138 | .setOnItemClickListener(new TextAdapter.OnItemClickListener() { 139 | 140 | @Override 141 | public void onItemClick(View view, final int position) { 142 | 143 | showString = levelTwoMenusList.get(position); 144 | if (mOnSelectListener != null) { 145 | 146 | mOnSelectListener.getValue(showString); 147 | } 148 | 149 | } 150 | }); 151 | //初始化选中二级菜单的选项 152 | if (levelTwoMenuPosition < levelTwoMenusList.size()) 153 | showString = levelTwoMenusList.get(levelTwoMenuPosition); 154 | 155 | if (showString.contains("不限")) { 156 | showString = showString.replace("不限", ""); 157 | } 158 | setDefaultSelect(); 159 | 160 | } 161 | 162 | public void setDefaultSelect() { 163 | levelOneMenuListView.setSelection(levelOneMenuPosition); 164 | levelTwoMenuListView.setSelection(levelTwoMenuPosition); 165 | } 166 | 167 | public String getShowText() { 168 | return showString; 169 | } 170 | 171 | public void setOnSelectListener(OnSelectListener onSelectListener) { 172 | mOnSelectListener = onSelectListener; 173 | } 174 | 175 | public interface OnSelectListener { 176 | public void getValue(String showText); 177 | } 178 | 179 | @Override 180 | public void hide() { 181 | // TODO Auto-generated method stub 182 | 183 | } 184 | 185 | @Override 186 | public void show() { 187 | // TODO Auto-generated method stub 188 | 189 | } 190 | } 191 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/java/com/qlh/dropdownmenu/view/SingleMenuView.java: -------------------------------------------------------------------------------- 1 | package com.qlh.dropdownmenu.view; 2 | 3 | 4 | import android.content.Context; 5 | import android.graphics.Color; 6 | import android.util.AttributeSet; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.widget.ListView; 10 | import android.widget.RelativeLayout; 11 | 12 | import com.qlh.dropdownmenu.R; 13 | import com.qlh.dropdownmenu.adapter.TextAdapter; 14 | 15 | import java.util.Arrays; 16 | import java.util.List; 17 | 18 | 19 | 20 | public class SingleMenuView extends RelativeLayout implements ViewBaseAction { 21 | 22 | private ListView mListView; 23 | private List items;//显示字段 24 | private OnSelectListener mOnSelectListener;//选中监听器 25 | private TextAdapter adapter; 26 | private int whichPosition = 0;//标记选中项顺序 27 | private String showText;//最终显示在Tab上的字符串 28 | private Context mContext; 29 | 30 | public String getShowText() { 31 | return showText; 32 | } 33 | 34 | public SingleMenuView(Context context, String[] arrays) { 35 | super(context); 36 | items = Arrays.asList(arrays); 37 | init(context); 38 | } 39 | 40 | public SingleMenuView(Context context, AttributeSet attrs, int defStyle) { 41 | super(context, attrs, defStyle); 42 | init(context); 43 | } 44 | 45 | public SingleMenuView(Context context, AttributeSet attrs) { 46 | super(context, attrs); 47 | init(context); 48 | } 49 | 50 | private void init(Context context) { 51 | mContext = context; 52 | LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 53 | inflater.inflate(R.layout.view_single_menu, this, true); 54 | mListView = (ListView) findViewById(R.id.listView); 55 | 56 | setBackgroundColor(Color.parseColor("#FFFFFF")); 57 | 58 | adapter = new TextAdapter(context, items, R.drawable.choose_item_selected, 59 | R.drawable.choose_level_one_menu_item_selector, Color.parseColor("#0084ff"), Color.BLACK); 60 | adapter.setTextSize(getResources().getDimension(R.dimen.txt_size)); 61 | //是否需要展示默认的选项??? 62 | adapter.setSelectedPositionNoNotify(whichPosition); 63 | mListView.setAdapter(adapter); 64 | adapter.setOnItemClickListener(new TextAdapter.OnItemClickListener() { 65 | 66 | @Override 67 | public void onItemClick(View view, int position) { 68 | 69 | if (mOnSelectListener != null) { 70 | showText = items.get(position); 71 | mOnSelectListener.getValue(position, items.get(position)); 72 | } 73 | } 74 | }); 75 | mListView.setSelection(whichPosition); 76 | } 77 | 78 | public void setOnSelectListener(OnSelectListener onSelectListener) { 79 | mOnSelectListener = onSelectListener; 80 | } 81 | 82 | public interface OnSelectListener { 83 | public void getValue(int position, String showText); 84 | } 85 | 86 | @Override 87 | public void hide() { 88 | 89 | } 90 | 91 | @Override 92 | public void show() { 93 | 94 | } 95 | 96 | } 97 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/java/com/qlh/dropdownmenu/view/ViewBaseAction.java: -------------------------------------------------------------------------------- 1 | package com.qlh.dropdownmenu.view; 2 | 3 | public interface ViewBaseAction { 4 | 5 | /** 6 | * 菜单隐藏操作 7 | */ 8 | public void hide(); 9 | 10 | /** 11 | * 菜单显示操作 12 | */ 13 | public void show(); 14 | } 15 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/anim/dd_mask_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/anim/dd_mask_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/anim/dd_menu_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/anim/dd_menu_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/drawable/choose_item_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/dropdownmenu/src/main/res/drawable/choose_item_selected.png -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/drawable/choose_level_one_menu_item_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/drawable/choose_level_two_menu_item_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/layout/choose_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/layout/tab_menu_ly.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 15 | 16 | 20 | 21 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/layout/view_multi_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 17 | 18 | 19 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/layout/view_single_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 15 | 16 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/values-1812x1080/lay_x.xml: -------------------------------------------------------------------------------- 1 | 2 | 1.0px 3 | 2.0px 4 | 3.0px 5 | 4.0px 6 | 5.0px 7 | 6.0px 8 | 7.0px 9 | 8.0px 10 | 9.0px 11 | 10.0px 12 | 11.0px 13 | 12.0px 14 | 13.0px 15 | 14.0px 16 | 15.0px 17 | 16.0px 18 | 17.0px 19 | 18.0px 20 | 19.0px 21 | 20.0px 22 | 21.0px 23 | 22.0px 24 | 23.0px 25 | 24.0px 26 | 25.0px 27 | 26.0px 28 | 27.0px 29 | 28.0px 30 | 29.0px 31 | 30.0px 32 | 31.0px 33 | 32.0px 34 | 33.0px 35 | 34.0px 36 | 35.0px 37 | 36.0px 38 | 37.0px 39 | 38.0px 40 | 39.0px 41 | 40.0px 42 | 41.0px 43 | 42.0px 44 | 43.0px 45 | 44.0px 46 | 45.0px 47 | 46.0px 48 | 47.0px 49 | 48.0px 50 | 49.0px 51 | 50.0px 52 | 51.0px 53 | 52.0px 54 | 53.0px 55 | 54.0px 56 | 55.0px 57 | 56.0px 58 | 57.0px 59 | 58.0px 60 | 59.0px 61 | 60.0px 62 | 61.0px 63 | 62.0px 64 | 63.0px 65 | 64.0px 66 | 65.0px 67 | 66.0px 68 | 67.0px 69 | 68.0px 70 | 69.0px 71 | 70.0px 72 | 71.0px 73 | 72.0px 74 | 73.0px 75 | 74.0px 76 | 75.0px 77 | 76.0px 78 | 77.0px 79 | 78.0px 80 | 79.0px 81 | 80.0px 82 | 81.0px 83 | 82.0px 84 | 83.0px 85 | 84.0px 86 | 85.0px 87 | 86.0px 88 | 87.0px 89 | 88.0px 90 | 89.0px 91 | 90.0px 92 | 91.0px 93 | 92.0px 94 | 93.0px 95 | 94.0px 96 | 95.0px 97 | 96.0px 98 | 97.0px 99 | 98.0px 100 | 99.0px 101 | 100.0px 102 | 101.0px 103 | 102.0px 104 | 103.0px 105 | 104.0px 106 | 105.0px 107 | 106.0px 108 | 107.0px 109 | 108.0px 110 | 109.0px 111 | 110.0px 112 | 111.0px 113 | 112.0px 114 | 113.0px 115 | 114.0px 116 | 115.0px 117 | 116.0px 118 | 117.0px 119 | 118.0px 120 | 119.0px 121 | 120.0px 122 | 121.0px 123 | 122.0px 124 | 123.0px 125 | 124.0px 126 | 125.0px 127 | 126.0px 128 | 127.0px 129 | 128.0px 130 | 129.0px 131 | 130.0px 132 | 131.0px 133 | 132.0px 134 | 133.0px 135 | 134.0px 136 | 135.0px 137 | 136.0px 138 | 137.0px 139 | 138.0px 140 | 139.0px 141 | 140.0px 142 | 141.0px 143 | 142.0px 144 | 143.0px 145 | 144.0px 146 | 145.0px 147 | 146.0px 148 | 147.0px 149 | 148.0px 150 | 149.0px 151 | 150.0px 152 | 151.0px 153 | 152.0px 154 | 153.0px 155 | 154.0px 156 | 155.0px 157 | 156.0px 158 | 157.0px 159 | 158.0px 160 | 159.0px 161 | 160.0px 162 | 161.0px 163 | 162.0px 164 | 163.0px 165 | 164.0px 166 | 165.0px 167 | 166.0px 168 | 167.0px 169 | 168.0px 170 | 169.0px 171 | 170.0px 172 | 171.0px 173 | 172.0px 174 | 173.0px 175 | 174.0px 176 | 175.0px 177 | 176.0px 178 | 177.0px 179 | 178.0px 180 | 179.0px 181 | 180.0px 182 | 181.0px 183 | 182.0px 184 | 183.0px 185 | 184.0px 186 | 185.0px 187 | 186.0px 188 | 187.0px 189 | 188.0px 190 | 189.0px 191 | 190.0px 192 | 191.0px 193 | 192.0px 194 | 193.0px 195 | 194.0px 196 | 195.0px 197 | 196.0px 198 | 197.0px 199 | 198.0px 200 | 199.0px 201 | 200.0px 202 | 201.0px 203 | 202.0px 204 | 203.0px 205 | 204.0px 206 | 205.0px 207 | 206.0px 208 | 207.0px 209 | 208.0px 210 | 209.0px 211 | 210.0px 212 | 211.0px 213 | 212.0px 214 | 213.0px 215 | 214.0px 216 | 215.0px 217 | 216.0px 218 | 217.0px 219 | 218.0px 220 | 219.0px 221 | 220.0px 222 | 221.0px 223 | 222.0px 224 | 223.0px 225 | 224.0px 226 | 225.0px 227 | 226.0px 228 | 227.0px 229 | 228.0px 230 | 229.0px 231 | 230.0px 232 | 231.0px 233 | 232.0px 234 | 233.0px 235 | 234.0px 236 | 235.0px 237 | 236.0px 238 | 237.0px 239 | 238.0px 240 | 239.0px 241 | 240.0px 242 | 241.0px 243 | 242.0px 244 | 243.0px 245 | 244.0px 246 | 245.0px 247 | 246.0px 248 | 247.0px 249 | 248.0px 250 | 249.0px 251 | 250.0px 252 | 251.0px 253 | 252.0px 254 | 253.0px 255 | 254.0px 256 | 255.0px 257 | 256.0px 258 | 257.0px 259 | 258.0px 260 | 259.0px 261 | 260.0px 262 | 261.0px 263 | 262.0px 264 | 263.0px 265 | 264.0px 266 | 265.0px 267 | 266.0px 268 | 267.0px 269 | 268.0px 270 | 269.0px 271 | 270.0px 272 | 271.0px 273 | 272.0px 274 | 273.0px 275 | 274.0px 276 | 275.0px 277 | 276.0px 278 | 277.0px 279 | 278.0px 280 | 279.0px 281 | 280.0px 282 | 281.0px 283 | 282.0px 284 | 283.0px 285 | 284.0px 286 | 285.0px 287 | 286.0px 288 | 287.0px 289 | 288.0px 290 | 289.0px 291 | 290.0px 292 | 291.0px 293 | 292.0px 294 | 293.0px 295 | 294.0px 296 | 295.0px 297 | 296.0px 298 | 297.0px 299 | 298.0px 300 | 299.0px 301 | 300.0px 302 | 301.0px 303 | 302.0px 304 | 303.0px 305 | 304.0px 306 | 305.0px 307 | 306.0px 308 | 307.0px 309 | 308.0px 310 | 309.0px 311 | 310.0px 312 | 311.0px 313 | 312.0px 314 | 313.0px 315 | 314.0px 316 | 315.0px 317 | 316.0px 318 | 317.0px 319 | 318.0px 320 | 319.0px 321 | 320.0px 322 | 321.0px 323 | 322.0px 324 | 323.0px 325 | 324.0px 326 | 325.0px 327 | 326.0px 328 | 327.0px 329 | 328.0px 330 | 329.0px 331 | 330.0px 332 | 331.0px 333 | 332.0px 334 | 333.0px 335 | 334.0px 336 | 335.0px 337 | 336.0px 338 | 337.0px 339 | 338.0px 340 | 339.0px 341 | 340.0px 342 | 341.0px 343 | 342.0px 344 | 343.0px 345 | 344.0px 346 | 345.0px 347 | 346.0px 348 | 347.0px 349 | 348.0px 350 | 349.0px 351 | 350.0px 352 | 351.0px 353 | 352.0px 354 | 353.0px 355 | 354.0px 356 | 355.0px 357 | 356.0px 358 | 357.0px 359 | 358.0px 360 | 359.0px 361 | 360.0px 362 | 361.0px 363 | 362.0px 364 | 363.0px 365 | 364.0px 366 | 365.0px 367 | 366.0px 368 | 367.0px 369 | 368.0px 370 | 369.0px 371 | 370.0px 372 | 371.0px 373 | 372.0px 374 | 373.0px 375 | 374.0px 376 | 375.0px 377 | 376.0px 378 | 377.0px 379 | 378.0px 380 | 379.0px 381 | 380.0px 382 | 381.0px 383 | 382.0px 384 | 383.0px 385 | 384.0px 386 | 385.0px 387 | 386.0px 388 | 387.0px 389 | 388.0px 390 | 389.0px 391 | 390.0px 392 | 391.0px 393 | 392.0px 394 | 393.0px 395 | 394.0px 396 | 395.0px 397 | 396.0px 398 | 397.0px 399 | 398.0px 400 | 399.0px 401 | 400.0px 402 | 401.0px 403 | 402.0px 404 | 403.0px 405 | 404.0px 406 | 405.0px 407 | 406.0px 408 | 407.0px 409 | 408.0px 410 | 409.0px 411 | 410.0px 412 | 411.0px 413 | 412.0px 414 | 413.0px 415 | 414.0px 416 | 415.0px 417 | 416.0px 418 | 417.0px 419 | 418.0px 420 | 419.0px 421 | 420.0px 422 | 421.0px 423 | 422.0px 424 | 423.0px 425 | 424.0px 426 | 425.0px 427 | 426.0px 428 | 427.0px 429 | 428.0px 430 | 429.0px 431 | 430.0px 432 | 431.0px 433 | 432.0px 434 | 433.0px 435 | 434.0px 436 | 435.0px 437 | 436.0px 438 | 437.0px 439 | 438.0px 440 | 439.0px 441 | 440.0px 442 | 441.0px 443 | 442.0px 444 | 443.0px 445 | 444.0px 446 | 445.0px 447 | 446.0px 448 | 447.0px 449 | 448.0px 450 | 449.0px 451 | 450.0px 452 | 451.0px 453 | 452.0px 454 | 453.0px 455 | 454.0px 456 | 455.0px 457 | 456.0px 458 | 457.0px 459 | 458.0px 460 | 459.0px 461 | 460.0px 462 | 461.0px 463 | 462.0px 464 | 463.0px 465 | 464.0px 466 | 465.0px 467 | 466.0px 468 | 467.0px 469 | 468.0px 470 | 469.0px 471 | 470.0px 472 | 471.0px 473 | 472.0px 474 | 473.0px 475 | 474.0px 476 | 475.0px 477 | 476.0px 478 | 477.0px 479 | 478.0px 480 | 479.0px 481 | 480.0px 482 | 481.0px 483 | 482.0px 484 | 483.0px 485 | 484.0px 486 | 485.0px 487 | 486.0px 488 | 487.0px 489 | 488.0px 490 | 489.0px 491 | 490.0px 492 | 491.0px 493 | 492.0px 494 | 493.0px 495 | 494.0px 496 | 495.0px 497 | 496.0px 498 | 497.0px 499 | 498.0px 500 | 499.0px 501 | 500.0px 502 | 501.0px 503 | 502.0px 504 | 503.0px 505 | 504.0px 506 | 505.0px 507 | 506.0px 508 | 507.0px 509 | 508.0px 510 | 509.0px 511 | 510.0px 512 | 511.0px 513 | 512.0px 514 | 513.0px 515 | 514.0px 516 | 515.0px 517 | 516.0px 518 | 517.0px 519 | 518.0px 520 | 519.0px 521 | 520.0px 522 | 521.0px 523 | 522.0px 524 | 523.0px 525 | 524.0px 526 | 525.0px 527 | 526.0px 528 | 527.0px 529 | 528.0px 530 | 529.0px 531 | 530.0px 532 | 531.0px 533 | 532.0px 534 | 533.0px 535 | 534.0px 536 | 535.0px 537 | 536.0px 538 | 537.0px 539 | 538.0px 540 | 539.0px 541 | 540.0px 542 | 541.0px 543 | 542.0px 544 | 543.0px 545 | 544.0px 546 | 545.0px 547 | 546.0px 548 | 547.0px 549 | 548.0px 550 | 549.0px 551 | 550.0px 552 | 551.0px 553 | 552.0px 554 | 553.0px 555 | 554.0px 556 | 555.0px 557 | 556.0px 558 | 557.0px 559 | 558.0px 560 | 559.0px 561 | 560.0px 562 | 561.0px 563 | 562.0px 564 | 563.0px 565 | 564.0px 566 | 565.0px 567 | 566.0px 568 | 567.0px 569 | 568.0px 570 | 569.0px 571 | 570.0px 572 | 571.0px 573 | 572.0px 574 | 573.0px 575 | 574.0px 576 | 575.0px 577 | 576.0px 578 | 577.0px 579 | 578.0px 580 | 579.0px 581 | 580.0px 582 | 581.0px 583 | 582.0px 584 | 583.0px 585 | 584.0px 586 | 585.0px 587 | 586.0px 588 | 587.0px 589 | 588.0px 590 | 589.0px 591 | 590.0px 592 | 591.0px 593 | 592.0px 594 | 593.0px 595 | 594.0px 596 | 595.0px 597 | 596.0px 598 | 597.0px 599 | 598.0px 600 | 599.0px 601 | 600.0px 602 | 601.0px 603 | 602.0px 604 | 603.0px 605 | 604.0px 606 | 605.0px 607 | 606.0px 608 | 607.0px 609 | 608.0px 610 | 609.0px 611 | 610.0px 612 | 611.0px 613 | 612.0px 614 | 613.0px 615 | 614.0px 616 | 615.0px 617 | 616.0px 618 | 617.0px 619 | 618.0px 620 | 619.0px 621 | 620.0px 622 | 621.0px 623 | 622.0px 624 | 623.0px 625 | 624.0px 626 | 625.0px 627 | 626.0px 628 | 627.0px 629 | 628.0px 630 | 629.0px 631 | 630.0px 632 | 631.0px 633 | 632.0px 634 | 633.0px 635 | 634.0px 636 | 635.0px 637 | 636.0px 638 | 637.0px 639 | 638.0px 640 | 639.0px 641 | 640.0px 642 | 641.0px 643 | 642.0px 644 | 643.0px 645 | 644.0px 646 | 645.0px 647 | 646.0px 648 | 647.0px 649 | 648.0px 650 | 649.0px 651 | 650.0px 652 | 651.0px 653 | 652.0px 654 | 653.0px 655 | 654.0px 656 | 655.0px 657 | 656.0px 658 | 657.0px 659 | 658.0px 660 | 659.0px 661 | 660.0px 662 | 661.0px 663 | 662.0px 664 | 663.0px 665 | 664.0px 666 | 665.0px 667 | 666.0px 668 | 667.0px 669 | 668.0px 670 | 669.0px 671 | 670.0px 672 | 671.0px 673 | 672.0px 674 | 673.0px 675 | 674.0px 676 | 675.0px 677 | 676.0px 678 | 677.0px 679 | 678.0px 680 | 679.0px 681 | 680.0px 682 | 681.0px 683 | 682.0px 684 | 683.0px 685 | 684.0px 686 | 685.0px 687 | 686.0px 688 | 687.0px 689 | 688.0px 690 | 689.0px 691 | 690.0px 692 | 691.0px 693 | 692.0px 694 | 693.0px 695 | 694.0px 696 | 695.0px 697 | 696.0px 698 | 697.0px 699 | 698.0px 700 | 699.0px 701 | 700.0px 702 | 701.0px 703 | 702.0px 704 | 703.0px 705 | 704.0px 706 | 705.0px 707 | 706.0px 708 | 707.0px 709 | 708.0px 710 | 709.0px 711 | 710.0px 712 | 711.0px 713 | 712.0px 714 | 713.0px 715 | 714.0px 716 | 715.0px 717 | 716.0px 718 | 717.0px 719 | 718.0px 720 | 719.0px 721 | 720.0px 722 | 721.0px 723 | 722.0px 724 | 723.0px 725 | 724.0px 726 | 725.0px 727 | 726.0px 728 | 727.0px 729 | 728.0px 730 | 729.0px 731 | 730.0px 732 | 731.0px 733 | 732.0px 734 | 733.0px 735 | 734.0px 736 | 735.0px 737 | 736.0px 738 | 737.0px 739 | 738.0px 740 | 739.0px 741 | 740.0px 742 | 741.0px 743 | 742.0px 744 | 743.0px 745 | 744.0px 746 | 745.0px 747 | 746.0px 748 | 747.0px 749 | 748.0px 750 | 749.0px 751 | 750.0px 752 | 751.0px 753 | 752.0px 754 | 753.0px 755 | 754.0px 756 | 755.0px 757 | 756.0px 758 | 757.0px 759 | 758.0px 760 | 759.0px 761 | 760.0px 762 | 761.0px 763 | 762.0px 764 | 763.0px 765 | 764.0px 766 | 765.0px 767 | 766.0px 768 | 767.0px 769 | 768.0px 770 | 769.0px 771 | 770.0px 772 | 771.0px 773 | 772.0px 774 | 773.0px 775 | 774.0px 776 | 775.0px 777 | 776.0px 778 | 777.0px 779 | 778.0px 780 | 779.0px 781 | 780.0px 782 | 781.0px 783 | 782.0px 784 | 783.0px 785 | 784.0px 786 | 785.0px 787 | 786.0px 788 | 787.0px 789 | 788.0px 790 | 789.0px 791 | 790.0px 792 | 791.0px 793 | 792.0px 794 | 793.0px 795 | 794.0px 796 | 795.0px 797 | 796.0px 798 | 797.0px 799 | 798.0px 800 | 799.0px 801 | 800.0px 802 | 801.0px 803 | 802.0px 804 | 803.0px 805 | 804.0px 806 | 805.0px 807 | 806.0px 808 | 807.0px 809 | 808.0px 810 | 809.0px 811 | 810.0px 812 | 811.0px 813 | 812.0px 814 | 813.0px 815 | 814.0px 816 | 815.0px 817 | 816.0px 818 | 817.0px 819 | 818.0px 820 | 819.0px 821 | 820.0px 822 | 821.0px 823 | 822.0px 824 | 823.0px 825 | 824.0px 826 | 825.0px 827 | 826.0px 828 | 827.0px 829 | 828.0px 830 | 829.0px 831 | 830.0px 832 | 831.0px 833 | 832.0px 834 | 833.0px 835 | 834.0px 836 | 835.0px 837 | 836.0px 838 | 837.0px 839 | 838.0px 840 | 839.0px 841 | 840.0px 842 | 841.0px 843 | 842.0px 844 | 843.0px 845 | 844.0px 846 | 845.0px 847 | 846.0px 848 | 847.0px 849 | 848.0px 850 | 849.0px 851 | 850.0px 852 | 851.0px 853 | 852.0px 854 | 853.0px 855 | 854.0px 856 | 855.0px 857 | 856.0px 858 | 857.0px 859 | 858.0px 860 | 859.0px 861 | 860.0px 862 | 861.0px 863 | 862.0px 864 | 863.0px 865 | 864.0px 866 | 865.0px 867 | 866.0px 868 | 867.0px 869 | 868.0px 870 | 869.0px 871 | 870.0px 872 | 871.0px 873 | 872.0px 874 | 873.0px 875 | 874.0px 876 | 875.0px 877 | 876.0px 878 | 877.0px 879 | 878.0px 880 | 879.0px 881 | 880.0px 882 | 881.0px 883 | 882.0px 884 | 883.0px 885 | 884.0px 886 | 885.0px 887 | 886.0px 888 | 887.0px 889 | 888.0px 890 | 889.0px 891 | 890.0px 892 | 891.0px 893 | 892.0px 894 | 893.0px 895 | 894.0px 896 | 895.0px 897 | 896.0px 898 | 897.0px 899 | 898.0px 900 | 899.0px 901 | 900.0px 902 | 901.0px 903 | 902.0px 904 | 903.0px 905 | 904.0px 906 | 905.0px 907 | 906.0px 908 | 907.0px 909 | 908.0px 910 | 909.0px 911 | 910.0px 912 | 911.0px 913 | 912.0px 914 | 913.0px 915 | 914.0px 916 | 915.0px 917 | 916.0px 918 | 917.0px 919 | 918.0px 920 | 919.0px 921 | 920.0px 922 | 921.0px 923 | 922.0px 924 | 923.0px 925 | 924.0px 926 | 925.0px 927 | 926.0px 928 | 927.0px 929 | 928.0px 930 | 929.0px 931 | 930.0px 932 | 931.0px 933 | 932.0px 934 | 933.0px 935 | 934.0px 936 | 935.0px 937 | 936.0px 938 | 937.0px 939 | 938.0px 940 | 939.0px 941 | 940.0px 942 | 941.0px 943 | 942.0px 944 | 943.0px 945 | 944.0px 946 | 945.0px 947 | 946.0px 948 | 947.0px 949 | 948.0px 950 | 949.0px 951 | 950.0px 952 | 951.0px 953 | 952.0px 954 | 953.0px 955 | 954.0px 956 | 955.0px 957 | 956.0px 958 | 957.0px 959 | 958.0px 960 | 959.0px 961 | 960.0px 962 | 961.0px 963 | 962.0px 964 | 963.0px 965 | 964.0px 966 | 965.0px 967 | 966.0px 968 | 967.0px 969 | 968.0px 970 | 969.0px 971 | 970.0px 972 | 971.0px 973 | 972.0px 974 | 973.0px 975 | 974.0px 976 | 975.0px 977 | 976.0px 978 | 977.0px 979 | 978.0px 980 | 979.0px 981 | 980.0px 982 | 981.0px 983 | 982.0px 984 | 983.0px 985 | 984.0px 986 | 985.0px 987 | 986.0px 988 | 987.0px 989 | 988.0px 990 | 989.0px 991 | 990.0px 992 | 991.0px 993 | 992.0px 994 | 993.0px 995 | 994.0px 996 | 995.0px 997 | 996.0px 998 | 997.0px 999 | 998.0px 1000 | 999.0px 1001 | 1000.0px 1002 | 1001.0px 1003 | 1002.0px 1004 | 1003.0px 1005 | 1004.0px 1006 | 1005.0px 1007 | 1006.0px 1008 | 1007.0px 1009 | 1008.0px 1010 | 1009.0px 1011 | 1010.0px 1012 | 1011.0px 1013 | 1012.0px 1014 | 1013.0px 1015 | 1014.0px 1016 | 1015.0px 1017 | 1016.0px 1018 | 1017.0px 1019 | 1018.0px 1020 | 1019.0px 1021 | 1020.0px 1022 | 1021.0px 1023 | 1022.0px 1024 | 1023.0px 1025 | 1024.0px 1026 | 1025.0px 1027 | 1026.0px 1028 | 1027.0px 1029 | 1028.0px 1030 | 1029.0px 1031 | 1030.0px 1032 | 1031.0px 1033 | 1032.0px 1034 | 1033.0px 1035 | 1034.0px 1036 | 1035.0px 1037 | 1036.0px 1038 | 1037.0px 1039 | 1038.0px 1040 | 1039.0px 1041 | 1040.0px 1042 | 1041.0px 1043 | 1042.0px 1044 | 1043.0px 1045 | 1044.0px 1046 | 1045.0px 1047 | 1046.0px 1048 | 1047.0px 1049 | 1048.0px 1050 | 1049.0px 1051 | 1050.0px 1052 | 1051.0px 1053 | 1052.0px 1054 | 1053.0px 1055 | 1054.0px 1056 | 1055.0px 1057 | 1056.0px 1058 | 1057.0px 1059 | 1058.0px 1060 | 1059.0px 1061 | 1060.0px 1062 | 1061.0px 1063 | 1062.0px 1064 | 1063.0px 1065 | 1064.0px 1066 | 1065.0px 1067 | 1066.0px 1068 | 1067.0px 1069 | 1068.0px 1070 | 1069.0px 1071 | 1070.0px 1072 | 1071.0px 1073 | 1072.0px 1074 | 1073.0px 1075 | 1074.0px 1076 | 1075.0px 1077 | 1076.0px 1078 | 1077.0px 1079 | 1078.0px 1080 | 1079.0px 1081 | 1080px 1082 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/values-1920x1080/lay_x.xml: -------------------------------------------------------------------------------- 1 | 2 | 1.0px 3 | 2.0px 4 | 3.0px 5 | 4.0px 6 | 5.0px 7 | 6.0px 8 | 7.0px 9 | 8.0px 10 | 9.0px 11 | 10.0px 12 | 11.0px 13 | 12.0px 14 | 13.0px 15 | 14.0px 16 | 15.0px 17 | 16.0px 18 | 17.0px 19 | 18.0px 20 | 19.0px 21 | 20.0px 22 | 21.0px 23 | 22.0px 24 | 23.0px 25 | 24.0px 26 | 25.0px 27 | 26.0px 28 | 27.0px 29 | 28.0px 30 | 29.0px 31 | 30.0px 32 | 31.0px 33 | 32.0px 34 | 33.0px 35 | 34.0px 36 | 35.0px 37 | 36.0px 38 | 37.0px 39 | 38.0px 40 | 39.0px 41 | 40.0px 42 | 41.0px 43 | 42.0px 44 | 43.0px 45 | 44.0px 46 | 45.0px 47 | 46.0px 48 | 47.0px 49 | 48.0px 50 | 49.0px 51 | 50.0px 52 | 51.0px 53 | 52.0px 54 | 53.0px 55 | 54.0px 56 | 55.0px 57 | 56.0px 58 | 57.0px 59 | 58.0px 60 | 59.0px 61 | 60.0px 62 | 61.0px 63 | 62.0px 64 | 63.0px 65 | 64.0px 66 | 65.0px 67 | 66.0px 68 | 67.0px 69 | 68.0px 70 | 69.0px 71 | 70.0px 72 | 71.0px 73 | 72.0px 74 | 73.0px 75 | 74.0px 76 | 75.0px 77 | 76.0px 78 | 77.0px 79 | 78.0px 80 | 79.0px 81 | 80.0px 82 | 81.0px 83 | 82.0px 84 | 83.0px 85 | 84.0px 86 | 85.0px 87 | 86.0px 88 | 87.0px 89 | 88.0px 90 | 89.0px 91 | 90.0px 92 | 91.0px 93 | 92.0px 94 | 93.0px 95 | 94.0px 96 | 95.0px 97 | 96.0px 98 | 97.0px 99 | 98.0px 100 | 99.0px 101 | 100.0px 102 | 101.0px 103 | 102.0px 104 | 103.0px 105 | 104.0px 106 | 105.0px 107 | 106.0px 108 | 107.0px 109 | 108.0px 110 | 109.0px 111 | 110.0px 112 | 111.0px 113 | 112.0px 114 | 113.0px 115 | 114.0px 116 | 115.0px 117 | 116.0px 118 | 117.0px 119 | 118.0px 120 | 119.0px 121 | 120.0px 122 | 121.0px 123 | 122.0px 124 | 123.0px 125 | 124.0px 126 | 125.0px 127 | 126.0px 128 | 127.0px 129 | 128.0px 130 | 129.0px 131 | 130.0px 132 | 131.0px 133 | 132.0px 134 | 133.0px 135 | 134.0px 136 | 135.0px 137 | 136.0px 138 | 137.0px 139 | 138.0px 140 | 139.0px 141 | 140.0px 142 | 141.0px 143 | 142.0px 144 | 143.0px 145 | 144.0px 146 | 145.0px 147 | 146.0px 148 | 147.0px 149 | 148.0px 150 | 149.0px 151 | 150.0px 152 | 151.0px 153 | 152.0px 154 | 153.0px 155 | 154.0px 156 | 155.0px 157 | 156.0px 158 | 157.0px 159 | 158.0px 160 | 159.0px 161 | 160.0px 162 | 161.0px 163 | 162.0px 164 | 163.0px 165 | 164.0px 166 | 165.0px 167 | 166.0px 168 | 167.0px 169 | 168.0px 170 | 169.0px 171 | 170.0px 172 | 171.0px 173 | 172.0px 174 | 173.0px 175 | 174.0px 176 | 175.0px 177 | 176.0px 178 | 177.0px 179 | 178.0px 180 | 179.0px 181 | 180.0px 182 | 181.0px 183 | 182.0px 184 | 183.0px 185 | 184.0px 186 | 185.0px 187 | 186.0px 188 | 187.0px 189 | 188.0px 190 | 189.0px 191 | 190.0px 192 | 191.0px 193 | 192.0px 194 | 193.0px 195 | 194.0px 196 | 195.0px 197 | 196.0px 198 | 197.0px 199 | 198.0px 200 | 199.0px 201 | 200.0px 202 | 201.0px 203 | 202.0px 204 | 203.0px 205 | 204.0px 206 | 205.0px 207 | 206.0px 208 | 207.0px 209 | 208.0px 210 | 209.0px 211 | 210.0px 212 | 211.0px 213 | 212.0px 214 | 213.0px 215 | 214.0px 216 | 215.0px 217 | 216.0px 218 | 217.0px 219 | 218.0px 220 | 219.0px 221 | 220.0px 222 | 221.0px 223 | 222.0px 224 | 223.0px 225 | 224.0px 226 | 225.0px 227 | 226.0px 228 | 227.0px 229 | 228.0px 230 | 229.0px 231 | 230.0px 232 | 231.0px 233 | 232.0px 234 | 233.0px 235 | 234.0px 236 | 235.0px 237 | 236.0px 238 | 237.0px 239 | 238.0px 240 | 239.0px 241 | 240.0px 242 | 241.0px 243 | 242.0px 244 | 243.0px 245 | 244.0px 246 | 245.0px 247 | 246.0px 248 | 247.0px 249 | 248.0px 250 | 249.0px 251 | 250.0px 252 | 251.0px 253 | 252.0px 254 | 253.0px 255 | 254.0px 256 | 255.0px 257 | 256.0px 258 | 257.0px 259 | 258.0px 260 | 259.0px 261 | 260.0px 262 | 261.0px 263 | 262.0px 264 | 263.0px 265 | 264.0px 266 | 265.0px 267 | 266.0px 268 | 267.0px 269 | 268.0px 270 | 269.0px 271 | 270.0px 272 | 271.0px 273 | 272.0px 274 | 273.0px 275 | 274.0px 276 | 275.0px 277 | 276.0px 278 | 277.0px 279 | 278.0px 280 | 279.0px 281 | 280.0px 282 | 281.0px 283 | 282.0px 284 | 283.0px 285 | 284.0px 286 | 285.0px 287 | 286.0px 288 | 287.0px 289 | 288.0px 290 | 289.0px 291 | 290.0px 292 | 291.0px 293 | 292.0px 294 | 293.0px 295 | 294.0px 296 | 295.0px 297 | 296.0px 298 | 297.0px 299 | 298.0px 300 | 299.0px 301 | 300.0px 302 | 301.0px 303 | 302.0px 304 | 303.0px 305 | 304.0px 306 | 305.0px 307 | 306.0px 308 | 307.0px 309 | 308.0px 310 | 309.0px 311 | 310.0px 312 | 311.0px 313 | 312.0px 314 | 313.0px 315 | 314.0px 316 | 315.0px 317 | 316.0px 318 | 317.0px 319 | 318.0px 320 | 319.0px 321 | 320.0px 322 | 321.0px 323 | 322.0px 324 | 323.0px 325 | 324.0px 326 | 325.0px 327 | 326.0px 328 | 327.0px 329 | 328.0px 330 | 329.0px 331 | 330.0px 332 | 331.0px 333 | 332.0px 334 | 333.0px 335 | 334.0px 336 | 335.0px 337 | 336.0px 338 | 337.0px 339 | 338.0px 340 | 339.0px 341 | 340.0px 342 | 341.0px 343 | 342.0px 344 | 343.0px 345 | 344.0px 346 | 345.0px 347 | 346.0px 348 | 347.0px 349 | 348.0px 350 | 349.0px 351 | 350.0px 352 | 351.0px 353 | 352.0px 354 | 353.0px 355 | 354.0px 356 | 355.0px 357 | 356.0px 358 | 357.0px 359 | 358.0px 360 | 359.0px 361 | 360.0px 362 | 361.0px 363 | 362.0px 364 | 363.0px 365 | 364.0px 366 | 365.0px 367 | 366.0px 368 | 367.0px 369 | 368.0px 370 | 369.0px 371 | 370.0px 372 | 371.0px 373 | 372.0px 374 | 373.0px 375 | 374.0px 376 | 375.0px 377 | 376.0px 378 | 377.0px 379 | 378.0px 380 | 379.0px 381 | 380.0px 382 | 381.0px 383 | 382.0px 384 | 383.0px 385 | 384.0px 386 | 385.0px 387 | 386.0px 388 | 387.0px 389 | 388.0px 390 | 389.0px 391 | 390.0px 392 | 391.0px 393 | 392.0px 394 | 393.0px 395 | 394.0px 396 | 395.0px 397 | 396.0px 398 | 397.0px 399 | 398.0px 400 | 399.0px 401 | 400.0px 402 | 401.0px 403 | 402.0px 404 | 403.0px 405 | 404.0px 406 | 405.0px 407 | 406.0px 408 | 407.0px 409 | 408.0px 410 | 409.0px 411 | 410.0px 412 | 411.0px 413 | 412.0px 414 | 413.0px 415 | 414.0px 416 | 415.0px 417 | 416.0px 418 | 417.0px 419 | 418.0px 420 | 419.0px 421 | 420.0px 422 | 421.0px 423 | 422.0px 424 | 423.0px 425 | 424.0px 426 | 425.0px 427 | 426.0px 428 | 427.0px 429 | 428.0px 430 | 429.0px 431 | 430.0px 432 | 431.0px 433 | 432.0px 434 | 433.0px 435 | 434.0px 436 | 435.0px 437 | 436.0px 438 | 437.0px 439 | 438.0px 440 | 439.0px 441 | 440.0px 442 | 441.0px 443 | 442.0px 444 | 443.0px 445 | 444.0px 446 | 445.0px 447 | 446.0px 448 | 447.0px 449 | 448.0px 450 | 449.0px 451 | 450.0px 452 | 451.0px 453 | 452.0px 454 | 453.0px 455 | 454.0px 456 | 455.0px 457 | 456.0px 458 | 457.0px 459 | 458.0px 460 | 459.0px 461 | 460.0px 462 | 461.0px 463 | 462.0px 464 | 463.0px 465 | 464.0px 466 | 465.0px 467 | 466.0px 468 | 467.0px 469 | 468.0px 470 | 469.0px 471 | 470.0px 472 | 471.0px 473 | 472.0px 474 | 473.0px 475 | 474.0px 476 | 475.0px 477 | 476.0px 478 | 477.0px 479 | 478.0px 480 | 479.0px 481 | 480.0px 482 | 481.0px 483 | 482.0px 484 | 483.0px 485 | 484.0px 486 | 485.0px 487 | 486.0px 488 | 487.0px 489 | 488.0px 490 | 489.0px 491 | 490.0px 492 | 491.0px 493 | 492.0px 494 | 493.0px 495 | 494.0px 496 | 495.0px 497 | 496.0px 498 | 497.0px 499 | 498.0px 500 | 499.0px 501 | 500.0px 502 | 501.0px 503 | 502.0px 504 | 503.0px 505 | 504.0px 506 | 505.0px 507 | 506.0px 508 | 507.0px 509 | 508.0px 510 | 509.0px 511 | 510.0px 512 | 511.0px 513 | 512.0px 514 | 513.0px 515 | 514.0px 516 | 515.0px 517 | 516.0px 518 | 517.0px 519 | 518.0px 520 | 519.0px 521 | 520.0px 522 | 521.0px 523 | 522.0px 524 | 523.0px 525 | 524.0px 526 | 525.0px 527 | 526.0px 528 | 527.0px 529 | 528.0px 530 | 529.0px 531 | 530.0px 532 | 531.0px 533 | 532.0px 534 | 533.0px 535 | 534.0px 536 | 535.0px 537 | 536.0px 538 | 537.0px 539 | 538.0px 540 | 539.0px 541 | 540.0px 542 | 541.0px 543 | 542.0px 544 | 543.0px 545 | 544.0px 546 | 545.0px 547 | 546.0px 548 | 547.0px 549 | 548.0px 550 | 549.0px 551 | 550.0px 552 | 551.0px 553 | 552.0px 554 | 553.0px 555 | 554.0px 556 | 555.0px 557 | 556.0px 558 | 557.0px 559 | 558.0px 560 | 559.0px 561 | 560.0px 562 | 561.0px 563 | 562.0px 564 | 563.0px 565 | 564.0px 566 | 565.0px 567 | 566.0px 568 | 567.0px 569 | 568.0px 570 | 569.0px 571 | 570.0px 572 | 571.0px 573 | 572.0px 574 | 573.0px 575 | 574.0px 576 | 575.0px 577 | 576.0px 578 | 577.0px 579 | 578.0px 580 | 579.0px 581 | 580.0px 582 | 581.0px 583 | 582.0px 584 | 583.0px 585 | 584.0px 586 | 585.0px 587 | 586.0px 588 | 587.0px 589 | 588.0px 590 | 589.0px 591 | 590.0px 592 | 591.0px 593 | 592.0px 594 | 593.0px 595 | 594.0px 596 | 595.0px 597 | 596.0px 598 | 597.0px 599 | 598.0px 600 | 599.0px 601 | 600.0px 602 | 601.0px 603 | 602.0px 604 | 603.0px 605 | 604.0px 606 | 605.0px 607 | 606.0px 608 | 607.0px 609 | 608.0px 610 | 609.0px 611 | 610.0px 612 | 611.0px 613 | 612.0px 614 | 613.0px 615 | 614.0px 616 | 615.0px 617 | 616.0px 618 | 617.0px 619 | 618.0px 620 | 619.0px 621 | 620.0px 622 | 621.0px 623 | 622.0px 624 | 623.0px 625 | 624.0px 626 | 625.0px 627 | 626.0px 628 | 627.0px 629 | 628.0px 630 | 629.0px 631 | 630.0px 632 | 631.0px 633 | 632.0px 634 | 633.0px 635 | 634.0px 636 | 635.0px 637 | 636.0px 638 | 637.0px 639 | 638.0px 640 | 639.0px 641 | 640.0px 642 | 641.0px 643 | 642.0px 644 | 643.0px 645 | 644.0px 646 | 645.0px 647 | 646.0px 648 | 647.0px 649 | 648.0px 650 | 649.0px 651 | 650.0px 652 | 651.0px 653 | 652.0px 654 | 653.0px 655 | 654.0px 656 | 655.0px 657 | 656.0px 658 | 657.0px 659 | 658.0px 660 | 659.0px 661 | 660.0px 662 | 661.0px 663 | 662.0px 664 | 663.0px 665 | 664.0px 666 | 665.0px 667 | 666.0px 668 | 667.0px 669 | 668.0px 670 | 669.0px 671 | 670.0px 672 | 671.0px 673 | 672.0px 674 | 673.0px 675 | 674.0px 676 | 675.0px 677 | 676.0px 678 | 677.0px 679 | 678.0px 680 | 679.0px 681 | 680.0px 682 | 681.0px 683 | 682.0px 684 | 683.0px 685 | 684.0px 686 | 685.0px 687 | 686.0px 688 | 687.0px 689 | 688.0px 690 | 689.0px 691 | 690.0px 692 | 691.0px 693 | 692.0px 694 | 693.0px 695 | 694.0px 696 | 695.0px 697 | 696.0px 698 | 697.0px 699 | 698.0px 700 | 699.0px 701 | 700.0px 702 | 701.0px 703 | 702.0px 704 | 703.0px 705 | 704.0px 706 | 705.0px 707 | 706.0px 708 | 707.0px 709 | 708.0px 710 | 709.0px 711 | 710.0px 712 | 711.0px 713 | 712.0px 714 | 713.0px 715 | 714.0px 716 | 715.0px 717 | 716.0px 718 | 717.0px 719 | 718.0px 720 | 719.0px 721 | 720.0px 722 | 721.0px 723 | 722.0px 724 | 723.0px 725 | 724.0px 726 | 725.0px 727 | 726.0px 728 | 727.0px 729 | 728.0px 730 | 729.0px 731 | 730.0px 732 | 731.0px 733 | 732.0px 734 | 733.0px 735 | 734.0px 736 | 735.0px 737 | 736.0px 738 | 737.0px 739 | 738.0px 740 | 739.0px 741 | 740.0px 742 | 741.0px 743 | 742.0px 744 | 743.0px 745 | 744.0px 746 | 745.0px 747 | 746.0px 748 | 747.0px 749 | 748.0px 750 | 749.0px 751 | 750.0px 752 | 751.0px 753 | 752.0px 754 | 753.0px 755 | 754.0px 756 | 755.0px 757 | 756.0px 758 | 757.0px 759 | 758.0px 760 | 759.0px 761 | 760.0px 762 | 761.0px 763 | 762.0px 764 | 763.0px 765 | 764.0px 766 | 765.0px 767 | 766.0px 768 | 767.0px 769 | 768.0px 770 | 769.0px 771 | 770.0px 772 | 771.0px 773 | 772.0px 774 | 773.0px 775 | 774.0px 776 | 775.0px 777 | 776.0px 778 | 777.0px 779 | 778.0px 780 | 779.0px 781 | 780.0px 782 | 781.0px 783 | 782.0px 784 | 783.0px 785 | 784.0px 786 | 785.0px 787 | 786.0px 788 | 787.0px 789 | 788.0px 790 | 789.0px 791 | 790.0px 792 | 791.0px 793 | 792.0px 794 | 793.0px 795 | 794.0px 796 | 795.0px 797 | 796.0px 798 | 797.0px 799 | 798.0px 800 | 799.0px 801 | 800.0px 802 | 801.0px 803 | 802.0px 804 | 803.0px 805 | 804.0px 806 | 805.0px 807 | 806.0px 808 | 807.0px 809 | 808.0px 810 | 809.0px 811 | 810.0px 812 | 811.0px 813 | 812.0px 814 | 813.0px 815 | 814.0px 816 | 815.0px 817 | 816.0px 818 | 817.0px 819 | 818.0px 820 | 819.0px 821 | 820.0px 822 | 821.0px 823 | 822.0px 824 | 823.0px 825 | 824.0px 826 | 825.0px 827 | 826.0px 828 | 827.0px 829 | 828.0px 830 | 829.0px 831 | 830.0px 832 | 831.0px 833 | 832.0px 834 | 833.0px 835 | 834.0px 836 | 835.0px 837 | 836.0px 838 | 837.0px 839 | 838.0px 840 | 839.0px 841 | 840.0px 842 | 841.0px 843 | 842.0px 844 | 843.0px 845 | 844.0px 846 | 845.0px 847 | 846.0px 848 | 847.0px 849 | 848.0px 850 | 849.0px 851 | 850.0px 852 | 851.0px 853 | 852.0px 854 | 853.0px 855 | 854.0px 856 | 855.0px 857 | 856.0px 858 | 857.0px 859 | 858.0px 860 | 859.0px 861 | 860.0px 862 | 861.0px 863 | 862.0px 864 | 863.0px 865 | 864.0px 866 | 865.0px 867 | 866.0px 868 | 867.0px 869 | 868.0px 870 | 869.0px 871 | 870.0px 872 | 871.0px 873 | 872.0px 874 | 873.0px 875 | 874.0px 876 | 875.0px 877 | 876.0px 878 | 877.0px 879 | 878.0px 880 | 879.0px 881 | 880.0px 882 | 881.0px 883 | 882.0px 884 | 883.0px 885 | 884.0px 886 | 885.0px 887 | 886.0px 888 | 887.0px 889 | 888.0px 890 | 889.0px 891 | 890.0px 892 | 891.0px 893 | 892.0px 894 | 893.0px 895 | 894.0px 896 | 895.0px 897 | 896.0px 898 | 897.0px 899 | 898.0px 900 | 899.0px 901 | 900.0px 902 | 901.0px 903 | 902.0px 904 | 903.0px 905 | 904.0px 906 | 905.0px 907 | 906.0px 908 | 907.0px 909 | 908.0px 910 | 909.0px 911 | 910.0px 912 | 911.0px 913 | 912.0px 914 | 913.0px 915 | 914.0px 916 | 915.0px 917 | 916.0px 918 | 917.0px 919 | 918.0px 920 | 919.0px 921 | 920.0px 922 | 921.0px 923 | 922.0px 924 | 923.0px 925 | 924.0px 926 | 925.0px 927 | 926.0px 928 | 927.0px 929 | 928.0px 930 | 929.0px 931 | 930.0px 932 | 931.0px 933 | 932.0px 934 | 933.0px 935 | 934.0px 936 | 935.0px 937 | 936.0px 938 | 937.0px 939 | 938.0px 940 | 939.0px 941 | 940.0px 942 | 941.0px 943 | 942.0px 944 | 943.0px 945 | 944.0px 946 | 945.0px 947 | 946.0px 948 | 947.0px 949 | 948.0px 950 | 949.0px 951 | 950.0px 952 | 951.0px 953 | 952.0px 954 | 953.0px 955 | 954.0px 956 | 955.0px 957 | 956.0px 958 | 957.0px 959 | 958.0px 960 | 959.0px 961 | 960.0px 962 | 961.0px 963 | 962.0px 964 | 963.0px 965 | 964.0px 966 | 965.0px 967 | 966.0px 968 | 967.0px 969 | 968.0px 970 | 969.0px 971 | 970.0px 972 | 971.0px 973 | 972.0px 974 | 973.0px 975 | 974.0px 976 | 975.0px 977 | 976.0px 978 | 977.0px 979 | 978.0px 980 | 979.0px 981 | 980.0px 982 | 981.0px 983 | 982.0px 984 | 983.0px 985 | 984.0px 986 | 985.0px 987 | 986.0px 988 | 987.0px 989 | 988.0px 990 | 989.0px 991 | 990.0px 992 | 991.0px 993 | 992.0px 994 | 993.0px 995 | 994.0px 996 | 995.0px 997 | 996.0px 998 | 997.0px 999 | 998.0px 1000 | 999.0px 1001 | 1000.0px 1002 | 1001.0px 1003 | 1002.0px 1004 | 1003.0px 1005 | 1004.0px 1006 | 1005.0px 1007 | 1006.0px 1008 | 1007.0px 1009 | 1008.0px 1010 | 1009.0px 1011 | 1010.0px 1012 | 1011.0px 1013 | 1012.0px 1014 | 1013.0px 1015 | 1014.0px 1016 | 1015.0px 1017 | 1016.0px 1018 | 1017.0px 1019 | 1018.0px 1020 | 1019.0px 1021 | 1020.0px 1022 | 1021.0px 1023 | 1022.0px 1024 | 1023.0px 1025 | 1024.0px 1026 | 1025.0px 1027 | 1026.0px 1028 | 1027.0px 1029 | 1028.0px 1030 | 1029.0px 1031 | 1030.0px 1032 | 1031.0px 1033 | 1032.0px 1034 | 1033.0px 1035 | 1034.0px 1036 | 1035.0px 1037 | 1036.0px 1038 | 1037.0px 1039 | 1038.0px 1040 | 1039.0px 1041 | 1040.0px 1042 | 1041.0px 1043 | 1042.0px 1044 | 1043.0px 1045 | 1044.0px 1046 | 1045.0px 1047 | 1046.0px 1048 | 1047.0px 1049 | 1048.0px 1050 | 1049.0px 1051 | 1050.0px 1052 | 1051.0px 1053 | 1052.0px 1054 | 1053.0px 1055 | 1054.0px 1056 | 1055.0px 1057 | 1056.0px 1058 | 1057.0px 1059 | 1058.0px 1060 | 1059.0px 1061 | 1060.0px 1062 | 1061.0px 1063 | 1062.0px 1064 | 1063.0px 1065 | 1064.0px 1066 | 1065.0px 1067 | 1066.0px 1068 | 1067.0px 1069 | 1068.0px 1070 | 1069.0px 1071 | 1070.0px 1072 | 1071.0px 1073 | 1072.0px 1074 | 1073.0px 1075 | 1074.0px 1076 | 1075.0px 1077 | 1076.0px 1078 | 1077.0px 1079 | 1078.0px 1080 | 1079.0px 1081 | 1080px 1082 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/values-960x540/lay_x.xml: -------------------------------------------------------------------------------- 1 | 2 | 0.5px 3 | 1.0px 4 | 1.5px 5 | 2.0px 6 | 2.5px 7 | 3.0px 8 | 3.5px 9 | 4.0px 10 | 4.5px 11 | 5.0px 12 | 5.5px 13 | 6.0px 14 | 6.5px 15 | 7.0px 16 | 7.5px 17 | 8.0px 18 | 8.5px 19 | 9.0px 20 | 9.5px 21 | 10.0px 22 | 10.5px 23 | 11.0px 24 | 11.5px 25 | 12.0px 26 | 12.5px 27 | 13.0px 28 | 13.5px 29 | 14.0px 30 | 14.5px 31 | 15.0px 32 | 15.5px 33 | 16.0px 34 | 16.5px 35 | 17.0px 36 | 17.5px 37 | 18.0px 38 | 18.5px 39 | 19.0px 40 | 19.5px 41 | 20.0px 42 | 20.5px 43 | 21.0px 44 | 21.5px 45 | 22.0px 46 | 22.5px 47 | 23.0px 48 | 23.5px 49 | 24.0px 50 | 24.5px 51 | 25.0px 52 | 25.5px 53 | 26.0px 54 | 26.5px 55 | 27.0px 56 | 27.5px 57 | 28.0px 58 | 28.5px 59 | 29.0px 60 | 29.5px 61 | 30.0px 62 | 30.5px 63 | 31.0px 64 | 31.5px 65 | 32.0px 66 | 32.5px 67 | 33.0px 68 | 33.5px 69 | 34.0px 70 | 34.5px 71 | 35.0px 72 | 35.5px 73 | 36.0px 74 | 36.5px 75 | 37.0px 76 | 37.5px 77 | 38.0px 78 | 38.5px 79 | 39.0px 80 | 39.5px 81 | 40.0px 82 | 40.5px 83 | 41.0px 84 | 41.5px 85 | 42.0px 86 | 42.5px 87 | 43.0px 88 | 43.5px 89 | 44.0px 90 | 44.5px 91 | 45.0px 92 | 45.5px 93 | 46.0px 94 | 46.5px 95 | 47.0px 96 | 47.5px 97 | 48.0px 98 | 48.5px 99 | 49.0px 100 | 49.5px 101 | 50.0px 102 | 50.5px 103 | 51.0px 104 | 51.5px 105 | 52.0px 106 | 52.5px 107 | 53.0px 108 | 53.5px 109 | 54.0px 110 | 54.5px 111 | 55.0px 112 | 55.5px 113 | 56.0px 114 | 56.5px 115 | 57.0px 116 | 57.5px 117 | 58.0px 118 | 58.5px 119 | 59.0px 120 | 59.5px 121 | 60.0px 122 | 60.5px 123 | 61.0px 124 | 61.5px 125 | 62.0px 126 | 62.5px 127 | 63.0px 128 | 63.5px 129 | 64.0px 130 | 64.5px 131 | 65.0px 132 | 65.5px 133 | 66.0px 134 | 66.5px 135 | 67.0px 136 | 67.5px 137 | 68.0px 138 | 68.5px 139 | 69.0px 140 | 69.5px 141 | 70.0px 142 | 70.5px 143 | 71.0px 144 | 71.5px 145 | 72.0px 146 | 72.5px 147 | 73.0px 148 | 73.5px 149 | 74.0px 150 | 74.5px 151 | 75.0px 152 | 75.5px 153 | 76.0px 154 | 76.5px 155 | 77.0px 156 | 77.5px 157 | 78.0px 158 | 78.5px 159 | 79.0px 160 | 79.5px 161 | 80.0px 162 | 80.5px 163 | 81.0px 164 | 81.5px 165 | 82.0px 166 | 82.5px 167 | 83.0px 168 | 83.5px 169 | 84.0px 170 | 84.5px 171 | 85.0px 172 | 85.5px 173 | 86.0px 174 | 86.5px 175 | 87.0px 176 | 87.5px 177 | 88.0px 178 | 88.5px 179 | 89.0px 180 | 89.5px 181 | 90.0px 182 | 90.5px 183 | 91.0px 184 | 91.5px 185 | 92.0px 186 | 92.5px 187 | 93.0px 188 | 93.5px 189 | 94.0px 190 | 94.5px 191 | 95.0px 192 | 95.5px 193 | 96.0px 194 | 96.5px 195 | 97.0px 196 | 97.5px 197 | 98.0px 198 | 98.5px 199 | 99.0px 200 | 99.5px 201 | 100.0px 202 | 100.5px 203 | 101.0px 204 | 101.5px 205 | 102.0px 206 | 102.5px 207 | 103.0px 208 | 103.5px 209 | 104.0px 210 | 104.5px 211 | 105.0px 212 | 105.5px 213 | 106.0px 214 | 106.5px 215 | 107.0px 216 | 107.5px 217 | 108.0px 218 | 108.5px 219 | 109.0px 220 | 109.5px 221 | 110.0px 222 | 110.5px 223 | 111.0px 224 | 111.5px 225 | 112.0px 226 | 112.5px 227 | 113.0px 228 | 113.5px 229 | 114.0px 230 | 114.5px 231 | 115.0px 232 | 115.5px 233 | 116.0px 234 | 116.5px 235 | 117.0px 236 | 117.5px 237 | 118.0px 238 | 118.5px 239 | 119.0px 240 | 119.5px 241 | 120.0px 242 | 120.5px 243 | 121.0px 244 | 121.5px 245 | 122.0px 246 | 122.5px 247 | 123.0px 248 | 123.5px 249 | 124.0px 250 | 124.5px 251 | 125.0px 252 | 125.5px 253 | 126.0px 254 | 126.5px 255 | 127.0px 256 | 127.5px 257 | 128.0px 258 | 128.5px 259 | 129.0px 260 | 129.5px 261 | 130.0px 262 | 130.5px 263 | 131.0px 264 | 131.5px 265 | 132.0px 266 | 132.5px 267 | 133.0px 268 | 133.5px 269 | 134.0px 270 | 134.5px 271 | 135.0px 272 | 135.5px 273 | 136.0px 274 | 136.5px 275 | 137.0px 276 | 137.5px 277 | 138.0px 278 | 138.5px 279 | 139.0px 280 | 139.5px 281 | 140.0px 282 | 140.5px 283 | 141.0px 284 | 141.5px 285 | 142.0px 286 | 142.5px 287 | 143.0px 288 | 143.5px 289 | 144.0px 290 | 144.5px 291 | 145.0px 292 | 145.5px 293 | 146.0px 294 | 146.5px 295 | 147.0px 296 | 147.5px 297 | 148.0px 298 | 148.5px 299 | 149.0px 300 | 149.5px 301 | 150.0px 302 | 150.5px 303 | 151.0px 304 | 151.5px 305 | 152.0px 306 | 152.5px 307 | 153.0px 308 | 153.5px 309 | 154.0px 310 | 154.5px 311 | 155.0px 312 | 155.5px 313 | 156.0px 314 | 156.5px 315 | 157.0px 316 | 157.5px 317 | 158.0px 318 | 158.5px 319 | 159.0px 320 | 159.5px 321 | 160.0px 322 | 160.5px 323 | 161.0px 324 | 161.5px 325 | 162.0px 326 | 162.5px 327 | 163.0px 328 | 163.5px 329 | 164.0px 330 | 164.5px 331 | 165.0px 332 | 165.5px 333 | 166.0px 334 | 166.5px 335 | 167.0px 336 | 167.5px 337 | 168.0px 338 | 168.5px 339 | 169.0px 340 | 169.5px 341 | 170.0px 342 | 170.5px 343 | 171.0px 344 | 171.5px 345 | 172.0px 346 | 172.5px 347 | 173.0px 348 | 173.5px 349 | 174.0px 350 | 174.5px 351 | 175.0px 352 | 175.5px 353 | 176.0px 354 | 176.5px 355 | 177.0px 356 | 177.5px 357 | 178.0px 358 | 178.5px 359 | 179.0px 360 | 179.5px 361 | 180.0px 362 | 180.5px 363 | 181.0px 364 | 181.5px 365 | 182.0px 366 | 182.5px 367 | 183.0px 368 | 183.5px 369 | 184.0px 370 | 184.5px 371 | 185.0px 372 | 185.5px 373 | 186.0px 374 | 186.5px 375 | 187.0px 376 | 187.5px 377 | 188.0px 378 | 188.5px 379 | 189.0px 380 | 189.5px 381 | 190.0px 382 | 190.5px 383 | 191.0px 384 | 191.5px 385 | 192.0px 386 | 192.5px 387 | 193.0px 388 | 193.5px 389 | 194.0px 390 | 194.5px 391 | 195.0px 392 | 195.5px 393 | 196.0px 394 | 196.5px 395 | 197.0px 396 | 197.5px 397 | 198.0px 398 | 198.5px 399 | 199.0px 400 | 199.5px 401 | 200.0px 402 | 200.5px 403 | 201.0px 404 | 201.5px 405 | 202.0px 406 | 202.5px 407 | 203.0px 408 | 203.5px 409 | 204.0px 410 | 204.5px 411 | 205.0px 412 | 205.5px 413 | 206.0px 414 | 206.5px 415 | 207.0px 416 | 207.5px 417 | 208.0px 418 | 208.5px 419 | 209.0px 420 | 209.5px 421 | 210.0px 422 | 210.5px 423 | 211.0px 424 | 211.5px 425 | 212.0px 426 | 212.5px 427 | 213.0px 428 | 213.5px 429 | 214.0px 430 | 214.5px 431 | 215.0px 432 | 215.5px 433 | 216.0px 434 | 216.5px 435 | 217.0px 436 | 217.5px 437 | 218.0px 438 | 218.5px 439 | 219.0px 440 | 219.5px 441 | 220.0px 442 | 220.5px 443 | 221.0px 444 | 221.5px 445 | 222.0px 446 | 222.5px 447 | 223.0px 448 | 223.5px 449 | 224.0px 450 | 224.5px 451 | 225.0px 452 | 225.5px 453 | 226.0px 454 | 226.5px 455 | 227.0px 456 | 227.5px 457 | 228.0px 458 | 228.5px 459 | 229.0px 460 | 229.5px 461 | 230.0px 462 | 230.5px 463 | 231.0px 464 | 231.5px 465 | 232.0px 466 | 232.5px 467 | 233.0px 468 | 233.5px 469 | 234.0px 470 | 234.5px 471 | 235.0px 472 | 235.5px 473 | 236.0px 474 | 236.5px 475 | 237.0px 476 | 237.5px 477 | 238.0px 478 | 238.5px 479 | 239.0px 480 | 239.5px 481 | 240.0px 482 | 240.5px 483 | 241.0px 484 | 241.5px 485 | 242.0px 486 | 242.5px 487 | 243.0px 488 | 243.5px 489 | 244.0px 490 | 244.5px 491 | 245.0px 492 | 245.5px 493 | 246.0px 494 | 246.5px 495 | 247.0px 496 | 247.5px 497 | 248.0px 498 | 248.5px 499 | 249.0px 500 | 249.5px 501 | 250.0px 502 | 250.5px 503 | 251.0px 504 | 251.5px 505 | 252.0px 506 | 252.5px 507 | 253.0px 508 | 253.5px 509 | 254.0px 510 | 254.5px 511 | 255.0px 512 | 255.5px 513 | 256.0px 514 | 256.5px 515 | 257.0px 516 | 257.5px 517 | 258.0px 518 | 258.5px 519 | 259.0px 520 | 259.5px 521 | 260.0px 522 | 260.5px 523 | 261.0px 524 | 261.5px 525 | 262.0px 526 | 262.5px 527 | 263.0px 528 | 263.5px 529 | 264.0px 530 | 264.5px 531 | 265.0px 532 | 265.5px 533 | 266.0px 534 | 266.5px 535 | 267.0px 536 | 267.5px 537 | 268.0px 538 | 268.5px 539 | 269.0px 540 | 269.5px 541 | 270.0px 542 | 270.5px 543 | 271.0px 544 | 271.5px 545 | 272.0px 546 | 272.5px 547 | 273.0px 548 | 273.5px 549 | 274.0px 550 | 274.5px 551 | 275.0px 552 | 275.5px 553 | 276.0px 554 | 276.5px 555 | 277.0px 556 | 277.5px 557 | 278.0px 558 | 278.5px 559 | 279.0px 560 | 279.5px 561 | 280.0px 562 | 280.5px 563 | 281.0px 564 | 281.5px 565 | 282.0px 566 | 282.5px 567 | 283.0px 568 | 283.5px 569 | 284.0px 570 | 284.5px 571 | 285.0px 572 | 285.5px 573 | 286.0px 574 | 286.5px 575 | 287.0px 576 | 287.5px 577 | 288.0px 578 | 288.5px 579 | 289.0px 580 | 289.5px 581 | 290.0px 582 | 290.5px 583 | 291.0px 584 | 291.5px 585 | 292.0px 586 | 292.5px 587 | 293.0px 588 | 293.5px 589 | 294.0px 590 | 294.5px 591 | 295.0px 592 | 295.5px 593 | 296.0px 594 | 296.5px 595 | 297.0px 596 | 297.5px 597 | 298.0px 598 | 298.5px 599 | 299.0px 600 | 299.5px 601 | 300.0px 602 | 300.5px 603 | 301.0px 604 | 301.5px 605 | 302.0px 606 | 302.5px 607 | 303.0px 608 | 303.5px 609 | 304.0px 610 | 304.5px 611 | 305.0px 612 | 305.5px 613 | 306.0px 614 | 306.5px 615 | 307.0px 616 | 307.5px 617 | 308.0px 618 | 308.5px 619 | 309.0px 620 | 309.5px 621 | 310.0px 622 | 310.5px 623 | 311.0px 624 | 311.5px 625 | 312.0px 626 | 312.5px 627 | 313.0px 628 | 313.5px 629 | 314.0px 630 | 314.5px 631 | 315.0px 632 | 315.5px 633 | 316.0px 634 | 316.5px 635 | 317.0px 636 | 317.5px 637 | 318.0px 638 | 318.5px 639 | 319.0px 640 | 319.5px 641 | 320.0px 642 | 320.5px 643 | 321.0px 644 | 321.5px 645 | 322.0px 646 | 322.5px 647 | 323.0px 648 | 323.5px 649 | 324.0px 650 | 324.5px 651 | 325.0px 652 | 325.5px 653 | 326.0px 654 | 326.5px 655 | 327.0px 656 | 327.5px 657 | 328.0px 658 | 328.5px 659 | 329.0px 660 | 329.5px 661 | 330.0px 662 | 330.5px 663 | 331.0px 664 | 331.5px 665 | 332.0px 666 | 332.5px 667 | 333.0px 668 | 333.5px 669 | 334.0px 670 | 334.5px 671 | 335.0px 672 | 335.5px 673 | 336.0px 674 | 336.5px 675 | 337.0px 676 | 337.5px 677 | 338.0px 678 | 338.5px 679 | 339.0px 680 | 339.5px 681 | 340.0px 682 | 340.5px 683 | 341.0px 684 | 341.5px 685 | 342.0px 686 | 342.5px 687 | 343.0px 688 | 343.5px 689 | 344.0px 690 | 344.5px 691 | 345.0px 692 | 345.5px 693 | 346.0px 694 | 346.5px 695 | 347.0px 696 | 347.5px 697 | 348.0px 698 | 348.5px 699 | 349.0px 700 | 349.5px 701 | 350.0px 702 | 350.5px 703 | 351.0px 704 | 351.5px 705 | 352.0px 706 | 352.5px 707 | 353.0px 708 | 353.5px 709 | 354.0px 710 | 354.5px 711 | 355.0px 712 | 355.5px 713 | 356.0px 714 | 356.5px 715 | 357.0px 716 | 357.5px 717 | 358.0px 718 | 358.5px 719 | 359.0px 720 | 359.5px 721 | 360.0px 722 | 360.5px 723 | 361.0px 724 | 361.5px 725 | 362.0px 726 | 362.5px 727 | 363.0px 728 | 363.5px 729 | 364.0px 730 | 364.5px 731 | 365.0px 732 | 365.5px 733 | 366.0px 734 | 366.5px 735 | 367.0px 736 | 367.5px 737 | 368.0px 738 | 368.5px 739 | 369.0px 740 | 369.5px 741 | 370.0px 742 | 370.5px 743 | 371.0px 744 | 371.5px 745 | 372.0px 746 | 372.5px 747 | 373.0px 748 | 373.5px 749 | 374.0px 750 | 374.5px 751 | 375.0px 752 | 375.5px 753 | 376.0px 754 | 376.5px 755 | 377.0px 756 | 377.5px 757 | 378.0px 758 | 378.5px 759 | 379.0px 760 | 379.5px 761 | 380.0px 762 | 380.5px 763 | 381.0px 764 | 381.5px 765 | 382.0px 766 | 382.5px 767 | 383.0px 768 | 383.5px 769 | 384.0px 770 | 384.5px 771 | 385.0px 772 | 385.5px 773 | 386.0px 774 | 386.5px 775 | 387.0px 776 | 387.5px 777 | 388.0px 778 | 388.5px 779 | 389.0px 780 | 389.5px 781 | 390.0px 782 | 390.5px 783 | 391.0px 784 | 391.5px 785 | 392.0px 786 | 392.5px 787 | 393.0px 788 | 393.5px 789 | 394.0px 790 | 394.5px 791 | 395.0px 792 | 395.5px 793 | 396.0px 794 | 396.5px 795 | 397.0px 796 | 397.5px 797 | 398.0px 798 | 398.5px 799 | 399.0px 800 | 399.5px 801 | 400.0px 802 | 400.5px 803 | 401.0px 804 | 401.5px 805 | 402.0px 806 | 402.5px 807 | 403.0px 808 | 403.5px 809 | 404.0px 810 | 404.5px 811 | 405.0px 812 | 405.5px 813 | 406.0px 814 | 406.5px 815 | 407.0px 816 | 407.5px 817 | 408.0px 818 | 408.5px 819 | 409.0px 820 | 409.5px 821 | 410.0px 822 | 410.5px 823 | 411.0px 824 | 411.5px 825 | 412.0px 826 | 412.5px 827 | 413.0px 828 | 413.5px 829 | 414.0px 830 | 414.5px 831 | 415.0px 832 | 415.5px 833 | 416.0px 834 | 416.5px 835 | 417.0px 836 | 417.5px 837 | 418.0px 838 | 418.5px 839 | 419.0px 840 | 419.5px 841 | 420.0px 842 | 420.5px 843 | 421.0px 844 | 421.5px 845 | 422.0px 846 | 422.5px 847 | 423.0px 848 | 423.5px 849 | 424.0px 850 | 424.5px 851 | 425.0px 852 | 425.5px 853 | 426.0px 854 | 426.5px 855 | 427.0px 856 | 427.5px 857 | 428.0px 858 | 428.5px 859 | 429.0px 860 | 429.5px 861 | 430.0px 862 | 430.5px 863 | 431.0px 864 | 431.5px 865 | 432.0px 866 | 432.5px 867 | 433.0px 868 | 433.5px 869 | 434.0px 870 | 434.5px 871 | 435.0px 872 | 435.5px 873 | 436.0px 874 | 436.5px 875 | 437.0px 876 | 437.5px 877 | 438.0px 878 | 438.5px 879 | 439.0px 880 | 439.5px 881 | 440.0px 882 | 440.5px 883 | 441.0px 884 | 441.5px 885 | 442.0px 886 | 442.5px 887 | 443.0px 888 | 443.5px 889 | 444.0px 890 | 444.5px 891 | 445.0px 892 | 445.5px 893 | 446.0px 894 | 446.5px 895 | 447.0px 896 | 447.5px 897 | 448.0px 898 | 448.5px 899 | 449.0px 900 | 449.5px 901 | 450.0px 902 | 450.5px 903 | 451.0px 904 | 451.5px 905 | 452.0px 906 | 452.5px 907 | 453.0px 908 | 453.5px 909 | 454.0px 910 | 454.5px 911 | 455.0px 912 | 455.5px 913 | 456.0px 914 | 456.5px 915 | 457.0px 916 | 457.5px 917 | 458.0px 918 | 458.5px 919 | 459.0px 920 | 459.5px 921 | 460.0px 922 | 460.5px 923 | 461.0px 924 | 461.5px 925 | 462.0px 926 | 462.5px 927 | 463.0px 928 | 463.5px 929 | 464.0px 930 | 464.5px 931 | 465.0px 932 | 465.5px 933 | 466.0px 934 | 466.5px 935 | 467.0px 936 | 467.5px 937 | 468.0px 938 | 468.5px 939 | 469.0px 940 | 469.5px 941 | 470.0px 942 | 470.5px 943 | 471.0px 944 | 471.5px 945 | 472.0px 946 | 472.5px 947 | 473.0px 948 | 473.5px 949 | 474.0px 950 | 474.5px 951 | 475.0px 952 | 475.5px 953 | 476.0px 954 | 476.5px 955 | 477.0px 956 | 477.5px 957 | 478.0px 958 | 478.5px 959 | 479.0px 960 | 479.5px 961 | 480.0px 962 | 480.5px 963 | 481.0px 964 | 481.5px 965 | 482.0px 966 | 482.5px 967 | 483.0px 968 | 483.5px 969 | 484.0px 970 | 484.5px 971 | 485.0px 972 | 485.5px 973 | 486.0px 974 | 486.5px 975 | 487.0px 976 | 487.5px 977 | 488.0px 978 | 488.5px 979 | 489.0px 980 | 489.5px 981 | 490.0px 982 | 490.5px 983 | 491.0px 984 | 491.5px 985 | 492.0px 986 | 492.5px 987 | 493.0px 988 | 493.5px 989 | 494.0px 990 | 494.5px 991 | 495.0px 992 | 495.5px 993 | 496.0px 994 | 496.5px 995 | 497.0px 996 | 497.5px 997 | 498.0px 998 | 498.5px 999 | 499.0px 1000 | 499.5px 1001 | 500.0px 1002 | 500.5px 1003 | 501.0px 1004 | 501.5px 1005 | 502.0px 1006 | 502.5px 1007 | 503.0px 1008 | 503.5px 1009 | 504.0px 1010 | 504.5px 1011 | 505.0px 1012 | 505.5px 1013 | 506.0px 1014 | 506.5px 1015 | 507.0px 1016 | 507.5px 1017 | 508.0px 1018 | 508.5px 1019 | 509.0px 1020 | 509.5px 1021 | 510.0px 1022 | 510.5px 1023 | 511.0px 1024 | 511.5px 1025 | 512.0px 1026 | 512.5px 1027 | 513.0px 1028 | 513.5px 1029 | 514.0px 1030 | 514.5px 1031 | 515.0px 1032 | 515.5px 1033 | 516.0px 1034 | 516.5px 1035 | 517.0px 1036 | 517.5px 1037 | 518.0px 1038 | 518.5px 1039 | 519.0px 1040 | 519.5px 1041 | 520.0px 1042 | 520.5px 1043 | 521.0px 1044 | 521.5px 1045 | 522.0px 1046 | 522.5px 1047 | 523.0px 1048 | 523.5px 1049 | 524.0px 1050 | 524.5px 1051 | 525.0px 1052 | 525.5px 1053 | 526.0px 1054 | 526.5px 1055 | 527.0px 1056 | 527.5px 1057 | 528.0px 1058 | 528.5px 1059 | 529.0px 1060 | 529.5px 1061 | 530.0px 1062 | 530.5px 1063 | 531.0px 1064 | 531.5px 1065 | 532.0px 1066 | 532.5px 1067 | 533.0px 1068 | 533.5px 1069 | 534.0px 1070 | 534.5px 1071 | 535.0px 1072 | 535.5px 1073 | 536.0px 1074 | 536.5px 1075 | 537.0px 1076 | 537.5px 1077 | 538.0px 1078 | 538.5px 1079 | 539.0px 1080 | 539.5px 1081 | 540px 1082 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #ffffff 4 | #cccccc 5 | 6 | #7B1FA2 7 | #111111 8 | 9 | #88888888 10 | #f2f2f2 11 | #9C27B0 12 | 13 | #f4f4f4 14 | #00000000 15 | #000000 16 | #0084ff 17 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @dimen/x15 5 | @dimen/x24 6 | @dimen/x15 7 | @dimen/x43 8 | @dimen/y144 9 | -------------------------------------------------------------------------------- /dropdownmenu/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | DropDownMenu 3 | 没有找到符合条件的房源 4 | 5 | -------------------------------------------------------------------------------- /dropdownmenu/src/test/java/com/qlh/dropdownmenu/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.qlh.dropdownmenu; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzgl5533/DropMenu/0b6800ced0ee043b2761c562916b17ed6f6a7a4e/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Jul 05 14:33:16 CST 2017 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-3.3-all.zip 7 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >/dev/null 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >/dev/null 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /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 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 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 Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':dropdownmenu' 2 | --------------------------------------------------------------------------------