From a38906494fe7d1de89ea1ab8b6795f617a4acb46 Mon Sep 17 00:00:00 2001 From: Fanhuitong <981964879@qq.com> Date: Fri, 17 Mar 2023 18:20:57 +0800 Subject: [PATCH] =?UTF-8?q?version:1.1=20update:=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=B1=8F=E5=B9=95=E9=80=82=E9=85=8D=20fix=20bug:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 68 ++- app/src/doc/tuixin.jks | Bin 0 -> 2064 bytes app/src/doc/xueshibaoos.jks | Bin 2552 -> 0 bytes app/src/main/AndroidManifest.xml | 4 +- .../aidl/com/uiui/sn/IGetInfoInterface.aidl | 31 + app/src/main/assets/aria_config.xml | 161 +++++ .../videoplayer/activity/ActivityTikTok.java | 6 +- .../activity/main/MainAContact.java | 19 + .../activity/main/MainAPresenter.java | 63 ++ .../activity/{ => main}/MainActivity.java | 199 +++--- .../adapter/TikTokRecyclerViewAdapter.java | 159 +++-- .../videoplayer/adapter/VideoAdapter.java | 218 ++++--- .../uiui/videoplayer/base/BaseActivity.java | 134 ++++ .../videoplayer/base/BaseApplication.java | 31 + .../videoplayer/base/BaseLightActivity.java | 129 ++++ .../uiui/videoplayer/base/BasePresenter.java | 7 + .../com/uiui/videoplayer/base/BaseView.java | 4 + .../uiui/videoplayer/base/CustomDialog.java | 5 - .../uiui/videoplayer/base/MyApplication.java | 13 - .../uiui/videoplayer/bean/BaseResponse.java | 24 + .../uiui/videoplayer/bean/LocalVideoInfo.java | 118 ++++ .../com/uiui/videoplayer/bean/VideoInfo.java | 64 ++ .../uiui/videoplayer/config/CommonConfig.java | 6 + .../videoplayer/disklrucache/CacheHelper.java | 474 ++++++++++++++ .../disklrucache/DiskLruCacheHelper.java | 427 +++++++++++++ .../uiui/videoplayer/disklrucache/Utils.java | 101 +++ .../com/uiui/videoplayer/gson/GsonUtils.java | 144 +++++ .../gson/IntegerDefault0Adapter.java | 35 ++ .../gson/NullStringToEmptyAdapterFactory.java | 45 ++ .../videoplayer/manager/ConnectManager.java | 98 +++ .../uiui/videoplayer/manager/ConnectMode.java | 12 + .../videoplayer/manager/RemoteManager.java | 139 +++++ .../com/uiui/videoplayer/network/MD5Util.java | 112 ++++ .../network/NetInterfaceManager.java | 388 ++++++++++++ .../uiui/videoplayer/network/UrlAddress.java | 10 + .../videoplayer/network/api/HomeVideoApi.java | 18 + .../interceptor/RepeatRequestInterceptor.java | 107 ++++ .../uiui/videoplayer/utils/FFmpegUtils.java | 56 ++ .../com/uiui/videoplayer/utils/FileUtils.java | 14 - .../com/uiui/videoplayer/utils/JGYUtils.java | 104 ++++ .../uiui/videoplayer/utils/ScreenUtils.java | 32 + .../uiui/videoplayer/utils/VideoUtils.java | 82 +++ app/src/main/res/drawable-hdpi/menu_back.png | Bin 1484 -> 1774 bytes .../main/res/drawable-hdpi/menu_refresh.png | Bin 1926 -> 3577 bytes .../main/res/drawable-hdpi/menu_selected.png | Bin 1621 -> 2323 bytes .../main/res/drawable-hdpi/menu_settings.png | Bin 2250 -> 2300 bytes .../res/drawable-hdpi/menu_transparent.png | Bin 0 -> 169 bytes .../res/drawable-hdpi/status_download.png | Bin 0 -> 4787 bytes .../main/res/drawable-hdpi/status_play.png | Bin 0 -> 4702 bytes .../main/res/layout-land/activity_main.xml | 4 +- .../main/res/layout-port/activity_main.xml | 4 +- app/src/main/res/layout/item_tiktok.xml | 32 +- app/src/main/res/layout/item_videofile.xml | 70 ++- app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3710 -> 7429 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 3710 -> 7429 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 3710 -> 7429 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 3710 -> 7429 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 3710 -> 7429 bytes app/src/main/res/values-sw1024dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw1280dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw1365dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw320dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw360dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw362dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw384dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw392dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw400dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw410dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw411dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw432dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw451dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw480dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw533dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw540dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw592dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw600dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw640dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw662dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw720dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw768dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw800dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw811dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw820dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw960dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values-sw961dp/dimens.xml | 576 ++++++++++++++++++ app/src/main/res/values/dimens.xml | 573 +++++++++++++++++ app/src/main/res/values/strings.xml | 3 +- screenMatch.properties | 55 ++ screenMatch_example_dimens.xml | 431 +++++++++++++ 89 files changed, 20297 insertions(+), 288 deletions(-) create mode 100644 app/src/doc/tuixin.jks delete mode 100644 app/src/doc/xueshibaoos.jks create mode 100644 app/src/main/aidl/com/uiui/sn/IGetInfoInterface.aidl create mode 100644 app/src/main/assets/aria_config.xml create mode 100644 app/src/main/java/com/uiui/videoplayer/activity/main/MainAContact.java create mode 100644 app/src/main/java/com/uiui/videoplayer/activity/main/MainAPresenter.java rename app/src/main/java/com/uiui/videoplayer/activity/{ => main}/MainActivity.java (79%) create mode 100644 app/src/main/java/com/uiui/videoplayer/base/BaseActivity.java create mode 100644 app/src/main/java/com/uiui/videoplayer/base/BaseApplication.java create mode 100644 app/src/main/java/com/uiui/videoplayer/base/BaseLightActivity.java create mode 100644 app/src/main/java/com/uiui/videoplayer/base/BasePresenter.java create mode 100644 app/src/main/java/com/uiui/videoplayer/base/BaseView.java delete mode 100644 app/src/main/java/com/uiui/videoplayer/base/MyApplication.java create mode 100644 app/src/main/java/com/uiui/videoplayer/bean/BaseResponse.java create mode 100644 app/src/main/java/com/uiui/videoplayer/bean/LocalVideoInfo.java create mode 100644 app/src/main/java/com/uiui/videoplayer/bean/VideoInfo.java create mode 100644 app/src/main/java/com/uiui/videoplayer/config/CommonConfig.java create mode 100644 app/src/main/java/com/uiui/videoplayer/disklrucache/CacheHelper.java create mode 100644 app/src/main/java/com/uiui/videoplayer/disklrucache/DiskLruCacheHelper.java create mode 100644 app/src/main/java/com/uiui/videoplayer/disklrucache/Utils.java create mode 100644 app/src/main/java/com/uiui/videoplayer/gson/GsonUtils.java create mode 100644 app/src/main/java/com/uiui/videoplayer/gson/IntegerDefault0Adapter.java create mode 100644 app/src/main/java/com/uiui/videoplayer/gson/NullStringToEmptyAdapterFactory.java create mode 100644 app/src/main/java/com/uiui/videoplayer/manager/ConnectManager.java create mode 100644 app/src/main/java/com/uiui/videoplayer/manager/ConnectMode.java create mode 100644 app/src/main/java/com/uiui/videoplayer/manager/RemoteManager.java create mode 100644 app/src/main/java/com/uiui/videoplayer/network/MD5Util.java create mode 100644 app/src/main/java/com/uiui/videoplayer/network/NetInterfaceManager.java create mode 100644 app/src/main/java/com/uiui/videoplayer/network/UrlAddress.java create mode 100644 app/src/main/java/com/uiui/videoplayer/network/api/HomeVideoApi.java create mode 100644 app/src/main/java/com/uiui/videoplayer/network/interceptor/RepeatRequestInterceptor.java create mode 100644 app/src/main/java/com/uiui/videoplayer/utils/FFmpegUtils.java delete mode 100644 app/src/main/java/com/uiui/videoplayer/utils/FileUtils.java create mode 100644 app/src/main/java/com/uiui/videoplayer/utils/JGYUtils.java create mode 100644 app/src/main/java/com/uiui/videoplayer/utils/ScreenUtils.java create mode 100644 app/src/main/java/com/uiui/videoplayer/utils/VideoUtils.java create mode 100644 app/src/main/res/drawable-hdpi/menu_transparent.png create mode 100644 app/src/main/res/drawable-hdpi/status_download.png create mode 100644 app/src/main/res/drawable-hdpi/status_play.png create mode 100644 app/src/main/res/values-sw1024dp/dimens.xml create mode 100644 app/src/main/res/values-sw1280dp/dimens.xml create mode 100644 app/src/main/res/values-sw1365dp/dimens.xml create mode 100644 app/src/main/res/values-sw320dp/dimens.xml create mode 100644 app/src/main/res/values-sw360dp/dimens.xml create mode 100644 app/src/main/res/values-sw362dp/dimens.xml create mode 100644 app/src/main/res/values-sw384dp/dimens.xml create mode 100644 app/src/main/res/values-sw392dp/dimens.xml create mode 100644 app/src/main/res/values-sw400dp/dimens.xml create mode 100644 app/src/main/res/values-sw410dp/dimens.xml create mode 100644 app/src/main/res/values-sw411dp/dimens.xml create mode 100644 app/src/main/res/values-sw432dp/dimens.xml create mode 100644 app/src/main/res/values-sw451dp/dimens.xml create mode 100644 app/src/main/res/values-sw480dp/dimens.xml create mode 100644 app/src/main/res/values-sw533dp/dimens.xml create mode 100644 app/src/main/res/values-sw540dp/dimens.xml create mode 100644 app/src/main/res/values-sw592dp/dimens.xml create mode 100644 app/src/main/res/values-sw600dp/dimens.xml create mode 100644 app/src/main/res/values-sw640dp/dimens.xml create mode 100644 app/src/main/res/values-sw662dp/dimens.xml create mode 100644 app/src/main/res/values-sw720dp/dimens.xml create mode 100644 app/src/main/res/values-sw768dp/dimens.xml create mode 100644 app/src/main/res/values-sw800dp/dimens.xml create mode 100644 app/src/main/res/values-sw811dp/dimens.xml create mode 100644 app/src/main/res/values-sw820dp/dimens.xml create mode 100644 app/src/main/res/values-sw960dp/dimens.xml create mode 100644 app/src/main/res/values-sw961dp/dimens.xml create mode 100644 screenMatch.properties create mode 100644 screenMatch_example_dimens.xml diff --git a/app/build.gradle b/app/build.gradle index fcf6e4d..edce63c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "com.uiui.videoplayer" minSdkVersion 24 targetSdkVersion 28 - versionCode 1 - versionName "1.0" + versionCode 2 + versionName "1.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -27,16 +27,16 @@ android { //签名 signingConfigs { debug { - storeFile file("src/doc/xueshibaoos.jks") + storeFile file("src/doc/tuixin.jks") storePassword "123456" - keyAlias "xueshibaoos" + keyAlias "universal" keyPassword "123456" v2SigningEnabled false } release {// 签名文件 - storeFile file("src/doc/xueshibaoos.jks") + storeFile file("src/doc/tuixin.jks") storePassword "123456" - keyAlias "xueshibaoos" + keyAlias "universal" keyPassword "123456" v2SigningEnabled false } @@ -65,20 +65,53 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation project(path: ':JZVideo') + implementation project(path: ':niceimageview') + implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test.ext:junit:1.1.2' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' - implementation 'com.github.bumptech.glide:glide:4.11.0' - annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' - - implementation 'io.reactivex.rxjava2:rxjava:2.1.0' - implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.2' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + //bindView + implementation 'com.jakewharton:butterknife:10.2.3' + annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' + //okhttp + implementation 'com.squareup.okhttp3:okhttp:4.9.1' + //Retrofit + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + implementation 'com.squareup.retrofit2:converter-gson:2.9.0' + implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0' + //RxJava + implementation 'io.reactivex.rxjava3:rxjava:3.0.0' + implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' + //生命周期管理 + implementation 'com.trello.rxlifecycle4:rxlifecycle:4.0.2' + implementation 'com.trello.rxlifecycle4:rxlifecycle-android:4.0.2' + implementation 'com.trello.rxlifecycle4:rxlifecycle-components:4.0.2' + implementation 'com.trello.rxlifecycle4:rxlifecycle-components-preference:4.0.2' + implementation 'com.trello.rxlifecycle4:rxlifecycle-android-lifecycle:4.0.2' + //Google + implementation 'com.google.code.gson:gson:2.10.1' + implementation 'com.google.zxing:core:3.5.0' + //图片加载框架 + implementation 'com.github.bumptech.glide:glide:4.13.2' + annotationProcessor 'com.github.bumptech.glide:compiler:4.13.2' + //磁盘缓存 + implementation 'com.jakewharton:disklrucache:2.0.2' + //Aria + implementation 'com.arialyy.aria:core:3.8.15' + annotationProcessor 'com.arialyy.aria:compiler:3.8.15' + //MMKV + implementation 'com.tencent:mmkv-static:1.2.13' + //工具类 + implementation 'com.blankj:utilcodex:1.31.0' + //沉浸状态栏 + implementation 'com.gitee.zackratos:UltimateBarX:0.8.0' // implementation 'cn.jzvd:jiaozivideoplayer:7.6.0' implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-core:1.0.15' implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-native:1.0.15' @@ -93,8 +126,9 @@ dependencies { // implementation 'com.scwang.smart:menu_refresh-footer-classics:2.0.1' implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8' implementation 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.4' - debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.3' + + debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.10' // implementation 'com.github.SheHuan:NiceImageView:1.0.5' - implementation project(path: ':JZVideo') - implementation project(path: ':niceimageview') + + } diff --git a/app/src/doc/tuixin.jks b/app/src/doc/tuixin.jks new file mode 100644 index 0000000000000000000000000000000000000000..d7ecbaddf51da17b510f17b9af9af2ce7f322b53 GIT binary patch literal 2064 zcmV+r2=Dj)?f&fm00062000310003133YC1c4cyNVQc^Z0ez?#GQ|J@1pzRE1pP1$ z1_~<%0R#am0uccL1pows1nIRBg-VAu4G2mo9ioLrNLQ`!IS_mND{EXtBN%CNSJ+@2 z`>_1cvWBy-VoZ((n+P%B#OJE%Y=3WD~dt@~uz*WP%tYX)}gG^6=p z{aeOdaZgbs>4s(ul(7)0%OcD05t)}f>qk?LtBXCgD5@7@VHfa5F;^iVyUd6Ebac88 z$ncuRJ$JO7mVnSOT#Fl_gFo`droaqSCXQdi9o)>G>0N2^Q7@`FgY@^EsHNykKn*jj zqryd=jya4Ze_8Kxk`lnZ68zVTTa)SYxB0MK@O~0=>Pm^~GY8U*=1XPu{P2Nt6|bYa zPvzl1k-NDkD?ciXg_7*fS6Smeb4({KMe2yf3TV0tF(9DnIyyQzD?DhT=S_`x=9J%2 zU1`QO@Ia@%SH3k4o3xaT7r>f+=l}@_akCVR&9c0o;m=ArUfyD$Ai#{!=ANt&8l>LT zzTwVu-nN7yEs%NWFK23hV|sxprm6_BIh*ESD^AHBWKN#V@xs^{G%YVt#sBj5n)DzW zQfw0~gxbS)aWlE?9fjX2O}O1wfo?JbW4Z(dUZ}MJQ?RY`!-s^tvLu9#9$V6fW^18K z&Kk>)Wbv!9BCktcCv%dt@N-rN{1kz%he-*ea4*680P@Uk;Dl234C!0k0xm^g9rv#f z<6RKe`j9Xic@y%v#*Eb^JYPw_KLUy7GS3?K5l3i!8EN!s&vnunPrYUbIF+04jOXwE zLXQO;vSda}r%&9`*8W>PmTo8vxnX0TXhtAvCA|?0`Csi5HX%rUF+A_r`{8GCpO@b$ z-r#Pf>&^b@h{^*ETF9xHB z2RPD6N0c0OP%d*Mj~VY000311z0XMFgXAK0>vLnX0jZz^ z0s#U71X-$Lh%gNX2`Yw2hW8Bt0Sg5HFcC2iFbxI+RRjYQ26T04cxi4h9v2NVF)=bR zF)%hTG&MI`7Y#HvF)}bUFg7qWH8)x?5it)i4F&^M1OpQWbaiQXX>Krr0U|IB1_>&L zNQUcrJJ#c{7RP%rt!#z_3S7m8@brz}-M}>LtZ? zVa$ySBBL7npvgdsllL<9;gnQ2j!P+Sm&oKCz_4-Ih)l9T?$ zSJ@IN#naMLb^Ld6-V-ZoT(s-oh^#x=y`eTZO5{U4f+313^ZCXJfld3q>nL!>-} z#`ms!cSDoHBFl@6nd~jpjN{x^%PUqp;U>~`0;x`C$g99h6hH;&%68z`bt>F6NjDCR zn@pV^k<)ojD`uwR{LcC_wq+lePv*8c?-Pl+!CnL1nZtfOSqMsQc=XaV(i|L2V0bHf z4g0LZye-^O<0|5X5qaiRKFdYU1RUHll76cR;pOIp1>|tHLR+XOf zy6a`M+GZgz4F(A+hDe6@4FLfQ1potr0RaGR>Q$QZ8e855tVvA0w)t^oUgG7=^(WcL zBd>j_W0L;^@i^ZH*Alu&#Ct-#8W<7nn!$TTGw!~^gH%jxD2HQJ^b42FR(Gt zrwgYa5nHN$hX2s~Bc|%f4?BQ$cs~2IDe`pxLWLE&3%(8Qu!^YV`7BjQH)Wb2S{eAP uOyB7;`6(54XIW_W-=cSmt%JsqFeQ?PhEIXqA`L;8^2DH{KIyb*MXVt{9j|o& literal 0 HcmV?d00001 diff --git a/app/src/doc/xueshibaoos.jks b/app/src/doc/xueshibaoos.jks deleted file mode 100644 index b94a626a1e59b41e0d2b0e1725c1d164b6a8f5ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2552 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 h=~IOHotm-=tG={6OY~?wV#1*=AWE diff --git a/app/src/main/aidl/com/uiui/sn/IGetInfoInterface.aidl b/app/src/main/aidl/com/uiui/sn/IGetInfoInterface.aidl new file mode 100644 index 0000000..912a7db --- /dev/null +++ b/app/src/main/aidl/com/uiui/sn/IGetInfoInterface.aidl @@ -0,0 +1,31 @@ +// IGetInfoInterface.aidl +package com.uiui.sn; + +// Declare any non-default types here with import statements + +interface IGetInfoInterface { + /** + * Demonstrates some basic types that you can use as parameters + * and return values in AIDL. + */ + void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, + double aDouble, String aString); + + //获取sn + String getSerial(); + //获取用户信息 + String getUserInfo(); + //获取隐藏APP + List getHideAPP(); + //获取禁止打开的APP + List getForbidAPP(); + + //获取app设置 + String getAppTimeControl(); + //获取整机设置 + String getSnTimeControl(); + //获取系统设置 + String getSetting(); + //获取定位结果 + String getMapResult(); +} diff --git a/app/src/main/assets/aria_config.xml b/app/src/main/assets/aria_config.xml new file mode 100644 index 0000000..881107f --- /dev/null +++ b/app/src/main/assets/aria_config.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/uiui/videoplayer/activity/ActivityTikTok.java b/app/src/main/java/com/uiui/videoplayer/activity/ActivityTikTok.java index a2961a8..050ccd5 100644 --- a/app/src/main/java/com/uiui/videoplayer/activity/ActivityTikTok.java +++ b/app/src/main/java/com/uiui/videoplayer/activity/ActivityTikTok.java @@ -20,6 +20,7 @@ import com.uiui.videoplayer.CustomJzvd.JzvdStdAssert; import com.uiui.videoplayer.R; import com.uiui.videoplayer.adapter.TikTokRecyclerViewAdapter; import com.uiui.videoplayer.base.ViewPagerLayoutManager; +import com.uiui.videoplayer.bean.LocalVideoInfo; import com.uiui.videoplayer.listener.OnViewPagerListener; import com.uiui.videoplayer.utils.SPUtils; import com.uiui.videoplayer.utils.ToastUtil; @@ -37,7 +38,7 @@ public class ActivityTikTok extends AppCompatActivity { private ViewPagerLayoutManager mViewPagerLayoutManager; private int mCurrentPosition = -1; private int position = 0; - private List videoPath = new ArrayList<>(); + private List videoPath = new ArrayList<>(); private int onGlobalLayout = -1; private int oldOrientation = 0; @@ -56,7 +57,7 @@ public class ActivityTikTok extends AppCompatActivity { Intent intent = getIntent(); if (null != intent) { position = intent.getIntExtra("position", 0); - videoPath = intent.getStringArrayListExtra("list"); + videoPath = intent.getParcelableArrayListExtra("list"); } rvTiktok = findViewById(R.id.rv_tiktok); mAdapter = new TikTokRecyclerViewAdapter(this, videoPath); @@ -200,6 +201,7 @@ public class ActivityTikTok extends AppCompatActivity { case android.R.id.home: finish(); break; + default: } return super.onOptionsItemSelected(item); } diff --git a/app/src/main/java/com/uiui/videoplayer/activity/main/MainAContact.java b/app/src/main/java/com/uiui/videoplayer/activity/main/MainAContact.java new file mode 100644 index 0000000..d750c73 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/activity/main/MainAContact.java @@ -0,0 +1,19 @@ +package com.uiui.videoplayer.activity.main; + +import com.uiui.videoplayer.base.BasePresenter; +import com.uiui.videoplayer.base.BaseView; +import com.uiui.videoplayer.bean.LocalVideoInfo; + +import java.util.ArrayList; + +public class MainAContact { + interface Presenter extends BasePresenter { + /*获取视频*/ + void getHomeVideo(); + } + + public interface MainView extends BaseView { + void setHomeVideo(ArrayList video); + void getHomeVideoFinish(); + } +} diff --git a/app/src/main/java/com/uiui/videoplayer/activity/main/MainAPresenter.java b/app/src/main/java/com/uiui/videoplayer/activity/main/MainAPresenter.java new file mode 100644 index 0000000..4509559 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/activity/main/MainAPresenter.java @@ -0,0 +1,63 @@ +package com.uiui.videoplayer.activity.main; + +import android.content.Context; + +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiui.videoplayer.bean.LocalVideoInfo; +import com.uiui.videoplayer.disklrucache.CacheHelper; +import com.uiui.videoplayer.network.NetInterfaceManager; + +import java.util.ArrayList; + +import io.reactivex.rxjava3.subjects.BehaviorSubject; + +/** + * @author jgy02 + */ +public class MainAPresenter implements MainAContact.Presenter { + private static final String TAG = MainAPresenter.class.getSimpleName(); + + private MainAContact.MainView mView; + private Context mContext; + private CacheHelper mCacheHelper; + + public MainAPresenter(Context context) { + this.mContext = context; + this.mCacheHelper = new CacheHelper(context); + } + + private BehaviorSubject lifecycle; + + public void setLifecycle(BehaviorSubject lifecycle) { + this.lifecycle = lifecycle; + } + + public BehaviorSubject getLifecycle() { + return lifecycle; + } + + @Override + public void attachView(MainAContact.MainView view) { + this.mView = view; + } + + @Override + public void detachView() { + this.mView = null; + } + + @Override + public void getHomeVideo() { + NetInterfaceManager.getInstance().getHomeVideo(true, lifecycle, new NetInterfaceManager.onVideoPathCallback() { + @Override + public void setVideoList(ArrayList videoList) { + mView.setHomeVideo(videoList); + } + + @Override + public void onComplete() { + mView.getHomeVideoFinish(); + } + }); + } +} diff --git a/app/src/main/java/com/uiui/videoplayer/activity/MainActivity.java b/app/src/main/java/com/uiui/videoplayer/activity/main/MainActivity.java similarity index 79% rename from app/src/main/java/com/uiui/videoplayer/activity/MainActivity.java rename to app/src/main/java/com/uiui/videoplayer/activity/main/MainActivity.java index 1960105..e1b4f20 100644 --- a/app/src/main/java/com/uiui/videoplayer/activity/MainActivity.java +++ b/app/src/main/java/com/uiui/videoplayer/activity/main/MainActivity.java @@ -1,4 +1,4 @@ -package com.uiui.videoplayer.activity; +package com.uiui.videoplayer.activity.main; import android.Manifest; import android.content.Intent; @@ -9,7 +9,6 @@ import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; import android.os.Build; -import android.os.Bundle; import android.os.Environment; import android.text.SpannableString; import android.text.Spanned; @@ -22,7 +21,6 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.DefaultItemAnimator; @@ -30,61 +28,61 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.SimpleItemAnimator; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import com.arialyy.annotations.Download; +import com.arialyy.aria.core.Aria; +import com.arialyy.aria.core.task.DownloadTask; +import com.google.gson.JsonObject; import com.uiui.videoplayer.R; import com.uiui.videoplayer.adapter.VideoAdapter; +import com.uiui.videoplayer.base.BaseLightActivity; import com.uiui.videoplayer.base.CustomDialog; import com.uiui.videoplayer.base.RecycleGridLayoutManager; import com.uiui.videoplayer.base.SpacesItemDecoration; +import com.uiui.videoplayer.bean.LocalVideoInfo; +import com.uiui.videoplayer.gson.GsonUtils; import com.uiui.videoplayer.utils.SPUtils; import com.uiui.videoplayer.utils.ToastUtil; +import com.uiui.videoplayer.utils.VideoUtils; import java.io.File; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -public class MainActivity extends AppCompatActivity { +import butterknife.ButterKnife; + +public class MainActivity extends BaseLightActivity implements MainAContact.MainView { + private static final int REQUEST_PERMISSION_CODE = 200; - String[] permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.WRITE_EXTERNAL_STORAGE}; + private static final String TAG = MainActivity.class.getSimpleName(); + + private MainAPresenter mPresenter; + + + String[] permissions = new String[]{ + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE + }; private RecyclerView recyclerView; private TextView tips, tv_scan; private SwipeRefreshLayout refreshLayout; private VideoAdapter adapter; + private List paths = new ArrayList<>(); private RecycleGridLayoutManager mManager; @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); + public void initView() { + ButterKnife.bind(this); + mPresenter = new MainAPresenter(this); + mPresenter.setLifecycle(lifecycleSubject); + mPresenter.attachView(this); + + Aria.download(this).register(); + checkSelfPermission(); - initView(); - - } - - @Override - protected void onResume() { - super.onResume(); - } - - @Override - public void onConfigurationChanged(@NonNull Configuration newConfig) { - super.onConfigurationChanged(newConfig); - Configuration config = getResources().getConfiguration(); - if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) { - mManager = new RecycleGridLayoutManager(MainActivity.this, 2); - recyclerView.setLayoutManager(mManager); - } - if (config.orientation == Configuration.ORIENTATION_PORTRAIT) { - mManager = new RecycleGridLayoutManager(MainActivity.this, 3); - recyclerView.setLayoutManager(mManager); - } - } - - private void initView() { initActionBar(); tips = findViewById(R.id.tips); tv_scan = findViewById(R.id.tv_scan); @@ -92,8 +90,7 @@ public class MainActivity extends AppCompatActivity { refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { - ScanTask scanTask = new ScanTask(); - scanTask.execute(); + mPresenter.getHomeVideo(); } }); refreshLayout.setRefreshing(true); @@ -120,10 +117,39 @@ public class MainActivity extends AppCompatActivity { recyclerView.setAdapter(adapter); } + @Override + public void initData() { + mPresenter.getHomeVideo(); + } + + @Override + public int getLayoutId() { + return R.layout.activity_main; + } + + @Override + protected void onResume() { + super.onResume(); + } + + @Override + public void onConfigurationChanged(@NonNull Configuration newConfig) { + super.onConfigurationChanged(newConfig); + Configuration config = getResources().getConfiguration(); + if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) { + mManager = new RecycleGridLayoutManager(MainActivity.this, 2); + recyclerView.setLayoutManager(mManager); + } + if (config.orientation == Configuration.ORIENTATION_PORTRAIT) { + mManager = new RecycleGridLayoutManager(MainActivity.this, 3); + recyclerView.setLayoutManager(mManager); + } + } + private void showDialog(String path, int position) { CustomDialog dialog = new CustomDialog(MainActivity.this); dialog.setTitle("删除文件") - .setMessage("确定要删除文件 " + getFileName(path) + "吗") + .setMessage("确定要删除文件 " + VideoUtils.getFileNameWithoutExtension(path) + "吗") .setPositive("确定") .setNegtive("取消") .setOnClickBottomListener(new CustomDialog.OnClickBottomListener() { @@ -147,11 +173,6 @@ public class MainActivity extends AppCompatActivity { dialog.show(); } - private String getFileName(String path) { - String name = path.substring(path.lastIndexOf("/") + 1, path.lastIndexOf(".")); - Log.e("getFileName", "Name: " + name); - return name; - } private void initActionBar() { setToolbarCustomTheme(); @@ -179,7 +200,6 @@ public class MainActivity extends AppCompatActivity { } } - public void traverseFolder(String path) { int fileNum = 0, folderNum = 0; File file = new File(path); @@ -217,18 +237,6 @@ public class MainActivity extends AppCompatActivity { Log.e("traverseFolder1", "文件夹共有:" + folderNum + ",文件共有:" + fileNum); } - private static final String[] extension = new String[]{ - ".3gp", ".avi", ".flv", ".mkv", ".mov", ".mp4", ".webm" - }; - - private static boolean isVideoFormat(String filePath) { - for (String s : extension) { - if (filePath.endsWith(s)) { - return true; - } - } - return false; - } public class ScanTask extends AsyncTask> { @@ -248,7 +256,7 @@ public class MainActivity extends AppCompatActivity { if (file2.isDirectory()) { list.add(file2); } else { - if (isVideoFormat(file2.getAbsolutePath())) { + if (VideoUtils.isVideoFormat(file2.getAbsolutePath())) { fileList.add(file2.getAbsolutePath()); } } @@ -257,7 +265,7 @@ public class MainActivity extends AppCompatActivity { while (!list.isEmpty()) { temp_file = list.removeFirst(); files = temp_file.listFiles(); - if (files == null){ + if (files == null) { continue; } for (File file2 : files) { @@ -265,7 +273,7 @@ public class MainActivity extends AppCompatActivity { if (file2.isDirectory()) { list.add(file2); } else { - if (isVideoFormat(file2.getAbsolutePath())) { + if (VideoUtils.isVideoFormat(file2.getAbsolutePath())) { fileList.add(file2.getAbsolutePath()); } } @@ -284,7 +292,7 @@ public class MainActivity extends AppCompatActivity { paths.add(values[0]); tv_scan.setVisibility(View.VISIBLE); tv_scan.setText("正在扫描:" + values[0]); - adapter.setData(paths); +// adapter.setData(paths); } @Override @@ -297,7 +305,7 @@ public class MainActivity extends AppCompatActivity { } else { tips.setVisibility(View.GONE); recyclerView.setVisibility(View.VISIBLE); - adapter.setData(strings); +// adapter.setData(strings); } tv_scan.setVisibility(View.GONE); refreshLayout.setRefreshing(false); @@ -311,8 +319,7 @@ public class MainActivity extends AppCompatActivity { if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) { mPermissionList.add(s); } else { - ScanTask scanTask = new ScanTask(); - scanTask.execute(); +// mPresenter.getHomeVideo(); } } if (mPermissionList.size() > 0) {//有权限没有通过,需要申请 @@ -326,8 +333,7 @@ public class MainActivity extends AppCompatActivity { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_PERMISSION_CODE) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { - ScanTask scanTask = new ScanTask(); - scanTask.execute(); + mPresenter.getHomeVideo(); } else if (grantResults[0] == PackageManager.PERMISSION_DENIED) { if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE)) { ToastUtil.show("需要存储空间权限才能正常使用软件"); @@ -356,7 +362,6 @@ public class MainActivity extends AppCompatActivity { return super.onCreateOptionsMenu(menu); } - @Override public boolean onOptionsItemSelected(MenuItem item) { //返回按钮点击事件 @@ -374,8 +379,7 @@ public class MainActivity extends AppCompatActivity { break; case R.id.refresh: refreshLayout.setRefreshing(true); - ScanTask scanTask = new ScanTask(); - scanTask.execute(); + mPresenter.getHomeVideo(); break; case R.id.single_loop: if (null != single_loop) { @@ -386,7 +390,7 @@ public class MainActivity extends AppCompatActivity { single_loop.setIcon(R.drawable.menu_selected); } else { SPUtils.put(MainActivity.this, "single_loop", 0); - single_loop.setIcon(null); + single_loop.setIcon(R.drawable.menu_transparent); } } break; @@ -399,7 +403,7 @@ public class MainActivity extends AppCompatActivity { loop.setIcon(R.drawable.menu_selected); } else { SPUtils.put(MainActivity.this, "loop", 0); - loop.setIcon(null); + loop.setIcon(R.drawable.menu_transparent); } } break; @@ -419,7 +423,7 @@ public class MainActivity extends AppCompatActivity { if (null != single_loop) { int singleLoop = (int) SPUtils.get(MainActivity.this, "single_loop", 0); if (singleLoop == 0) { - single_loop.setIcon(null); + single_loop.setIcon(R.drawable.menu_transparent); } else { single_loop.setIcon(R.drawable.menu_selected); } @@ -427,10 +431,65 @@ public class MainActivity extends AppCompatActivity { if (null != loop) { int singleLoop = (int) SPUtils.get(MainActivity.this, "loop", 0); if (singleLoop == 0) { - loop.setIcon(null); + loop.setIcon(R.drawable.menu_transparent); } else { loop.setIcon(R.drawable.menu_selected); } } } + + @Override + public void setHomeVideo(ArrayList video) { + if (video.size() == 0) { + tips.setVisibility(View.VISIBLE); + recyclerView.setVisibility(View.GONE); + } else { + tips.setVisibility(View.GONE); + recyclerView.setVisibility(View.VISIBLE); + adapter.setData(video); + } + tv_scan.setVisibility(View.GONE); + refreshLayout.setRefreshing(false); + } + + @Override + public void getHomeVideoFinish() { + refreshLayout.setRefreshing(false); + } + + + //在这里处理任务执行中的状态,如进度进度条的刷新 + @Download.onTaskRunning + void running(DownloadTask task) { + Log.e("aria running", "正在下载:" + task.getState() + "-" + task.getPercent() + "--" + task.getExtendField()); + try { + String jsonString = task.getExtendField(); + JsonObject jsonObject = GsonUtils.getJsonObject(jsonString); + } catch (Exception e) { + Log.e("running", "running: " + e.getMessage()); + } + } + + @Download.onTaskComplete + void taskComplete(DownloadTask task) { + //在这里处理任务完成的状态 + Log.e("taskComplete", task.getExtendField()); +// Aria.download(this).load(task.getDownloadEntity().getId()).cancel(); + mPresenter.getHomeVideo(); + } + + @Download.onTaskFail + void taskFail(DownloadTask task, Exception e) { + Aria.download(this).resumeAllTask(); + final String filepath = task.getFilePath(); + final String packageName = task.getExtendField(); + try { + Aria.download(this).load(task.getDownloadEntity().getId()).cancel(true); + Log.e(TAG, "taskFail: " + "Exception: " + e.getLocalizedMessage()); + } catch (Exception ex) { + + } + Log.e(TAG, "taskFail: " + packageName + "filepath: " + filepath); + mPresenter.getHomeVideo(); + } } diff --git a/app/src/main/java/com/uiui/videoplayer/adapter/TikTokRecyclerViewAdapter.java b/app/src/main/java/com/uiui/videoplayer/adapter/TikTokRecyclerViewAdapter.java index 9be9f96..495238f 100644 --- a/app/src/main/java/com/uiui/videoplayer/adapter/TikTokRecyclerViewAdapter.java +++ b/app/src/main/java/com/uiui/videoplayer/adapter/TikTokRecyclerViewAdapter.java @@ -3,40 +3,47 @@ package com.uiui.videoplayer.adapter; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; +import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; -import android.widget.Toast; import androidx.recyclerview.widget.RecyclerView; +import com.arialyy.annotations.Download; +import com.arialyy.aria.core.Aria; +import com.arialyy.aria.core.task.DownloadTask; import com.bumptech.glide.Glide; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.shehuan.niv.NiceImageView; import com.uiui.videoplayer.CustomJzvd.JzvdStdAssert; import com.uiui.videoplayer.R; -import com.uiui.videoplayer.activity.MainActivity; +import com.uiui.videoplayer.bean.LocalVideoInfo; +import com.uiui.videoplayer.gson.GsonUtils; +import com.uiui.videoplayer.utils.JGYUtils; import com.uiui.videoplayer.utils.SPUtils; -import com.uiui.videoplayer.utils.Utils; - +import com.uiui.videoplayer.utils.VideoUtils; +import java.lang.reflect.Type; import java.util.List; import cn.jzvd.JZDataSource; import cn.jzvd.Jzvd; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.ObservableOnSubscribe; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; import wseemann.media.FFmpegMediaMetadataRetriever; public class TikTokRecyclerViewAdapter extends RecyclerView.Adapter { public static final String TAG = "AdapterTikTokRecyclerView"; - private List videoPath; + private List videoPath; private Context context; private onVideoCompletListener completListener; private onOrientationChangeListener onOrientationChangeListener; @@ -46,7 +53,7 @@ public class TikTokRecyclerViewAdapter extends RecyclerView.Adapter list) { + public TikTokRecyclerViewAdapter(Context context, List list) { this.context = context; this.videoPath = list; } @@ -80,6 +87,7 @@ public class TikTokRecyclerViewAdapter extends RecyclerView.Adapter) emitter -> { - FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever(); - mmr.setDataSource(path); - Bitmap bitmap = mmr.getFrameAtTime();//获得视频第一帧的Bitmap对象. - mmr.release(); - emitter.onNext(bitmap); - }).subscribeOn(Schedulers.newThread()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(Bitmap bitmap) { - try { - holder.jzvdStdAssert.posterImageView.setScaleType(ImageView.ScaleType.FIT_CENTER); - Glide.with(holder.jzvdStdAssert.posterImageView).load(bitmap).into(holder.jzvdStdAssert.posterImageView); - } catch (Exception e) { + LocalVideoInfo localVideoInfo = videoPath.get(position); + String localPath = localVideoInfo.getLocalPath(); + if (TextUtils.isEmpty(localPath)) { + holder.jzvdStdAssert.setVisibility(View.GONE); + holder.ivStatus.setVisibility(View.VISIBLE); + holder.iv_cover.setVisibility(View.VISIBLE); + String url = localVideoInfo.getFile(); + String path = JGYUtils.getInstance().getUrlLocalPath(url); + Log.e(TAG, "onBindViewHolder: getUrlLocalPath: " + path); + JZDataSource jzDataSource = new JZDataSource(path, VideoUtils.getFileNameWithoutExtension(path)); + int singleLoop = (int) SPUtils.get(context, "single_loop", 0); + jzDataSource.looping = (singleLoop == 1); + holder.jzvdStdAssert.setUp(jzDataSource, Jzvd.SCREEN_NORMAL); + Glide.with(holder.iv_cover).load(url).error(R.mipmap.ic_launcher).into(holder.iv_cover); + holder.ivStatus.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + JGYUtils.getInstance().ariaDownload(url, GsonUtils.getJsonObject(GsonUtils.toJSONString(localVideoInfo))); + } + }); + } else { + holder.jzvdStdAssert.setVisibility(View.VISIBLE); + holder.ivStatus.setVisibility(View.GONE); + holder.iv_cover.setVisibility(View.GONE); + JZDataSource jzDataSource = new JZDataSource(localPath, VideoUtils.getFileNameWithoutExtension(localPath)); + int singleLoop = (int) SPUtils.get(context, "single_loop", 0); + jzDataSource.looping = (singleLoop == 1); + holder.jzvdStdAssert.setUp(jzDataSource, Jzvd.SCREEN_NORMAL); + Observable.create((ObservableOnSubscribe) emitter -> { + FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever(); + mmr.setDataSource(localPath); + Bitmap bitmap = mmr.getFrameAtTime();//获得视频第一帧的Bitmap对象. + mmr.release(); + emitter.onNext(bitmap); + }).subscribeOn(Schedulers.newThread()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { } - } - @Override - public void onError(Throwable e) { + @Override + public void onNext(Bitmap bitmap) { + try { + holder.jzvdStdAssert.posterImageView.setScaleType(ImageView.ScaleType.FIT_CENTER); + Glide.with(holder.jzvdStdAssert.posterImageView).load(bitmap).into(holder.jzvdStdAssert.posterImageView); + } catch (Exception e) { - } + } + } - @Override - public void onComplete() { + @Override + public void onError(Throwable e) { - } - }); + } + + @Override + public void onComplete() { + + } + }); + } holder.jzvdStdAssert.setOnCompletionListener(() -> { completListener.onVideoComplet(); }); @@ -148,17 +180,44 @@ public class TikTokRecyclerViewAdapter extends RecyclerView.Adapter() { + }.getType(); + try { + LocalVideoInfo localVideoInfo = gson.fromJson(jsonString, type); + for (int i = 0; i < videoPath.size(); i++) { + if (localVideoInfo.getFile().equals(videoPath.get(i).getFile())) { + videoPath.get(i).setLocalPath(task.getFilePath()); + this.notifyItemChanged(i); + } + } + } catch (Exception e) { + Log.e(TAG, "taskComplete: " + e.getMessage()); + } + + + } + } diff --git a/app/src/main/java/com/uiui/videoplayer/adapter/VideoAdapter.java b/app/src/main/java/com/uiui/videoplayer/adapter/VideoAdapter.java index b5f833b..0a19f72 100644 --- a/app/src/main/java/com/uiui/videoplayer/adapter/VideoAdapter.java +++ b/app/src/main/java/com/uiui/videoplayer/adapter/VideoAdapter.java @@ -1,21 +1,18 @@ package com.uiui.videoplayer.adapter; import android.app.Activity; -import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; -import android.media.Image; import android.media.MediaMetadataRetriever; import android.os.AsyncTask; import android.os.Build; +import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; import android.widget.TextView; -import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -25,52 +22,62 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.transition.Transition; +import com.google.gson.Gson; +import com.google.gson.JsonParser; import com.shehuan.niv.NiceImageView; import com.uiui.videoplayer.R; import com.uiui.videoplayer.activity.ActivityTikTok; +import com.uiui.videoplayer.bean.LocalVideoInfo; +import com.uiui.videoplayer.gson.GsonUtils; +import com.uiui.videoplayer.utils.JGYUtils; import com.uiui.videoplayer.utils.ToastUtil; import com.uiui.videoplayer.utils.Utils; +import com.uiui.videoplayer.utils.VideoUtils; import java.io.File; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.ObservableEmitter; +import io.reactivex.rxjava3.core.ObservableOnSubscribe; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; import wseemann.media.FFmpegMediaMetadataRetriever; public class VideoAdapter extends RecyclerView.Adapter { - private Context mContext; - private List videoPath; + private static final String TAG = VideoAdapter.class.getSimpleName(); + private Activity mContext; + private ArrayList mLocalVideoInfos; private onItemLongClickListener onItemLongClickListener; public VideoAdapter() { } - public VideoAdapter(Context context) { + public VideoAdapter(Activity context) { this.mContext = context; } - public VideoAdapter(Context context, List path) { + public VideoAdapter(Activity context, ArrayList path) { this.mContext = context; - this.videoPath = path; + this.mLocalVideoInfos = path; } private static class VideoResult { long time; Bitmap frame; + + @NonNull + @Override + public String toString() { + return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString(); + } } - public void setData(List paths) { - this.videoPath = paths; + public void setData(ArrayList paths) { + this.mLocalVideoInfos = paths; notifyDataSetChanged(); } @@ -87,71 +94,127 @@ public class VideoAdapter extends RecyclerView.Adapter @Override public void onBindViewHolder(@NonNull final VideoHolder holder, final int position) { - final String path = videoPath.get(position); - File file = new File(path); - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter emitter) throws Exception { - FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever(); - mmr.setDataSource(path); - String duration = mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_DURATION); - Bitmap bitmap = mmr.getFrameAtTime();//获得视频第一帧的Bitmap对象. - Long time = Long.valueOf(duration); - - mmr.release(); - VideoResult result = new VideoResult(); - result.frame = bitmap; - result.time = time; - emitter.onNext(result); + LocalVideoInfo localVideoInfo = mLocalVideoInfos.get(position); + final String localPath = localVideoInfo.getLocalPath(); + String url = localVideoInfo.getFile(); + Log.e(TAG, "onBindViewHolder: " + localPath); + if (TextUtils.isEmpty(localPath)) { + holder.iv_status.setVisibility(View.VISIBLE); + if (!TextUtils.isEmpty(url)) { + Glide.with(mContext).load(url).error(R.mipmap.ic_launcher).into(holder.video_image); + String fileName = localVideoInfo.getFile_name(); + if (TextUtils.isEmpty(fileName)){ + holder.title.setText(VideoUtils.getFileNameWithoutExtension(url)); + }else { + holder.title.setText(fileName); + } + holder.duration.setText(Utils.TimeFormat(localVideoInfo.getDuration() * 1000)); } - }).subscribeOn(Schedulers.newThread()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { + } else { + holder.title.setText(VideoUtils.getFileNameWithoutExtension(localPath)); + File file = new File(localPath); + if (file.exists()) { + holder.iv_status.setVisibility(View.GONE); + Observable.create(new ObservableOnSubscribe() { @Override - public void onSubscribe(Disposable d) { + public void subscribe(ObservableEmitter emitter) throws Exception { + FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever(); + mmr.setDataSource(localPath); + String duration = mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_DURATION); + Bitmap bitmap = mmr.getFrameAtTime();//获得视频第一帧的Bitmap对象. + Long time = Long.valueOf(duration); + mmr.release(); + VideoResult result = new VideoResult(); + result.frame = bitmap; + result.time = time; + emitter.onNext(result); } + }).subscribeOn(Schedulers.newThread()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + Log.e("VideoResult", "onSubscribe: "); + } + + @Override + public void onNext(VideoResult result) { + Log.e("VideoResult", "onNext: " + result); + try { + Glide.with(holder.video_image).load(result.frame).skipMemoryCache(false).into(new SimpleTarget() { + @Override + public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { + holder.video_image.setImageDrawable(resource); + } + }); + holder.duration.setText(Utils.TimeFormat(result.time)); + } catch (Exception e) { - @Override - public void onNext(VideoResult result) { - try { - Glide.with(holder.video_image).load(result.frame).skipMemoryCache(false).into(new SimpleTarget() { - @Override - public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { - holder.video_image.setImageDrawable(resource); } - }); - holder.duration.setText(Utils.TimeFormat(result.time)); - } catch (Exception e) { + } - } + @Override + public void onError(Throwable e) { + Log.e("VideoResult", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("VideoResult", "onComplete: "); + } + }); + } else { + + } + } + + holder.iv_status.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (TextUtils.isEmpty(localPath)) { + if (JGYUtils.getInstance().fileExists(url)) { + Intent intent = new Intent(mContext, ActivityTikTok.class); + intent.putExtra("position", position); + intent.putParcelableArrayListExtra("list", mLocalVideoInfos); + mContext.startActivity(intent); + } else { + JGYUtils.getInstance().ariaDownload(url, GsonUtils.getJsonObject(GsonUtils.toJSONString(localVideoInfo))); + ToastUtil.show(String.format( mContext.getString(R.string.download_now), VideoUtils.getFileNameWithoutExtension(url))); } - - @Override - public void onError(Throwable e) { - - } - - @Override - public void onComplete() { - - } - }); - - holder.title.setText(getFileName(path)); + } else { + Intent intent = new Intent(mContext, ActivityTikTok.class); + intent.putExtra("position", position); + intent.putParcelableArrayListExtra("list", mLocalVideoInfos); + mContext.startActivity(intent); + } + } + }); Log.e("title:", holder.title.getText().toString()); // } holder.root.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - Intent intent = new Intent(mContext, ActivityTikTok.class); - intent.putExtra("position", position); - intent.putStringArrayListExtra("list", (ArrayList) videoPath); - mContext.startActivity(intent); + if (TextUtils.isEmpty(localPath)) { + if (JGYUtils.getInstance().fileExists(url)) { + Intent intent = new Intent(mContext, ActivityTikTok.class); + intent.putExtra("position", position); + intent.putParcelableArrayListExtra("list", mLocalVideoInfos); + mContext.startActivity(intent); + } else { + JGYUtils.getInstance().ariaDownload(url, GsonUtils.getJsonObject(GsonUtils.toJSONString(localVideoInfo))); + ToastUtil.show(String.format( mContext.getString(R.string.download_now), VideoUtils.getFileNameWithoutExtension(url))); + } + } else { + Intent intent = new Intent(mContext, ActivityTikTok.class); + intent.putExtra("position", position); + intent.putParcelableArrayListExtra("list", mLocalVideoInfos); + mContext.startActivity(intent); + } } }); holder.root.setOnLongClickListener(view -> { - onItemLongClickListener.onItemLongClick(path, position); + onItemLongClickListener.onItemLongClick(localPath, position); return false; }); } @@ -161,29 +224,23 @@ public class VideoAdapter extends RecyclerView.Adapter } public void removeItem(int position) { - if (null != videoPath.get(position)) { - videoPath.remove(position); + if (null != mLocalVideoInfos.get(position)) { + mLocalVideoInfos.remove(position); } notifyDataSetChanged(); } @Override public int getItemCount() { - return videoPath == null ? 0 : videoPath.size(); + return mLocalVideoInfos == null ? 0 : mLocalVideoInfos.size(); } - private String getFileName(String path) { - String name = path.substring(path.lastIndexOf("/") + 1); - Log.e("getFileName", "Name: " + name); - return name; - } @Override public int getItemViewType(int position) { return position; } - public static boolean isDestroy(Activity mActivity) { if (mActivity == null || mActivity.isFinishing() || (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && mActivity.isDestroyed())) { return true; @@ -193,13 +250,14 @@ public class VideoAdapter extends RecyclerView.Adapter } static class VideoHolder extends RecyclerView.ViewHolder { - NiceImageView video_image; + NiceImageView video_image, iv_status; TextView title, duration; ConstraintLayout root; public VideoHolder(@NonNull View itemView) { super(itemView); video_image = itemView.findViewById(R.id.video_image); + iv_status = itemView.findViewById(R.id.iv_status); title = itemView.findViewById(R.id.title_text); duration = itemView.findViewById(R.id.duration); root = itemView.findViewById(R.id.root); diff --git a/app/src/main/java/com/uiui/videoplayer/base/BaseActivity.java b/app/src/main/java/com/uiui/videoplayer/base/BaseActivity.java new file mode 100644 index 0000000..105fb99 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/base/BaseActivity.java @@ -0,0 +1,134 @@ +package com.uiui.videoplayer.base; + +import android.app.ActivityManager; +import android.os.Build; +import android.os.Bundle; + +import androidx.annotation.CallSuper; +import androidx.annotation.CheckResult; +import androidx.annotation.ContentView; +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import com.trello.rxlifecycle4.LifecycleProvider; +import com.trello.rxlifecycle4.LifecycleTransformer; +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.trello.rxlifecycle4.android.RxLifecycleAndroid; +import com.uiui.videoplayer.R; +import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; + +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.subjects.BehaviorSubject; + + +public abstract class BaseActivity extends AppCompatActivity implements LifecycleProvider { + public final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); +// StatusBarUtil.init(this); + UltimateBarX.statusBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); + UltimateBarX.navigationBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); + setContentView(this.getLayoutId()); + initView(); + initData(); + //最近任务和应用图标不一样 +// if (Build.VERSION.SDK_INT > 27) { +// ActivityManager.TaskDescription description = new ActivityManager.TaskDescription(getString(R.string.app_name), R.mipmap.ic_launcher, getColor(R.color.colorPrimary)); +// this.setTaskDescription(description); +// } + } + + /** + * 设置布局 + */ + public abstract int getLayoutId(); + + /** + * 初始化视图 + */ + public abstract void initView(); + + + /** + * 初始化数据 + */ + public abstract void initData(); + + public BaseActivity() { + super(); + } + + @ContentView + public BaseActivity(@LayoutRes int contentLayoutId) { + super(contentLayoutId); + } + + @Override + @NonNull + @CheckResult + public final Observable lifecycle() { + return lifecycleSubject.hide(); + } + + @Override + @NonNull + @CheckResult + public final LifecycleTransformer bindUntilEvent(@NonNull ActivityEvent event) { + return RxLifecycle.bindUntilEvent(lifecycleSubject, event); + } + + @Override + @NonNull + @CheckResult + public final LifecycleTransformer bindToLifecycle() { + return RxLifecycleAndroid.bindActivity(lifecycleSubject); + } + + @Override + @CallSuper + protected void onStart() { + super.onStart(); + lifecycleSubject.onNext(ActivityEvent.START); + } + + @Override + @CallSuper + protected void onResume() { + super.onResume(); + lifecycleSubject.onNext(ActivityEvent.RESUME); + } + + @Override + @CallSuper + protected void onPause() { + lifecycleSubject.onNext(ActivityEvent.PAUSE); + super.onPause(); + } + + @Override + @CallSuper + protected void onStop() { + lifecycleSubject.onNext(ActivityEvent.STOP); + super.onStop(); + } + + @Override + @CallSuper + protected void onDestroy() { + lifecycleSubject.onNext(ActivityEvent.DESTROY); + super.onDestroy(); + } +} diff --git a/app/src/main/java/com/uiui/videoplayer/base/BaseApplication.java b/app/src/main/java/com/uiui/videoplayer/base/BaseApplication.java new file mode 100644 index 0000000..21f1b37 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/base/BaseApplication.java @@ -0,0 +1,31 @@ +package com.uiui.videoplayer.base; + +import android.app.Application; +import android.util.Log; + +import com.arialyy.aria.core.Aria; +import com.tencent.mmkv.MMKV; +import com.uiui.videoplayer.manager.ConnectManager; +import com.uiui.videoplayer.manager.RemoteManager; +import com.uiui.videoplayer.network.NetInterfaceManager; +import com.uiui.videoplayer.utils.JGYUtils; +import com.uiui.videoplayer.utils.ToastUtil; + +public class BaseApplication extends Application { + private static final String TAG = BaseApplication.class.getSimpleName(); + + @Override + public void onCreate() { + super.onCreate(); + + String rootDir = MMKV.initialize(this); + Log.i(TAG, "mmkv root: " + rootDir); + JGYUtils.init(this); + Aria.init(this); + ConnectManager.init(this); + RemoteManager.init(this); + ToastUtil.init(this); + NetInterfaceManager.init(this); + + } +} diff --git a/app/src/main/java/com/uiui/videoplayer/base/BaseLightActivity.java b/app/src/main/java/com/uiui/videoplayer/base/BaseLightActivity.java new file mode 100644 index 0000000..bc13a53 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/base/BaseLightActivity.java @@ -0,0 +1,129 @@ +package com.uiui.videoplayer.base; + +import android.os.Bundle; + +import androidx.annotation.CallSuper; +import androidx.annotation.CheckResult; +import androidx.annotation.ContentView; +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import com.trello.rxlifecycle4.LifecycleProvider; +import com.trello.rxlifecycle4.LifecycleTransformer; +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.trello.rxlifecycle4.android.RxLifecycleAndroid; +import com.uiui.videoplayer.R; +import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; + +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.subjects.BehaviorSubject; + + +public abstract class BaseLightActivity extends AppCompatActivity implements LifecycleProvider { + public final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); + + public BaseLightActivity() { + super(); + } + + @ContentView + public BaseLightActivity(@LayoutRes int contentLayoutId) { + super(contentLayoutId); + } + + @Override + @NonNull + @CheckResult + public final Observable lifecycle() { + return lifecycleSubject.hide(); + } + + @Override + @NonNull + @CheckResult + public final LifecycleTransformer bindUntilEvent(@NonNull ActivityEvent event) { + return RxLifecycle.bindUntilEvent(lifecycleSubject, event); + } + + @Override + @NonNull + @CheckResult + public final LifecycleTransformer bindToLifecycle() { + return RxLifecycleAndroid.bindActivity(lifecycleSubject); + } + + @Override + @CallSuper + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + lifecycleSubject.onNext(ActivityEvent.CREATE); +// StatusBarUtil.init(this); + UltimateBarX.statusBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); + UltimateBarX.navigationBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); + setContentView(this.getLayoutId()); + initView(); + initData(); + } + + /** + * 设置布局 + */ + public abstract int getLayoutId(); + + /** + * 初始化视图 + */ + public abstract void initView(); + + + /** + * 初始化数据 + */ + public abstract void initData(); + + @Override + @CallSuper + protected void onStart() { + super.onStart(); + lifecycleSubject.onNext(ActivityEvent.START); + } + + @Override + @CallSuper + protected void onResume() { + super.onResume(); + lifecycleSubject.onNext(ActivityEvent.RESUME); + } + + @Override + @CallSuper + protected void onPause() { + lifecycleSubject.onNext(ActivityEvent.PAUSE); + super.onPause(); + } + + @Override + @CallSuper + protected void onStop() { + lifecycleSubject.onNext(ActivityEvent.STOP); + super.onStop(); + } + + @Override + @CallSuper + protected void onDestroy() { + lifecycleSubject.onNext(ActivityEvent.DESTROY); + super.onDestroy(); + } +} diff --git a/app/src/main/java/com/uiui/videoplayer/base/BasePresenter.java b/app/src/main/java/com/uiui/videoplayer/base/BasePresenter.java new file mode 100644 index 0000000..55ca87d --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/base/BasePresenter.java @@ -0,0 +1,7 @@ +package com.uiui.videoplayer.base; + +public interface BasePresenter { + void attachView(V view); + + void detachView(); +} diff --git a/app/src/main/java/com/uiui/videoplayer/base/BaseView.java b/app/src/main/java/com/uiui/videoplayer/base/BaseView.java new file mode 100644 index 0000000..d81999c --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/base/BaseView.java @@ -0,0 +1,4 @@ +package com.uiui.videoplayer.base; + +public interface BaseView { +} diff --git a/app/src/main/java/com/uiui/videoplayer/base/CustomDialog.java b/app/src/main/java/com/uiui/videoplayer/base/CustomDialog.java index 0574208..8ef575f 100644 --- a/app/src/main/java/com/uiui/videoplayer/base/CustomDialog.java +++ b/app/src/main/java/com/uiui/videoplayer/base/CustomDialog.java @@ -3,19 +3,14 @@ package com.uiui.videoplayer.base; import android.app.Dialog; import android.content.Context; -import android.content.Intent; -import android.content.res.Configuration; -import android.content.res.Resources; import android.os.Bundle; import android.text.TextUtils; import android.view.View; -import android.view.WindowManager; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.uiui.videoplayer.R; -import com.uiui.videoplayer.activity.MainActivity; /** diff --git a/app/src/main/java/com/uiui/videoplayer/base/MyApplication.java b/app/src/main/java/com/uiui/videoplayer/base/MyApplication.java deleted file mode 100644 index a3956ab..0000000 --- a/app/src/main/java/com/uiui/videoplayer/base/MyApplication.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.uiui.videoplayer.base; - -import android.app.Application; - -import com.uiui.videoplayer.utils.ToastUtil; - -public class MyApplication extends Application { - @Override - public void onCreate() { - super.onCreate(); - ToastUtil.init(this); - } -} diff --git a/app/src/main/java/com/uiui/videoplayer/bean/BaseResponse.java b/app/src/main/java/com/uiui/videoplayer/bean/BaseResponse.java new file mode 100644 index 0000000..7f76324 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/bean/BaseResponse.java @@ -0,0 +1,24 @@ +package com.uiui.videoplayer.bean; + +import androidx.annotation.NonNull; + +import com.google.gson.Gson; +import com.google.gson.JsonParser; + +import java.io.Serializable; + + +public class BaseResponse implements Serializable { + + private static final long serialVersionUID = 5468533687801294972L; + + public int code; + public String msg; + public T data; + + @NonNull + @Override + public String toString() { + return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/uiui/videoplayer/bean/LocalVideoInfo.java b/app/src/main/java/com/uiui/videoplayer/bean/LocalVideoInfo.java new file mode 100644 index 0000000..6038ac1 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/bean/LocalVideoInfo.java @@ -0,0 +1,118 @@ +package com.uiui.videoplayer.bean; + +import android.graphics.Bitmap; +import android.os.Parcel; +import android.os.Parcelable; + +import androidx.annotation.NonNull; + +import com.google.gson.Gson; +import com.google.gson.JsonParser; + +import java.io.Serializable; + +public class LocalVideoInfo implements Serializable, Parcelable { + private static final long serialVersionUID = 717025987339126008L; + + String localPath; + String file; + String file_name; + String file_md5; + long file_size; + long duration; + + public LocalVideoInfo(){} + + + protected LocalVideoInfo(Parcel in) { + localPath = in.readString(); + file = in.readString(); + file_name = in.readString(); + file_md5 = in.readString(); + file_size = in.readLong(); + duration = in.readLong(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public LocalVideoInfo createFromParcel(Parcel in) { + return new LocalVideoInfo(in); + } + + @Override + public LocalVideoInfo[] newArray(int size) { + return new LocalVideoInfo[size]; + } + }; + + public String getLocalPath() { + return localPath; + } + + public void setLocalPath(String localPath) { + this.localPath = localPath; + } + + public String getFile() { + return file; + } + + public void setFile(String file) { + this.file = file; + } + + public String getFile_name() { + return file_name; + } + + public void setFile_name(String file_name) { + this.file_name = file_name; + } + + public String getFile_md5() { + return file_md5; + } + + public void setFile_md5(String file_md5) { + this.file_md5 = file_md5; + } + + public long getFile_size() { + return file_size; + } + + public void setFile_size(long file_size) { + this.file_size = file_size; + } + + public long getDuration() { + return duration; + } + + public void setDuration(long duration) { + this.duration = duration; + } + + + @NonNull + @Override + public String toString() { + return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString(); + } + + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(localPath); + dest.writeString(file); + dest.writeString(file_name); + dest.writeString(file_md5); + dest.writeLong(file_size); + dest.writeLong(duration); + } +} diff --git a/app/src/main/java/com/uiui/videoplayer/bean/VideoInfo.java b/app/src/main/java/com/uiui/videoplayer/bean/VideoInfo.java new file mode 100644 index 0000000..2c36f88 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/bean/VideoInfo.java @@ -0,0 +1,64 @@ +package com.uiui.videoplayer.bean; + +import androidx.annotation.NonNull; + +import com.google.gson.Gson; +import com.google.gson.JsonParser; + +import java.io.Serializable; + +public class VideoInfo implements Serializable { + private static final long serialVersionUID = 7211429309866156084L; + + String file; + String file_name; + String file_md5; + long file_size; + long duration; + + public String getFile() { + return file; + } + + public void setFile(String file) { + this.file = file; + } + + public String getFile_name() { + return file_name; + } + + public void setFile_name(String file_name) { + this.file_name = file_name; + } + + public String getFile_md5() { + return file_md5; + } + + public void setFile_md5(String file_md5) { + this.file_md5 = file_md5; + } + + public long getFile_size() { + return file_size; + } + + public void setFile_size(long file_size) { + this.file_size = file_size; + } + + public long getDuration() { + return duration; + } + + public void setDuration(long duration) { + this.duration = duration; + } + + @NonNull + @Override + public String toString() { + return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString(); + } +} diff --git a/app/src/main/java/com/uiui/videoplayer/config/CommonConfig.java b/app/src/main/java/com/uiui/videoplayer/config/CommonConfig.java new file mode 100644 index 0000000..ed66bb3 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/config/CommonConfig.java @@ -0,0 +1,6 @@ +package com.uiui.videoplayer.config; + +public class CommonConfig { + public static final String MMKV_ID = "InterProcessKV"; + +} diff --git a/app/src/main/java/com/uiui/videoplayer/disklrucache/CacheHelper.java b/app/src/main/java/com/uiui/videoplayer/disklrucache/CacheHelper.java new file mode 100644 index 0000000..36a79c8 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/disklrucache/CacheHelper.java @@ -0,0 +1,474 @@ +package com.uiui.videoplayer.disklrucache; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.os.Environment; +import android.util.Log; + +import com.jakewharton.disklrucache.DiskLruCache; +import com.tencent.mmkv.MMKV; +import com.uiui.videoplayer.config.CommonConfig; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.BufferedWriter; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Serializable; + +/** + * 磁盘缓存帮助类 + */ +public class CacheHelper { + private static final String TAG = "DiskLruCacheHelper"; + + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + + private static final String DIR_NAME = "diskCache"; + private static final int MAX_COUNT = 1024 * 1024 * 1024; + private static final int DEFAULT_APP_VERSION = 1; + + private DiskLruCache mDiskLruCache; + + public CacheHelper(Context context) { + mDiskLruCache = generateCache(context, DIR_NAME, MAX_COUNT); + } + + public CacheHelper(Context context, String dirName) { + mDiskLruCache = generateCache(context, dirName, MAX_COUNT); + } + + public CacheHelper(Context context, String dirName, int maxCount) { + mDiskLruCache = generateCache(context, dirName, maxCount); + } + + //custom cache dir + public CacheHelper(File dir) { + mDiskLruCache = generateCache(null, dir, MAX_COUNT); + } + + public CacheHelper(Context context, File dir) { + mDiskLruCache = generateCache(context, dir, MAX_COUNT); + } + + public CacheHelper(Context context, File dir, int maxCount) { + mDiskLruCache = generateCache(context, dir, maxCount); + } + + private DiskLruCache generateCache(Context context, File dir, int maxCount) { + if (!dir.exists() || !dir.isDirectory()) { + throw new IllegalArgumentException( + dir + " is not a directory or does not exists. "); + } + + int appVersion = context == null ? DEFAULT_APP_VERSION : Utils.getAppVersion(context); + + DiskLruCache diskLruCache = null; + try { + diskLruCache = DiskLruCache.open( + dir, + appVersion, + DEFAULT_APP_VERSION, + maxCount); + } catch (IOException e) { + e.printStackTrace(); + } + return diskLruCache; + } + + private DiskLruCache generateCache(Context context, String dirName, int maxCount) { + DiskLruCache diskLruCache = null; + try { + diskLruCache = DiskLruCache.open( + getDiskCacheDir(context, dirName), + Utils.getAppVersion(context), + DEFAULT_APP_VERSION, + maxCount); + } catch (IOException e) { + e.printStackTrace(); + } + return diskLruCache; + } + + // ======================================= + // ============== String 数据 读写 ============= + // ======================================= + + public void put(String key, String value) { + Log.e(TAG, "put: key = " + key + " value = " + value); + mMMKV.encode(key, System.currentTimeMillis()); + mMMKV.encode(key + "_mmkv", value); + + DiskLruCache.Editor edit = null; + BufferedWriter bw = null; + try { + edit = editor(key); + if (edit == null) { + return; + } + OutputStream os = edit.newOutputStream(0); + bw = new BufferedWriter(new OutputStreamWriter(os)); + bw.write(value); + edit.commit();//write CLEAN + } catch (IOException e) { + e.printStackTrace(); + Log.e(TAG, "put: " + e.getMessage()); + try { + //s + edit.abort();//write REMOVE + } catch (IOException e1) { + e1.printStackTrace(); + Log.e(TAG, "put: " + e1.getMessage()); + } + } finally { + try { + if (bw != null) { + bw.close(); + } + } catch (IOException e) { + e.printStackTrace(); + Log.e(TAG, "put: " + e.getMessage()); + } + } + } + + public String getAsString(String key) { + Log.e(TAG, "getAsString: " + key); + InputStream inputStream = null; + try { + //write READ + inputStream = get(key); + if (inputStream == null) { + return mMMKV.decodeString(key + "_mmkv", null); + } + StringBuilder sb = new StringBuilder(); + int len = 0; + byte[] buf = new byte[128]; + while ((len = inputStream.read(buf)) != -1) { + sb.append(new String(buf, 0, len)); + } + return sb.toString(); + } catch (IOException e) { + e.printStackTrace(); + Log.e(TAG, "getAsString: " + e.getMessage()); + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e1) { + e1.printStackTrace(); + Log.e(TAG, "getAsString: " + e1.getMessage()); + } + } + } + return null; + } + + + public void put(String key, JSONObject jsonObject) { + put(key, jsonObject.toString()); + } + + public JSONObject getAsJson(String key) { + String val = getAsString(key); + try { + if (val != null) { + return new JSONObject(val); + } + } catch (JSONException e) { + e.printStackTrace(); + } + return null; + } + + // ======================================= + // ============ JSONArray 数据 读写 ============= + // ======================================= + + public void put(String key, JSONArray jsonArray) { + put(key, jsonArray.toString()); + } + + public JSONArray getAsJSONArray(String key) { + String JSONString = getAsString(key); + try { + JSONArray obj = new JSONArray(JSONString); + return obj; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + // ======================================= + // ============== byte 数据 读写 ============= + // ======================================= + + /** + * 保存 byte数据 到 缓存中 + * + * @param key 保存的key + * @param value 保存的数据 + */ + public void put(String key, byte[] value) { + OutputStream out = null; + DiskLruCache.Editor editor = null; + try { + editor = editor(key); + if (editor == null) { + return; + } + out = editor.newOutputStream(0); + out.write(value); + out.flush(); + editor.commit();//write CLEAN + } catch (Exception e) { + e.printStackTrace(); + try { + editor.abort();//write REMOVE + } catch (IOException e1) { + e1.printStackTrace(); + } + + } finally { + if (out != null) { + try { + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + + public byte[] getAsBytes(String key) { + byte[] res = null; + InputStream is = get(key); + if (is == null) { + return null; + } + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + byte[] buf = new byte[256]; + int len = 0; + while ((len = is.read(buf)) != -1) { + baos.write(buf, 0, len); + } + res = baos.toByteArray(); + } catch (IOException e) { + e.printStackTrace(); + } + return res; + } + + + // ======================================= + // ============== 序列化 数据 读写 ============= + // ======================================= + public void put(String key, Serializable value) { + DiskLruCache.Editor editor = editor(key); + ObjectOutputStream oos = null; + if (editor == null) { + return; + } + try { + OutputStream os = editor.newOutputStream(0); + oos = new ObjectOutputStream(os); + oos.writeObject(value); + oos.flush(); + editor.commit(); + } catch (IOException e) { + e.printStackTrace(); + try { + editor.abort(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } finally { + try { + if (oos != null) { + oos.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public T getAsSerializable(String key) { + T t = null; + InputStream is = get(key); + ObjectInputStream ois = null; + if (is == null) { + return null; + } + try { + ois = new ObjectInputStream(is); + t = (T) ois.readObject(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (ois != null) { + ois.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + return t; + } + + // ======================================= + // ============== bitmap 数据 读写 ============= + // ======================================= + public void put(String key, Bitmap bitmap) { + put(key, Utils.bitmap2Bytes(bitmap)); + } + + public Bitmap getAsBitmap(String key) { + byte[] bytes = getAsBytes(key); + if (bytes == null) { + return null; + } + return Utils.bytes2Bitmap(bytes); + } + + // ======================================= + // ============= drawable 数据 读写 ============= + // ======================================= + public void put(String key, Drawable value) { + put(key, Utils.drawable2Bitmap(value)); + } + + public Drawable getAsDrawable(String key) { + byte[] bytes = getAsBytes(key); + if (bytes == null) { + return null; + } + return Utils.bitmap2Drawable(Utils.bytes2Bitmap(bytes)); + } + + // ======================================= + // ============= other methods ============= + // ======================================= + public boolean remove(String key) { + try { + key = Utils.hashKeyForDisk(key); + return mDiskLruCache.remove(key); + } catch (IOException e) { + e.printStackTrace(); + } + return false; + } + + public void close() throws IOException { + mDiskLruCache.close(); + } + + public void delete() throws IOException { + mDiskLruCache.delete(); + mMMKV.clearAll(); + } + + public void flush() throws IOException { + mDiskLruCache.flush(); + } + + public boolean isClosed() { + return mDiskLruCache.isClosed(); + } + + public long size() { + return mDiskLruCache.size(); + } + + public void setMaxSize(long maxSize) { + mDiskLruCache.setMaxSize(maxSize); + } + + public File getDirectory() { + return mDiskLruCache.getDirectory(); + } + + public long getMaxSize() { + return mDiskLruCache.getMaxSize(); + } + + + // ======================================= + // ===遇到文件比较大的,可以直接通过流读写 ===== + // ======================================= + //basic editor + public DiskLruCache.Editor editor(String key) { + try { + key = Utils.hashKeyForDisk(key); + //wirte DIRTY + DiskLruCache.Editor edit = mDiskLruCache.edit(key); + //edit maybe null :the entry is editing + if (edit == null) { + Log.w(TAG, "the entry spcified key:" + key + " is editing by other . "); + } + return edit; + } catch (IOException e) { + e.printStackTrace(); + Log.e(TAG, "editor: " + e.getMessage()); + } + + return null; + } + + + //basic get + public InputStream get(String key) { + try { + DiskLruCache.Snapshot snapshot = mDiskLruCache.get(Utils.hashKeyForDisk(key)); + if (snapshot == null) //not find entry , or entry.readable = false + { + Log.e(TAG, "not find entry , or entry.readable = false"); + return null; + } + //write READ + return snapshot.getInputStream(0); + + } catch (IOException e) { + e.printStackTrace(); + return null; + } + + } + + + // ======================================= + // ============== 序列化 数据 读写 ============= + // ======================================= + + private File getDiskCacheDir(Context context, String uniqueName) { + String cachePath; + if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) + || !Environment.isExternalStorageRemovable()) { + if (context.getExternalCacheDir() != null) { + cachePath = context.getExternalCacheDir().getPath(); + } else if (context.getExternalFilesDir("cache") != null) { + cachePath = context.getExternalFilesDir("cache").getPath(); + } else { + cachePath = context.getCacheDir().getPath(); + } + } else { + cachePath = context.getCacheDir().getPath(); + } + return new File(cachePath + File.separator + uniqueName); + } + +} diff --git a/app/src/main/java/com/uiui/videoplayer/disklrucache/DiskLruCacheHelper.java b/app/src/main/java/com/uiui/videoplayer/disklrucache/DiskLruCacheHelper.java new file mode 100644 index 0000000..e18baff --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/disklrucache/DiskLruCacheHelper.java @@ -0,0 +1,427 @@ +package com.uiui.videoplayer.disklrucache; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.os.Environment; +import android.util.Log; + +import com.jakewharton.disklrucache.DiskLruCache; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.BufferedWriter; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Serializable; + +/** + * 磁盘缓存帮助类 + */ +public class DiskLruCacheHelper { + private static final String DIR_NAME = "diskCache"; + private static final int MAX_COUNT = 5 * 1024 * 1024; + private static final int DEFAULT_APP_VERSION = 1; + + private static final String TAG = "DiskLruCacheHelper"; + + private DiskLruCache mDiskLruCache; + + public DiskLruCacheHelper(Context context) throws IOException { + mDiskLruCache = generateCache(context, DIR_NAME, MAX_COUNT); + } + + public DiskLruCacheHelper(Context context, String dirName) throws IOException { + mDiskLruCache = generateCache(context, dirName, MAX_COUNT); + } + + public DiskLruCacheHelper(Context context, String dirName, int maxCount) throws IOException { + mDiskLruCache = generateCache(context, dirName, maxCount); + } + + //custom cache dir + public DiskLruCacheHelper(File dir) throws IOException { + mDiskLruCache = generateCache(null, dir, MAX_COUNT); + } + + public DiskLruCacheHelper(Context context, File dir) throws IOException { + mDiskLruCache = generateCache(context, dir, MAX_COUNT); + } + + public DiskLruCacheHelper(Context context, File dir, int maxCount) throws IOException { + mDiskLruCache = generateCache(context, dir, maxCount); + } + + private DiskLruCache generateCache(Context context, File dir, int maxCount) throws IOException { + if (!dir.exists() || !dir.isDirectory()) { + throw new IllegalArgumentException( + dir + " is not a directory or does not exists. "); + } + + int appVersion = context == null ? DEFAULT_APP_VERSION : Utils.getAppVersion(context); + + DiskLruCache diskLruCache = DiskLruCache.open( + dir, + appVersion, + DEFAULT_APP_VERSION, + maxCount); + + return diskLruCache; + } + + private DiskLruCache generateCache(Context context, String dirName, int maxCount) throws IOException { + DiskLruCache diskLruCache = DiskLruCache.open( + getDiskCacheDir(context, dirName), + Utils.getAppVersion(context), + DEFAULT_APP_VERSION, + maxCount); + return diskLruCache; + } + // ======================================= + // ============== String 数据 读写 ============= + // ======================================= + + public void put(String key, String value) { + DiskLruCache.Editor edit = null; + BufferedWriter bw = null; + try { + edit = editor(key); + if (edit == null) return; + OutputStream os = edit.newOutputStream(0); + bw = new BufferedWriter(new OutputStreamWriter(os)); + bw.write(value); + edit.commit();//write CLEAN + } catch (IOException e) { + e.printStackTrace(); + try { + //s + edit.abort();//write REMOVE + } catch (IOException e1) { + e1.printStackTrace(); + } + } finally { + try { + if (bw != null) + bw.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public String getAsString(String key) { + InputStream inputStream = null; + try { + //write READ + inputStream = get(key); + if (inputStream == null) return null; + StringBuilder sb = new StringBuilder(); + int len = 0; + byte[] buf = new byte[128]; + while ((len = inputStream.read(buf)) != -1) { + sb.append(new String(buf, 0, len)); + } + return sb.toString(); + + + } catch (IOException e) { + e.printStackTrace(); + if (inputStream != null) + try { + inputStream.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + return null; + } + + + public void put(String key, JSONObject jsonObject) { + put(key, jsonObject.toString()); + } + + public JSONObject getAsJson(String key) { + String val = getAsString(key); + try { + if (val != null) + return new JSONObject(val); + } catch (JSONException e) { + e.printStackTrace(); + } + return null; + } + + // ======================================= + // ============ JSONArray 数据 读写 ============= + // ======================================= + + public void put(String key, JSONArray jsonArray) { + put(key, jsonArray.toString()); + } + + public JSONArray getAsJSONArray(String key) { + String JSONString = getAsString(key); + try { + JSONArray obj = new JSONArray(JSONString); + return obj; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + // ======================================= + // ============== byte 数据 读写 ============= + // ======================================= + + /** + * 保存 byte数据 到 缓存中 + * + * @param key 保存的key + * @param value 保存的数据 + */ + public void put(String key, byte[] value) { + OutputStream out = null; + DiskLruCache.Editor editor = null; + try { + editor = editor(key); + if (editor == null) { + return; + } + out = editor.newOutputStream(0); + out.write(value); + out.flush(); + editor.commit();//write CLEAN + } catch (Exception e) { + e.printStackTrace(); + try { + editor.abort();//write REMOVE + } catch (IOException e1) { + e1.printStackTrace(); + } + + } finally { + if (out != null) { + try { + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + + public byte[] getAsBytes(String key) { + byte[] res = null; + InputStream is = get(key); + if (is == null) return null; + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + byte[] buf = new byte[256]; + int len = 0; + while ((len = is.read(buf)) != -1) { + baos.write(buf, 0, len); + } + res = baos.toByteArray(); + } catch (IOException e) { + e.printStackTrace(); + } + return res; + } + + + // ======================================= + // ============== 序列化 数据 读写 ============= + // ======================================= + public void put(String key, Serializable value) { + DiskLruCache.Editor editor = editor(key); + ObjectOutputStream oos = null; + if (editor == null) return; + try { + OutputStream os = editor.newOutputStream(0); + oos = new ObjectOutputStream(os); + oos.writeObject(value); + oos.flush(); + editor.commit(); + } catch (IOException e) { + e.printStackTrace(); + try { + editor.abort(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } finally { + try { + if (oos != null) + oos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public T getAsSerializable(String key) { + T t = null; + InputStream is = get(key); + ObjectInputStream ois = null; + if (is == null) return null; + try { + ois = new ObjectInputStream(is); + t = (T) ois.readObject(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (ois != null) + ois.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return t; + } + + // ======================================= + // ============== bitmap 数据 读写 ============= + // ======================================= + public void put(String key, Bitmap bitmap) { + put(key, Utils.bitmap2Bytes(bitmap)); + } + + public Bitmap getAsBitmap(String key) { + byte[] bytes = getAsBytes(key); + if (bytes == null) return null; + return Utils.bytes2Bitmap(bytes); + } + + // ======================================= + // ============= drawable 数据 读写 ============= + // ======================================= + public void put(String key, Drawable value) { + put(key, Utils.drawable2Bitmap(value)); + } + + public Drawable getAsDrawable(String key) { + byte[] bytes = getAsBytes(key); + if (bytes == null) { + return null; + } + return Utils.bitmap2Drawable(Utils.bytes2Bitmap(bytes)); + } + + // ======================================= + // ============= other methods ============= + // ======================================= + public boolean remove(String key) { + try { + key = Utils.hashKeyForDisk(key); + return mDiskLruCache.remove(key); + } catch (IOException e) { + e.printStackTrace(); + } + return false; + } + + public void close() throws IOException { + mDiskLruCache.close(); + } + + public void delete() throws IOException { + mDiskLruCache.delete(); + } + + public void flush() throws IOException { + mDiskLruCache.flush(); + } + + public boolean isClosed() { + return mDiskLruCache.isClosed(); + } + + public long size() { + return mDiskLruCache.size(); + } + + public void setMaxSize(long maxSize) { + mDiskLruCache.setMaxSize(maxSize); + } + + public File getDirectory() { + return mDiskLruCache.getDirectory(); + } + + public long getMaxSize() { + return mDiskLruCache.getMaxSize(); + } + + + // ======================================= + // ===遇到文件比较大的,可以直接通过流读写 ===== + // ======================================= + //basic editor + public DiskLruCache.Editor editor(String key) { + try { + key = Utils.hashKeyForDisk(key); + //wirte DIRTY + DiskLruCache.Editor edit = mDiskLruCache.edit(key); + //edit maybe null :the entry is editing + if (edit == null) { + Log.w(TAG, "the entry spcified key:" + key + " is editing by other . "); + } + return edit; + } catch (IOException e) { + e.printStackTrace(); + } + + return null; + } + + + //basic get + public InputStream get(String key) { + try { + DiskLruCache.Snapshot snapshot = mDiskLruCache.get(Utils.hashKeyForDisk(key)); + if (snapshot == null) //not find entry , or entry.readable = false + { + Log.e(TAG, "not find entry , or entry.readable = false"); + return null; + } + //write READ + return snapshot.getInputStream(0); + + } catch (IOException e) { + e.printStackTrace(); + return null; + } + + } + + + // ======================================= + // ============== 序列化 数据 读写 ============= + // ======================================= + + private File getDiskCacheDir(Context context, String uniqueName) { + String cachePath; + if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) + || !Environment.isExternalStorageRemovable()) { + cachePath = context.getExternalCacheDir().getPath(); + } else { + cachePath = context.getCacheDir().getPath(); + } + return new File(cachePath + File.separator + uniqueName); + } + +} diff --git a/app/src/main/java/com/uiui/videoplayer/disklrucache/Utils.java b/app/src/main/java/com/uiui/videoplayer/disklrucache/Utils.java new file mode 100644 index 0000000..c9f9769 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/disklrucache/Utils.java @@ -0,0 +1,101 @@ +package com.uiui.videoplayer.disklrucache; + +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.PixelFormat; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; + +import java.io.ByteArrayOutputStream; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class Utils { + public static int getAppVersion(Context context) { + try { + PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); + return info.versionCode; + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + return 1; + } + + + public static String hashKeyForDisk(String key) { + String cacheKey; + try { + final MessageDigest mDigest = MessageDigest.getInstance("MD5"); + mDigest.update(key.getBytes()); + cacheKey = bytesToHexString(mDigest.digest()); + } catch (NoSuchAlgorithmException e) { + cacheKey = String.valueOf(key.hashCode()); + } + return cacheKey; + } + + public static String bytesToHexString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < bytes.length; i++) { + String hex = Integer.toHexString(0xFF & bytes[i]); + if (hex.length() == 1) { + sb.append('0'); + } + sb.append(hex); + } + return sb.toString(); + } + + public static byte[] bitmap2Bytes(Bitmap bm) { + if (bm == null) { + return null; + } + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + bm.compress(Bitmap.CompressFormat.PNG, 100, baos); + return baos.toByteArray(); + } + + public static Bitmap bytes2Bitmap(byte[] bytes) { + return BitmapFactory.decodeByteArray(bytes, 0, bytes.length); + } + + + /** + * Drawable → Bitmap + */ + public static Bitmap drawable2Bitmap(Drawable drawable) { + if (drawable == null) { + return null; + } + // 取 drawable 的长宽 + int w = drawable.getIntrinsicWidth(); + int h = drawable.getIntrinsicHeight(); + // 取 drawable 的颜色格式 + Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565; + // 建立对应 bitmap + Bitmap bitmap = Bitmap.createBitmap(w, h, config); + // 建立对应 bitmap 的画布 + Canvas canvas = new Canvas(bitmap); + drawable.setBounds(0, 0, w, h); + // 把 drawable 内容画到画布中 + drawable.draw(canvas); + return bitmap; + } + + /* + * Bitmap → Drawable + */ + @SuppressWarnings("deprecation") + public static Drawable bitmap2Drawable(Bitmap bm) { + if (bm == null) { + return null; + } + BitmapDrawable bd = new BitmapDrawable(bm); + bd.setTargetDensity(bm.getDensity()); + return new BitmapDrawable(bm); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/uiui/videoplayer/gson/GsonUtils.java b/app/src/main/java/com/uiui/videoplayer/gson/GsonUtils.java new file mode 100644 index 0000000..b17533e --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/gson/GsonUtils.java @@ -0,0 +1,144 @@ +package com.uiui.videoplayer.gson; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.google.gson.reflect.TypeToken; + +import java.lang.reflect.Type; +import java.util.List; +import java.util.Map; +import java.util.Objects; + + +public class GsonUtils { + //https://blog.csdn.net/zte1055889498/article/details/122400299 + + public static JsonObject getJsonObject(String jsonString) { + JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject(); + return jsonObject; + } + + private static final Gson gson; + + static { + GsonBuilder builder = new GsonBuilder(); + builder.registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory()); + builder.registerTypeAdapter(Integer.class, new IntegerDefault0Adapter()); + builder.registerTypeAdapter(int.class, new IntegerDefault0Adapter()); + builder.disableHtmlEscaping(); + builder.enableComplexMapKeySerialization(); + // builder.excludeFieldsWithoutExposeAnnotation(); + builder.setDateFormat("yyyy-MM-dd HH:mm:ss"); + gson = builder.create(); + } + + public static Type makeJavaType(Type rawType, Type... typeArguments) { + return TypeToken.getParameterized(rawType, typeArguments).getType(); + } + + public static String toString(Object value) { + if (Objects.isNull(value)) { + return null; + } + if (value instanceof String) { + return (String) value; + } + return toJSONString(value); + } + + public static String toJSONString(Object value) { + return gson.toJson(value); + } + + public static String toPrettyString(Object value) { + return gson.newBuilder().setPrettyPrinting().create().toJson(value); + } + + public static JsonElement fromJavaObject(Object value) { + JsonElement result = null; + if (Objects.nonNull(value) && (value instanceof String)) { + result = parseObject((String) value); + } else { + result = gson.toJsonTree(value); + } + return result; + } + + public static JsonElement parseObject(String content) { + return JsonParser.parseString(content); + } + + public static JsonElement getJsonElement(JsonObject node, String name) { + return node.get(name); + } + + public static JsonElement getJsonElement(JsonArray node, int index) { + return node.get(index); + } + + public static T toJavaObject(JsonElement node, Class clazz) { + return gson.fromJson(node, clazz); + } + + public static T toJavaObject(JsonElement node, Type type) { + return gson.fromJson(node, type); + } + + public static T toJavaObject(JsonElement node, TypeToken typeToken) { + return toJavaObject(node, typeToken.getType()); + } + + public static List toJavaList(JsonElement node, Class clazz) { + return toJavaObject(node, makeJavaType(List.class, clazz)); + } + + public static List toJavaList(JsonElement node) { + return toJavaObject(node, new TypeToken>() { + }.getType()); + } + + public static Map toJavaMap(JsonElement node, Class clazz) { + return toJavaObject(node, makeJavaType(Map.class, String.class, clazz)); + } + + public static Map toJavaMap(JsonElement node) { + return toJavaObject(node, new TypeToken>() { + }.getType()); + } + + public static T toJavaObject(String content, Class clazz) { + JsonObject jsonObject = getJsonObject(content); + String jsonString = jsonObject.toString(); + return gson.fromJson(jsonString, clazz); + } + + public static T toJavaObject(String content, Type type) { + return gson.fromJson(content, type); + } + + public static T toJavaObject(String content, TypeToken typeToken) { + return toJavaObject(content, typeToken.getType()); + } + + public static List toJavaList(String content, Class clazz) { + return toJavaObject(content, makeJavaType(List.class, clazz)); + } + + public static List toJavaList(String content) { + return toJavaObject(content, new TypeToken>() { + }.getType()); + } + + public static Map toJavaMap(String content, Class clazz) { + return toJavaObject(content, makeJavaType(Map.class, String.class, clazz)); + } + + public static Map toJavaMap(String content) { + return toJavaObject(content, new TypeToken>() { + }.getType()); + } +} diff --git a/app/src/main/java/com/uiui/videoplayer/gson/IntegerDefault0Adapter.java b/app/src/main/java/com/uiui/videoplayer/gson/IntegerDefault0Adapter.java new file mode 100644 index 0000000..ec202e3 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/gson/IntegerDefault0Adapter.java @@ -0,0 +1,35 @@ +package com.uiui.videoplayer.gson; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import com.google.gson.JsonSyntaxException; + +import java.lang.reflect.Type; + +public class IntegerDefault0Adapter implements JsonSerializer, JsonDeserializer { + @Override + public Integer deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) + throws JsonParseException { + try { + if (json.getAsString().equals("")) { + return 0; + } + } catch (Exception ignore) { + } + try { + return json.getAsInt(); + } catch (NumberFormatException e) { + throw new JsonSyntaxException(e); + } + } + + @Override + public JsonElement serialize(Integer src, Type typeOfSrc, JsonSerializationContext context) { + return new JsonPrimitive(src); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/uiui/videoplayer/gson/NullStringToEmptyAdapterFactory.java b/app/src/main/java/com/uiui/videoplayer/gson/NullStringToEmptyAdapterFactory.java new file mode 100644 index 0000000..3461df9 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/gson/NullStringToEmptyAdapterFactory.java @@ -0,0 +1,45 @@ +package com.uiui.videoplayer.gson; + +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; + +import java.io.IOException; + +public class NullStringToEmptyAdapterFactory implements TypeAdapterFactory { + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + + Class rawType = (Class) type.getRawType(); + if (rawType != String.class) { + return null; + } + return (TypeAdapter) new StringAdapter(); + } + + public static class StringAdapter extends TypeAdapter { + @Override + public String read(JsonReader reader) throws IOException { + if (reader.peek() == JsonToken.NULL) { + reader.nextNull(); + return ""; + } + return reader.nextString(); + } + + @Override + public void write(JsonWriter writer, String value) throws IOException { + if (value == null) { + writer.nullValue(); + return; + } + writer.value(value); + } + } + +} + diff --git a/app/src/main/java/com/uiui/videoplayer/manager/ConnectManager.java b/app/src/main/java/com/uiui/videoplayer/manager/ConnectManager.java new file mode 100644 index 0000000..53488b3 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/manager/ConnectManager.java @@ -0,0 +1,98 @@ +package com.uiui.videoplayer.manager; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; + +import com.tencent.mmkv.MMKV; +import com.uiui.videoplayer.config.CommonConfig; + +public class ConnectManager { + private static final String TAG = ConnectManager.class.getSimpleName(); + + + public static final long ONE_SECOND_TIME = 1000; + public static final long ONE_MINUTES_TIME = 60 * ONE_SECOND_TIME; + public static final long FIFTEEN_MINUTES_TIME = ONE_MINUTES_TIME * 15; + public static final long HALF_HOUR_TIME = FIFTEEN_MINUTES_TIME * 2; + public static final long ONE_HOUR_TIME = HALF_HOUR_TIME * 2; + public static final long SIX_HOUR_TIME = ONE_HOUR_TIME * 6; + public static final long HALF_DAY_TIME = SIX_HOUR_TIME * 2; + public static final long ONE_DAY_TIME = HALF_DAY_TIME * 2; + + /*重启后连接成功的时间*/ + public static final String REBOOT_LAST_ONNECT_TIME = "reboot_last_connect_time"; + /*WiFi连接后连接成功的时间*/ + public static final String WIFI_LAST_CONNECT_TIME = "WiFi_last_connect_time"; + /*打开设备信息连接成功的时间*/ + public static final String OPENINFO_LAST_ONNECT_TIME = "opneinfo_last_connect_time"; + + + @SuppressLint("StaticFieldLeak") + private static ConnectManager sInstance; + private Context mContext; + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + + private ConnectManager(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + this.mContext = context; + + } + + public static void init(Context context) { + if (sInstance == null) { + Log.e(TAG, "init: "); + sInstance = new ConnectManager(context); + } + } + + public static ConnectManager getInstance() { + if (sInstance == null) { + throw new IllegalStateException("You must be init ConnectManager first"); + } + return sInstance; + } + + public long getConnectModeTime(ConnectMode connectMode) { + long time = 0; + switch (connectMode) { + case DEFAULT: + time = 0; + break; + case ONE_MINUTE: + time = ONE_MINUTES_TIME; + break; + case FIFTEEN_MINUTES: + time = FIFTEEN_MINUTES_TIME; + break; + case HALF_HOUR: + time = HALF_HOUR_TIME; + break; + case ONE_HOUR: + time = ONE_HOUR_TIME; + break; + case SIX_HOUR: + time = SIX_HOUR_TIME; + break; + case HALF_DAY: + time = HALF_DAY_TIME; + break; + case ONE_DAY: + time = ONE_DAY_TIME; + break; + default: + } + return time; + } + + public boolean isNeedConnect(String key, ConnectMode connectMode) { + long nowTime = System.currentTimeMillis(); + long lastTime = mMMKV.decodeLong(key, 0); + long intervalTime = getConnectModeTime(connectMode); + //防止一分钟内重复请求 + return nowTime - lastTime > intervalTime && nowTime - lastTime > ONE_SECOND_TIME; + } + +} diff --git a/app/src/main/java/com/uiui/videoplayer/manager/ConnectMode.java b/app/src/main/java/com/uiui/videoplayer/manager/ConnectMode.java new file mode 100644 index 0000000..7de0ac7 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/manager/ConnectMode.java @@ -0,0 +1,12 @@ +package com.uiui.videoplayer.manager; + +public enum ConnectMode { + DEFAULT, + ONE_MINUTE, + FIFTEEN_MINUTES, + HALF_HOUR, + ONE_HOUR, + SIX_HOUR, + HALF_DAY, + ONE_DAY, +} \ No newline at end of file diff --git a/app/src/main/java/com/uiui/videoplayer/manager/RemoteManager.java b/app/src/main/java/com/uiui/videoplayer/manager/RemoteManager.java new file mode 100644 index 0000000..8ed474e --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/manager/RemoteManager.java @@ -0,0 +1,139 @@ +package com.uiui.videoplayer.manager; + +import android.annotation.SuppressLint; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.os.IBinder; +import android.os.RemoteException; +import android.text.TextUtils; +import android.util.Log; + +import com.tencent.mmkv.MMKV; +import com.uiui.sn.IGetInfoInterface; +import com.uiui.videoplayer.BuildConfig; + +import java.util.HashSet; +import java.util.Set; + +public class RemoteManager { + private static final String TAG = RemoteManager.class.getSimpleName(); + + public static final String serialKey = "SERIAL_KEY"; + public static final String hidePackageKey = "HIDE_PACKAGE_NAME"; + public static final String disablePackageKey = "DISABLE_PACKAGE_NAME"; + + @SuppressLint("StaticFieldLeak") + private static RemoteManager sInstance; + private Context mContext; + private MMKV mMMKV = MMKV.defaultMMKV(); + private IGetInfoInterface mIGetInfoInterface; + private ServiceConnection mServiceConnection; + + private RemoteManager(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + this.mContext = context; + this.mServiceConnection = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + Log.e(TAG, "onServiceConnected: " + name); + mIGetInfoInterface = IGetInfoInterface.Stub.asInterface(service); + try { + for (ConnectedListener listener : mListeners) { + listener.onConnected(); + } + String sn = mIGetInfoInterface.getSerial(); + if (!TextUtils.isEmpty(sn)) { + mMMKV.encode(serialKey, sn); + } + } catch (RemoteException e) { + e.printStackTrace(); + Log.e(TAG, "onServiceConnected: " + e.getMessage()); + } + } + + @Override + public void onServiceDisconnected(ComponentName name) { + Log.e(TAG, "onServiceDisconnected: " + name); + mIGetInfoInterface = null; + bindinfoService(); + } + }; + if (mIGetInfoInterface == null) { + bindinfoService(); + } + } + + public static void init(Context context) { + if (sInstance == null) { + Log.e(TAG, "init: "); + sInstance = new RemoteManager(context); + } + } + + public static RemoteManager getInstance() { + if (sInstance == null) { + throw new IllegalStateException("You must be init RemoteManager first"); + } + return sInstance; + } + + + private static final String AOLEYUNINFO_PACKAGE_NAME = "com.uiui.sn"; + private static final String AOLEYUNINFO_CLASS_NAME = "com.uiui.sn.service.RemoteService"; + private static final String AOLEYUNINFO_ACTION = "com.uiui.sn.IGetInfoInterface"; + + public void checkAvailable() { + if (mIGetInfoInterface == null) { + bindinfoService(); + } + } + + public interface ConnectedListener { + void onConnected(); + } + + private Set mListeners = new HashSet<>(); + + public void setListener(ConnectedListener listener) { + mListeners.add(listener); + } + + public void removeListener(ConnectedListener listener) { + mListeners.remove(listener); + } + + private void bindinfoService() { + //这是连接aidl服务的代码 + Intent intent = new Intent(); + intent.setAction(AOLEYUNINFO_ACTION); + intent.setPackage(AOLEYUNINFO_PACKAGE_NAME); + intent.setComponent(new ComponentName(AOLEYUNINFO_PACKAGE_NAME, AOLEYUNINFO_CLASS_NAME)); + mContext.bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE); + } + + public String getSerial() { + if (BuildConfig.DEBUG) { + return "T1030B128GB22435020359"; + } + String sn = mMMKV.decodeString(serialKey, ""); + Log.e(TAG, "sn: " + sn); + if (mIGetInfoInterface == null) { + bindinfoService(); + return sn; + } + try { + String serial = mIGetInfoInterface.getSerial(); + Log.e(TAG, "getSerial: " + serial); + return serial; + } catch (RemoteException e) { + e.printStackTrace(); + return sn; + } + } + + +} diff --git a/app/src/main/java/com/uiui/videoplayer/network/MD5Util.java b/app/src/main/java/com/uiui/videoplayer/network/MD5Util.java new file mode 100644 index 0000000..20f2baa --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/network/MD5Util.java @@ -0,0 +1,112 @@ +package com.uiui.videoplayer.network; + +import android.annotation.SuppressLint; + +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class MD5Util { + + public static String packetMD5(String str) { + MessageDigest messageDigest = null; + try { + messageDigest = MessageDigest.getInstance("MD5"); + + messageDigest.reset(); + + messageDigest.update(str.getBytes("UTF-8")); + } catch (NoSuchAlgorithmException e) { + System.out.println("NoSuchAlgorithmException caught!"); + System.exit(-1); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + byte[] byteArray = messageDigest.digest(); + + StringBuffer md5StrBuff = new StringBuffer(); + + for (int i = 0; i < byteArray.length; i++) { + if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) + md5StrBuff.append("0").append( + Integer.toHexString(0xFF & byteArray[i])); + else + md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i])); + } + + return md5StrBuff.toString(); + } + + @SuppressLint("DefaultLocale") + public static String getUpperMD5Str(String str) { + MessageDigest messageDigest = null; + + try { + messageDigest = MessageDigest.getInstance("MD5"); + + messageDigest.reset(); + + messageDigest.update(str.getBytes("UTF-8")); + } catch (NoSuchAlgorithmException e) { + System.out.println("NoSuchAlgorithmException caught!"); + System.exit(-1); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + byte[] byteArray = messageDigest.digest(); + + StringBuffer md5StrBuff = new StringBuffer(); + + for (int i = 0; i < byteArray.length; i++) { + if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) + md5StrBuff.append("0").append( + Integer.toHexString(0xFF & byteArray[i])); + else + md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i])); + } + + return md5StrBuff.toString().toUpperCase(); + } + + + /** + * 获取16位的MD5 值得 + * + * @param str + * @return + */ + @SuppressLint("DefaultLocale") + public static String getUpperMD5Str16(String str) { + MessageDigest messageDigest = null; + + try { + messageDigest = MessageDigest.getInstance("MD5"); + + messageDigest.reset(); + + messageDigest.update(str.getBytes("UTF-8")); + } catch (NoSuchAlgorithmException e) { + System.out.println("NoSuchAlgorithmException caught!"); + System.exit(-1); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + byte[] byteArray = messageDigest.digest(); + + StringBuffer md5StrBuff = new StringBuffer(); + + for (int i = 0; i < byteArray.length; i++) { + if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) + md5StrBuff.append("0").append( + Integer.toHexString(0xFF & byteArray[i])); + else + md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i])); + } + + return md5StrBuff.toString().toUpperCase().substring(8, 24); + } + +} diff --git a/app/src/main/java/com/uiui/videoplayer/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/videoplayer/network/NetInterfaceManager.java new file mode 100644 index 0000000..e23bbad --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/network/NetInterfaceManager.java @@ -0,0 +1,388 @@ +package com.uiui.videoplayer.network; + +import android.annotation.SuppressLint; +import android.content.ContentResolver; +import android.content.Context; +import android.graphics.Bitmap; +import android.os.Environment; +import android.util.Log; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.tencent.mmkv.MMKV; +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiui.videoplayer.bean.BaseResponse; +import com.uiui.videoplayer.bean.VideoInfo; +import com.uiui.videoplayer.bean.LocalVideoInfo; +import com.uiui.videoplayer.config.CommonConfig; +import com.uiui.videoplayer.disklrucache.CacheHelper; +import com.uiui.videoplayer.gson.GsonUtils; +import com.uiui.videoplayer.manager.ConnectManager; +import com.uiui.videoplayer.manager.ConnectMode; +import com.uiui.videoplayer.manager.RemoteManager; +import com.uiui.videoplayer.network.api.HomeVideoApi; +import com.uiui.videoplayer.network.interceptor.RepeatRequestInterceptor; +import com.uiui.videoplayer.utils.JGYUtils; +import com.uiui.videoplayer.utils.ToastUtil; +import com.uiui.videoplayer.utils.VideoUtils; + +import java.io.File; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; + +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.ObservableEmitter; +import io.reactivex.rxjava3.core.ObservableOnSubscribe; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.functions.BiFunction; +import io.reactivex.rxjava3.schedulers.Schedulers; +import io.reactivex.rxjava3.subjects.BehaviorSubject; +import okhttp3.Cache; +import okhttp3.OkHttpClient; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory; +import retrofit2.converter.gson.GsonConverterFactory; +import wseemann.media.FFmpegMediaMetadataRetriever; + +public class NetInterfaceManager { + private static final String TAG = NetInterfaceManager.class.getSimpleName(); + + @SuppressLint("StaticFieldLeak") + private static NetInterfaceManager INSTANCE; + private Context mContext; + private ContentResolver crv; + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + private Retrofit mRetrofit; + private OkHttpClient okHttpClient; + private CacheHelper mCacheHelper; + + private final ConcurrentHashMap requestIdsMap = new ConcurrentHashMap<>(); + + //超时时间 + private static final int timeOut = 5; + // 缓存文件最大限制大小20M + private static final long cacheSize = 1024 * 1024 * 64; + public static final String CUSTOM_REPEAT_REQ_PROTOCOL = "MY_CUSTOM_REPEAT_REQ_PROTOCOL"; + + private NetInterfaceManager(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + this.mContext = context; + this.crv = mContext.getContentResolver(); + this.mCacheHelper = new CacheHelper(mContext); + + if (null == mRetrofit) { + if (okHttpClient == null) { + //如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了 + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + builder.connectTimeout(timeOut, TimeUnit.SECONDS); // 设置连接超时时间 + builder.writeTimeout(timeOut, TimeUnit.SECONDS);// 设置写入超时时间 + builder.readTimeout(timeOut, TimeUnit.SECONDS);// 设置读取数据超时时间 + builder.retryOnConnectionFailure(true);// 设置进行连接失败重试 + builder.addInterceptor(new RepeatRequestInterceptor()); + + // 设置缓存文件路径 + String cacheDirectory = getCacheDir() + "/OkHttpCache"; + Cache cache = new Cache(new File(cacheDirectory), cacheSize); + builder.cache(cache);// 设置缓存 + okHttpClient = builder.build(); + } + + mRetrofit = new Retrofit.Builder() + .client(okHttpClient) + .baseUrl(UrlAddress.ROOT_URL) + .addConverterFactory(GsonConverterFactory.create()) + .addCallAdapterFactory(RxJava3CallAdapterFactory.create()) + .build(); + } + } + + private String getCacheDir() { + String cachePath; + if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) + || !Environment.isExternalStorageRemovable()) { + if (mContext.getExternalCacheDir() != null) { + cachePath = mContext.getExternalCacheDir().getPath(); + } else if (mContext.getExternalFilesDir("cache") != null) { + cachePath = mContext.getExternalFilesDir("cache").getPath(); + } else { + cachePath = mContext.getCacheDir().getPath(); + } + } else { + cachePath = mContext.getCacheDir().getPath(); + } + return cachePath; + } + + public static void init(Context context) { + if (context == null) { + throw new RuntimeException("context is NULL"); + } + if (INSTANCE == null) { + INSTANCE = new NetInterfaceManager(context); + } + } + + public static NetInterfaceManager getInstance() { + if (INSTANCE == null) { + throw new IllegalStateException("You must be init NetworkManager first"); + } + return INSTANCE; + } + + public OkHttpClient getOkHttpClient() { + return okHttpClient; + } + + /* + * + * Observable + * + * */ + + public Observable>> getHomeVideoControl() { + return mRetrofit.create(HomeVideoApi.class) + .getHomeVideo(RemoteManager.getInstance().getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public interface onVideoPathCallback { + void setVideoList(ArrayList videoList); + + void onComplete(); + } + + public void getHomeVideo(boolean refresh, BehaviorSubject lifecycle, onVideoPathCallback callback) { + ConnectMode connectMode = ConnectMode.ONE_MINUTE; + if (refresh) { + connectMode = ConnectMode.DEFAULT; + } + if (ConnectManager.getInstance().isNeedConnect(UrlAddress.HOME_VIDEO, connectMode)) { + getHomeVideo(lifecycle, callback); + } else { + String jsonString = mCacheHelper.getAsString(UrlAddress.HOME_VIDEO); + //为 "" 是已经请求成功的 + if (jsonString == null) { + getHomeVideo(lifecycle, callback); + } else { + getHomeVideoCache(jsonString, callback); + } + } + } + + public void getHomeVideoCache(String jsonString, onVideoPathCallback callback) { + Gson gson = new Gson(); + Type type = new TypeToken>() { + }.getType(); + try { + List videoInfos = gson.fromJson(jsonString, type); + ArrayList LocalVideoInfos = new ArrayList<>(); + for (VideoInfo videoInfo : videoInfos) { + LocalVideoInfo localVideoInfo = new LocalVideoInfo(); + localVideoInfo.setFile(videoInfo.getFile()); + localVideoInfo.setFile_name(videoInfo.getFile_name()); + localVideoInfo.setFile_md5(videoInfo.getFile_md5()); + localVideoInfo.setDuration(videoInfo.getDuration()); + if (JGYUtils.getInstance().fileExists(videoInfo.getFile())) { + localVideoInfo.setLocalPath(JGYUtils.getInstance().getUrlLocalPath(videoInfo.getFile())); + } + LocalVideoInfos.add(localVideoInfo); + } + callback.setVideoList(LocalVideoInfos); + } catch (Exception e) { + Log.e(TAG, "getHomeVideo: " + e.getMessage()); + callback.setVideoList(null); + } + callback.onComplete(); + } + + public void getHomeVideo(BehaviorSubject lifecycle, onVideoPathCallback callback) { + getHomeVideoControl() + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) + .subscribe(getHomeVideoObserver(callback)); + } + + public void getHomeVideo(onVideoPathCallback callback) { + getHomeVideoControl() + .subscribe(getHomeVideoObserver(callback)); + } + + public void getHomeVideo() { + getHomeVideoControl() + .subscribe(getHomeVideoObserver(null)); + } + + private Observer>> getHomeVideoObserver(onVideoPathCallback callback) { + return new Observer>>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getHomeVideo", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse> listBaseResponse) { + Log.e("getHomeVideo", "onNext: " + listBaseResponse); + int code = listBaseResponse.code; + if (code == 200) { + List videoInfos = listBaseResponse.data; + ArrayList LocalVideoInfos = new ArrayList<>(); + for (VideoInfo videoInfo : videoInfos) { + LocalVideoInfo localVideoInfo = new LocalVideoInfo(); + localVideoInfo.setFile(videoInfo.getFile()); + localVideoInfo.setFile_name(videoInfo.getFile_name()); + localVideoInfo.setFile_md5(videoInfo.getFile_md5()); + localVideoInfo.setDuration(videoInfo.getDuration()); + if (JGYUtils.getInstance().fileExists(videoInfo.getFile())) { + localVideoInfo.setLocalPath(JGYUtils.getInstance().getUrlLocalPath(videoInfo.getFile())); + } + LocalVideoInfos.add(localVideoInfo); + } + callback.setVideoList(LocalVideoInfos); + mCacheHelper.put(UrlAddress.HOME_VIDEO, GsonUtils.toJSONString(videoInfos)); + } else { + callback.setVideoList(null); + mCacheHelper.put(UrlAddress.HOME_VIDEO, ""); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getHomeVideo", "onError: " + e.getMessage()); + ToastUtil.show("网络连接失败"); + String jsonString = mCacheHelper.getAsString(UrlAddress.HOME_VIDEO); + getHomeVideoCache(jsonString, callback); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("getHomeVideo", "onComplete: "); + if (callback != null) { + callback.onComplete(); + } + } + }; + } + + public Observable> getLocalVideo() { + return Observable.create(new ObservableOnSubscribe>() { + @Override + public void subscribe(@NonNull ObservableEmitter> emitter) throws Throwable { + long s1 = System.currentTimeMillis(); + List fileList = new ArrayList<>(); + String rootPath = Environment.getExternalStorageDirectory().getPath() + File.separator; + File file = new File(rootPath); + if (file.exists()) { + LinkedList list = new LinkedList(); + File[] files = file.listFiles(); + if (files == null) { + emitter.onNext(null); + } else { + for (File file2 : files) { + if (file2.isDirectory()) { + list.add(file2); + } else { + if (VideoUtils.isVideoFormat(file2.getAbsolutePath())) { + fileList.add(file2.getAbsolutePath()); + } + } + } + File temp_file; + while (!list.isEmpty()) { + temp_file = list.removeFirst(); + files = temp_file.listFiles(); + if (files == null) { + continue; + } + for (File file2 : files) { + if (file2.isDirectory()) { + list.add(file2); + } else { + if (VideoUtils.isVideoFormat(file2.getAbsolutePath())) { + fileList.add(file2.getAbsolutePath()); + } + } + } + } + emitter.onNext(fileList); + } + } else { + emitter.onNext(null); + Log.e("traverseFolder1", "文件不存在!"); + } + Log.e("ScanTask", "doInBackground: " + "Scan time = " + (System.currentTimeMillis() - s1) + "ms"); + emitter.onComplete(); + } + }) + .subscribeOn(Schedulers.newThread()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public void getVideoPath(BehaviorSubject lifecycle, onVideoPathCallback callback) { + Observable.zip(getHomeVideoControl(), getLocalVideo(), new BiFunction>, List, ArrayList>() { + @Override + public ArrayList apply(BaseResponse> listBaseResponse, List strings) throws Throwable { + ArrayList LocalVideoInfos = new ArrayList<>(); + if (listBaseResponse.code == 200) { + List videoInfos = listBaseResponse.data; +// List videoList = videoInfos.stream().map(VideoInfo::getFile).collect(Collectors.toList()); + for (VideoInfo videoInfo : videoInfos) { + LocalVideoInfo localVideoInfo = new LocalVideoInfo(); + localVideoInfo.setFile(videoInfo.getFile()); + localVideoInfo.setFile_md5(videoInfo.getFile_md5()); + localVideoInfo.setDuration(videoInfo.getDuration()); + if (JGYUtils.getInstance().fileExists(videoInfo.getFile())) { + localVideoInfo.setLocalPath(JGYUtils.getInstance().getUrlLocalPath(videoInfo.getFile())); + } + LocalVideoInfos.add(localVideoInfo); + } + } + if (strings != null && strings.size() != 0) { + for (String s : strings) { + LocalVideoInfo localVideoInfo = new LocalVideoInfo(); + localVideoInfo.setLocalPath(s); + LocalVideoInfos.add(localVideoInfo); + } + } + return LocalVideoInfos; + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getVideoPath", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull ArrayList strings) { + Log.e("getVideoPath", "onNext: " + strings); + callback.setVideoList(strings); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getVideoPath", "onError: " + e.getMessage()); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("getVideoPath", "onComplete: "); + callback.onComplete(); + } + }); + } +} diff --git a/app/src/main/java/com/uiui/videoplayer/network/UrlAddress.java b/app/src/main/java/com/uiui/videoplayer/network/UrlAddress.java new file mode 100644 index 0000000..b61cc26 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/network/UrlAddress.java @@ -0,0 +1,10 @@ +package com.uiui.videoplayer.network; + +public class UrlAddress { + /*主页接口*/ + public static final String ROOT_URL = "https://led.zuoyepad.com/android/"; + + /*获取视频*/ + public static final String HOME_VIDEO ="File/getHomeVideo"; + +} diff --git a/app/src/main/java/com/uiui/videoplayer/network/api/HomeVideoApi.java b/app/src/main/java/com/uiui/videoplayer/network/api/HomeVideoApi.java new file mode 100644 index 0000000..1e20e8b --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/network/api/HomeVideoApi.java @@ -0,0 +1,18 @@ +package com.uiui.videoplayer.network.api; + +import com.uiui.videoplayer.bean.BaseResponse; +import com.uiui.videoplayer.bean.VideoInfo; +import com.uiui.videoplayer.network.UrlAddress; + +import java.util.List; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface HomeVideoApi { + @GET(UrlAddress.HOME_VIDEO) + Observable>> getHomeVideo( + @Query("sn") String sn + ); +} diff --git a/app/src/main/java/com/uiui/videoplayer/network/interceptor/RepeatRequestInterceptor.java b/app/src/main/java/com/uiui/videoplayer/network/interceptor/RepeatRequestInterceptor.java new file mode 100644 index 0000000..7b2c1ee --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/network/interceptor/RepeatRequestInterceptor.java @@ -0,0 +1,107 @@ +package com.uiui.videoplayer.network.interceptor; + +import android.util.Log; + +import com.uiui.videoplayer.BuildConfig; +import com.uiui.videoplayer.network.MD5Util; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.ConcurrentHashMap; + +import okhttp3.Interceptor; +import okhttp3.Protocol; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okio.Buffer; + +/** + * v1.0 2022-07-15 16:16:52 + */ +public class RepeatRequestInterceptor implements Interceptor { + private static final String TAG = RepeatRequestInterceptor.class.getSimpleName(); + + private final ConcurrentHashMap requestIdsMap = new ConcurrentHashMap<>(); + public static final String REPEAT_REQUEST_PROTOCOL = "OKHTTP_REPEAT_REQUEST_PROTOCOL"; + + @NotNull + @Override + public Response intercept(@NotNull Chain chain) throws IOException { + Request request = chain.request(); + Response response = chain.proceed(request); + ResponseBody responseBody = response.body(); + + //会消费请求,导致请求多次 + String content = responseBody.string(); +// Response copy = response.newBuilder().body(responseBody).build(); + ResponseBody copy = ResponseBody.create(responseBody.contentType(), content); + if (BuildConfig.DEBUG) { + Log.e(TAG, "请求体返回:| Response: " + request.url() + "\t body: " + content); + } + //相同的请求 + String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString() + requestBodyToString(request.body())); + long time = System.currentTimeMillis();//请求时间 + try { + if (requestIdsMap.size() > 0 && requestIdsMap.containsKey(requestKey)) { + log("重复请求:", requestKey, request); + //下面这行写了不会抛出onerror +// chain.call().cancel(); + return new Response.Builder() + .protocol(Protocol.get(REPEAT_REQUEST_PROTOCOL)) + .request(request) //multi thread + .build(); + } + requestIdsMap.put(requestKey, time); + log("注册请求:", requestKey, request); +// RepeatRequestInterceptor.Builder builder = request.newBuilder(); +// builder.addHeader("header", jsonObject.toString()); + return response.newBuilder().body(copy).build(); + } catch (IOException e) { + Log.e(TAG, "intercept: " + e.getMessage()); + throw e; + } finally { + if (requestIdsMap.containsKey(requestKey) && requestIdsMap.containsValue(time)) {//请求任务完成删除map中的数据 + requestIdsMap.remove(requestKey); + log("移除请求:", requestKey, request); + } + } + } + + private void log(String action, String requestKey, Request request) { + if (BuildConfig.DEBUG) { + Log.e("REPEAT-REQUEST", action + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url().encodedPath() + "\t" + bodyToString(request)); + } else { + Log.e("REPEAT-REQUEST", action + requestKey + " Method @" + request.method()); + } + } + + private static String bodyToString(final Request request) { + try { + final Request copy = request.newBuilder().build(); + final Buffer buffer = new Buffer(); + copy.body().writeTo(buffer); + if (buffer.size() > 4096) { + return "-too long"; + } + return buffer.readUtf8(); + } catch (Exception e) { + return "-"; + } + } + + private static String requestBodyToString(RequestBody body) { + try { + final Buffer buffer = new Buffer(); + body.writeTo(buffer); + if (buffer.size() > 4096) { + return "-too long"; + } + return buffer.readUtf8(); + } catch (Exception e) { + return "-"; + } + } +} diff --git a/app/src/main/java/com/uiui/videoplayer/utils/FFmpegUtils.java b/app/src/main/java/com/uiui/videoplayer/utils/FFmpegUtils.java new file mode 100644 index 0000000..9cf6239 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/utils/FFmpegUtils.java @@ -0,0 +1,56 @@ +package com.uiui.videoplayer.utils; + +import android.graphics.Bitmap; +import android.util.Log; + +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.ObservableEmitter; +import io.reactivex.rxjava3.core.ObservableOnSubscribe; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.schedulers.Schedulers; +import wseemann.media.FFmpegMediaMetadataRetriever; + +public class FFmpegUtils { + /** + * 获取在线音频时间长度 + * + * @param url + * @return + */ + public static void getDurationInMilliseconds(String url, Observer observer) { + Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(@NonNull ObservableEmitter emitter) throws Throwable { + long time = System.currentTimeMillis(); + FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever(); + mmr.setDataSource(url); + int duration = Integer.parseInt(mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_DURATION)); + Log.e("AudioUtils", "getDurationInMilliseconds: " + (System.currentTimeMillis() - time)); + mmr.release();//释放资源 + emitter.onNext(duration / 1000); + } + }).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(observer); + } + + public static void loadVideoScreenshot(String url, Observer observer) { + Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(@NonNull ObservableEmitter emitter) throws Throwable { + FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever(); + mmr.setDataSource(url); + mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ALBUM); + mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ARTIST); + Bitmap b = mmr.getFrameAtTime(2000000, FFmpegMediaMetadataRetriever.OPTION_CLOSEST); // frame at 2 seconds + byte[] artwork = mmr.getEmbeddedPicture(); + mmr.release(); + emitter.onNext(b); + } + }).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(observer); + } +} diff --git a/app/src/main/java/com/uiui/videoplayer/utils/FileUtils.java b/app/src/main/java/com/uiui/videoplayer/utils/FileUtils.java deleted file mode 100644 index 52f345f..0000000 --- a/app/src/main/java/com/uiui/videoplayer/utils/FileUtils.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.uiui.videoplayer.utils; - -import android.os.AsyncTask; - - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -public class FileUtils { - - - -} diff --git a/app/src/main/java/com/uiui/videoplayer/utils/JGYUtils.java b/app/src/main/java/com/uiui/videoplayer/utils/JGYUtils.java new file mode 100644 index 0000000..aab1d2a --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/utils/JGYUtils.java @@ -0,0 +1,104 @@ +package com.uiui.videoplayer.utils; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.Environment; +import android.text.TextUtils; +import android.util.Log; + +import androidx.core.content.ContextCompat; + +import com.arialyy.aria.core.Aria; +import com.google.gson.JsonObject; + +import java.io.File; + +public class JGYUtils { + private static final String TAG = JGYUtils.class.getSimpleName(); + @SuppressLint("StaticFieldLeak") + private static JGYUtils sInstance; + private Context mContext; + + + private JGYUtils(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + this.mContext = context; + } + + public static void init(Context context) { + if (sInstance == null) { + sInstance = new JGYUtils(context); + } + } + + public static JGYUtils getInstance() { + if (sInstance == null) { + throw new IllegalStateException("You must be init JGYUtils first"); + } + return sInstance; + } + + public String getDownLoadPath() { + String path = ContextCompat.getExternalFilesDirs(mContext, Environment.DIRECTORY_DOWNLOADS)[0].getAbsolutePath(); + return path + File.separator; + } + + public boolean fileExists(String url) { + if (TextUtils.isEmpty(url)) + return false; + if (VideoUtils.isUrl(url)) { + String fileName = VideoUtils.getFileNamefromURL(url); + if (TextUtils.isEmpty(fileName)) + return false; + File file = new File(getDownLoadPath() + fileName); + return file.exists(); + } else { + File file = new File(url); + return file.exists(); + } + } + + public String getUrlLocalPath(String url) { + String fileName = VideoUtils.getFileNamefromURL(url); + return getDownLoadPath() + fileName; + } + + + public void ariaDownload(String url, JsonObject jsonObject) { + String fileName = VideoUtils.getFileNamefromURL(url); + String urlMd5 = ""; + if (jsonObject.get("MD5") != null) { + urlMd5 = jsonObject.get("MD5").getAsString(); + } else if (jsonObject.get("app_md5") != null) { + urlMd5 = jsonObject.get("app_md5").getAsString(); + } else if (jsonObject.get("file_md5") != null) { + urlMd5 = jsonObject.get("file_md5").getAsString(); + } + + Log.e("ariaDownload", "urlMd5=" + urlMd5); + File file = new File(JGYUtils.getInstance().getDownLoadPath() + fileName); + if (file.exists() && !file.isDirectory()) { + String fileMD5 = VideoUtils.getFileMD5s(file); + Log.e("ariaDownload", "fileMD5=" + fileMD5); + //后端还没有完成json字段的MD5,暂时用文件名获取 + if (fileMD5.equalsIgnoreCase(urlMd5)) { + + } else { + Aria.download(mContext) + .load(url) //读取下载地址 + .setFilePath(JGYUtils.getInstance().getDownLoadPath() + fileName) + .setExtendField(jsonObject.toString()) + .create(); //启动下载} + } + } else { + Aria.download(mContext) + .load(url) //读取下载地址 + .setFilePath(JGYUtils.getInstance().getDownLoadPath() + fileName) + .setExtendField(jsonObject.toString()) + .create(); //启动下载} + } + } + +} diff --git a/app/src/main/java/com/uiui/videoplayer/utils/ScreenUtils.java b/app/src/main/java/com/uiui/videoplayer/utils/ScreenUtils.java new file mode 100644 index 0000000..facea62 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/utils/ScreenUtils.java @@ -0,0 +1,32 @@ +package com.uiui.videoplayer.utils; + +import android.content.Context; +import android.content.res.Resources; + +public class ScreenUtils { + /** + * 根据手机的分辨率从 dp 的单位 转成为 px(像素) + */ + public static int dip2px(Context context, float dpValue) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (dpValue * scale + 0.5f); + } + + /** + * 根据手机的分辨率从 px(像素) 的单位 转成为 dp + */ + public static int px2dip(Context context, float pxValue) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (pxValue / scale + 0.5f); + } + + public static int dp2px(Resources resources, float dp) { + final float scale = resources.getDisplayMetrics().density; + return (int) (dp * scale + 0.5f); + } + + public static int sp2px(Resources resources, float sp) { + final float scale = resources.getDisplayMetrics().scaledDensity; + return (int) (sp * scale); + } +} diff --git a/app/src/main/java/com/uiui/videoplayer/utils/VideoUtils.java b/app/src/main/java/com/uiui/videoplayer/utils/VideoUtils.java new file mode 100644 index 0000000..7d912c3 --- /dev/null +++ b/app/src/main/java/com/uiui/videoplayer/utils/VideoUtils.java @@ -0,0 +1,82 @@ +package com.uiui.videoplayer.utils; + +import android.content.Context; +import android.os.Environment; +import android.util.Log; + +import androidx.core.content.ContextCompat; + +import com.arialyy.aria.core.Aria; +import com.google.gson.JsonObject; + +import java.io.File; +import java.io.FileInputStream; +import java.math.BigInteger; +import java.security.MessageDigest; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class VideoUtils { + public static String getFileNamefromURL(String url) { + int position = url.lastIndexOf("/"); + return url.substring(position + 1); + } + + public static String getFileNameWithoutExtension(String path) { + String name = path.substring(path.lastIndexOf("/") + 1, path.lastIndexOf(".")); + Log.e("getFileName", "Name: " + name); + return name; + } + + public static boolean isUrl(String str) { + String pattern = "(http|https|ftp)://((((25[0-5])|(2[0-4]\\d)|(1\\d{2})|([1-9]?\\d)\\.){3}((25[0-5])|(2[0-4]\\d)|(1\\d{2})|([1-9]?\\d)))|(([\\w-]+\\.)+(net|com|org|gov|edu|mil|info|travel|pro|museum|biz|[a-z]{2})))(/[\\w\\-~#]+)*(/[\\w-]+\\.[\\w]{2,4})?([\\?=&%_]?[\\w-]+)*"; + Pattern r = Pattern.compile(pattern); + Matcher m = r.matcher(str); + boolean matches = m.find(); + return matches; + } + + private static final String[] extension = new String[]{ + ".3gp", ".avi", ".flv", ".mkv", ".mov", ".mp4", ".webm" + }; + + public static boolean isVideoFormat(String filePath) { + for (String s : extension) { + if (filePath.endsWith(s)) { + return true; + } + } + return false; + } + + /** + * 获取单个文件的MD5值 + * + * @param file 文件 + * @return + */ + + public static String getFileMD5s(File file) { + if (!file.isFile()) { + return null; + } + MessageDigest digest = null; + FileInputStream in = null; + byte buffer[] = new byte[1024]; + int len; + try { + digest = MessageDigest.getInstance("MD5"); + in = new FileInputStream(file); + while ((len = in.read(buffer, 0, 1024)) != -1) { + digest.update(buffer, 0, len); + } + in.close(); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + BigInteger bigInt = new BigInteger(1, digest.digest()); + return bigInt.toString(32); + } + +} diff --git a/app/src/main/res/drawable-hdpi/menu_back.png b/app/src/main/res/drawable-hdpi/menu_back.png index b684d572848e5096ca4b390d26ee2286bd36ddf2..debe4d07197ea1c005f5ab49c3afde75e1793bad 100644 GIT binary patch literal 1774 zcmVPx*s7XXYRCr$P-S2M{MHmP0XZCJmF!M6gOL^m@0CnWQFt0o=?q zdpkS3^Y)(Eo%?=vW^ebpR|0v{DgmO^X!5~84x-sXkb~qPnkAswaPk?FgJ_n3X2Z$s z44IgixS`Q#^pr}aL;d~zr*v`29LU(%*e!)ZVLJdku?XRHO6gNNpkxYUe0+QrBEAU# zt1l7$E0ogbl19l4NWEUaJ&K~80I=qAq1(3I<2cUYBvCQ}QmfT&BZTZEgxqg)jg>i%(OR zgHAQb=;-J*#bWV2Q4B=f!Wi4t>7!m|f2jotf}lhQ`9KuIvaCVZb$PwkEtMcsQ&U&Z z%*>36Vh})>Y^A?6jglR=QAl)Ej1uv7*2{}v|25{QmF)~l1S4zLR+%U=Tv? z^E~g1EMO!8B7=d58yI6>W(A|;ATk(H6y59l{#RMT=qQK`Myu6YU#V2S&KgF?Kx8lg zU>&9On=E2<1SAZ@p8#N$V8EHih#e#h!@mHaO9aERto5$zW^$QYoKI|bd&4lC0f3SS zMixI!T`recK*BJ5832SHF>bY5y_HHO6Bm6V2WMO${4YLey8)Pfqp;okztrn-f$&F* zpB5NU!?x{`<2X%$+Dw$h0uls4KOuyFt!fFRcyW4q`r6^);f6r1@g=c<@YI4Jc%BgQ zl3;=tn$6~Q)oOK4u-@3R*g$w<CM``0c9EyZ)A+kwtEAn zz1}ep1(b8PZQtxT4!`2hOzS9!0?OHC%a(Qb_4S?4ib%&n6j06(LV7&U`#TFLiGV1e zoSvPXy<=!-Xxem?#6T2KPBj{h)dK?q{Fc74Em05!l#@{ut?_;ToT(y-gD9Y!uq z>$+!6M9~670p+-D+jl#T^QUPj+JGpa9BVe4>#Ei28Iw@70#QIYy72YyAEuya2O^6? z2suIs+333NX%kSi1d&BS#KVZlpBvHUNA*LWm){3!XM#Iv>6Mcfbs^V^zlSB((psd zOASco`4k-<&o+97{EsP$f`~6N#$H(JL9mqmnE(-8zVaEeltW3OZ=0EtpFNo z2p%ScYzKg~i#9feh)?QpJ(8IvYq2E%S9^^{V>1Bs5JL9bw!KT2r++gEvgBzN;|6k& z7{gWBbPl4DT8w>ikQl>N*>nz~l3I*?a*!CqRoQe7qLNySeR7Z(!&TYzf4!i2gZ3n@ Q1^@s607*qoM6N<$f?L=!ZvX%Q literal 1484 zcmeAS@N?(olHy`uVBq!ia0vp^;y|py!3HEn*%EI6DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49tp|ArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XR4cQU}&OXZmDNz zYG`6%sH0$HU}&swV61OwtZQgwWngJ#XsQ4ONh+i#(Mch>H3D2mX`VkM*2oZxQ#zd*s+SwSN_GcP5- zyjT;g+}GF2Gq1QLF)umQ)5TT^XnMv>2~2MaLa!xGy`YqkTL84#CABECEH%ZgC_h&L>|?7;+-@<$ zX&zK>3U0TUpPC0u>_xy-&6(IM!@$7g=;`7Z zQgLg`bYG3MK#Al1w|jX_H*PrKcInKiq4df1mUG-e>#g^FG@=pZB_I z-tt9}8X`fAxl%Puhu3Y&P7FBwR44jTXM*q)uKTliKZb1Jwd1~@q9XLtRP;RCZWGo+ z*O}c`Bq;rx*m}8jz3iD+UIB%(nq(&^)$~4?UZc@bA^3xPQplaWV3v8f znl1XGT-hUmf5()s<-Yr&yDctDV0DFbgy>goucU$xQHvvv>`rAlaL&=rqI&hi=ts>~ zX*d6U?$A%Jyn9`&M5d(cm!Ssx_lIS-8{xRe0yRD6 ziZb&HW*Gb4W@=ARD2}}H^ofSx_hS}8OtYCEn#6psJ;c21P*s%K0r7{~hvM$!KjwCN zG_Ois`Q!Qr9zUiTgw}=~F=V}-Bz@KGvQbv@6E0bsMlO--NB8O(r0cBXmA&%tQ}B+c z+T9C{P6d=)=s6uSrS^`g*mFKBi)&BCJBk!@=-a}YWv|}+m3row_I)c=QQ|8 zKkC}=Wbb0jF4Ghv{V1h-LD&`Jj7*1xyoI$*x@`P0{tsQ(ZBkqpv4-Iem%Oa*tDKI> ze;>bnN*#cC@iB)n|b zZWP}Z^rOwkecjo|6L`4eo8RuY^x7i%FI1*VEP)}DrE+gyLRC7beD!qob6Mw<&;$Tx ClP44a diff --git a/app/src/main/res/drawable-hdpi/menu_refresh.png b/app/src/main/res/drawable-hdpi/menu_refresh.png index 5c3fab232b340d4a0b99c6428eb4ea6c6183df91..71eab06187dee55333a1059f921b26f5e1c4083b 100644 GIT binary patch literal 3577 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 literal 1926 zcmeAS@N?(olHy`uVBq!ia0vp^T0pG9!3HEdxHAHPlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6H#24=;~kcg59UmvUF{9L_6kQ%*;+ybC(1_m4Zih{)C?9>v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTcwn`Gu2HtFf>sxx70H< zH8im>)KM@pFf`UTFxEFT)-^P;GO)BVG*y5CC7^9ZDQQ+gE^bh}fIM5JjFOT9D}DX) z@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal z@=Hr>m4GgVcp0+w{G(ayiGsViq&CSxq)WFr;$G&eP`1g19yq1O$kUQkNNEdbi=l3J8mmYU*Ll%J~r_OVqaZnrq& zG!Lpb1-DyVaO%|uIz}H9uSoF>69Oh45EGtifgE_cPt5}+_99@a{^qhx513hgd%8G= zRNT4}ne8DGC^B#EwlgM+7Bz7gHw*Ecjk!2!6FaM;E5DM~rXH^oQ@TEdJF5KE^iY}{ zr;>W1|3b$Bjj9!qVOeP@DME`}{d>7i|4O`Fe#^LI*O_&z->tdac;2}9*||IU?{|K` zQ{2zD{r1|gZZUe{I#)^*IA?J5u(vV!J>b5;xQFpoL(v1p4~}(oe7vy7mo)z(_wq5Xg!)0)g zu}Y-c+U0i`^P3#N!@!ZFIYU2EDDHu{`jdCx7(yUHdEJMH_Djs%JNO1 z44?2@`=Xw2JsMJaPyWt&BHgOk9plISd|sz5U&P`Ge;$_|UVW@%oftp&#|@X27EM{Q zFcG_96ULXpUF^|>8bvC*@I^)ZpLm?+G=_3 z+aEuzzeR!T*WwFbdJ5Z?E3y7AJ9+eE^#;Z7rqUgeVM{;9X@5_S?pk+bjhMCYRL$v! z&$;~PR$OG1w(G4=$UGk9w?10}Z=TBW-V$|3{pQRU!Vh%sA5RFMk>b5*&fGf!+t&P3 zX=&v8C^}D%Bic%;{hRQ~om281rWb}ji(e#hb#;LLO|fMv7Y{0Vw(stisSL85Y{dJ+ zDDqyL_~Yg?TN_p@sl0F03I?haT3nGj$H6k3_gKayPxIIrMhBlyUawm+_r_ecj!9ip zRZbSCx2}{?>8^eEHRFSnmh%j;ht92HlS(9)`xMTIeiR?M=xt`ZIi%&U3JSoHQZl>(`=q?w!|HnjLYMc(tPUwZ~x-|5U54{-Yw|>9cC= z;y;TN?e^7Yj+M#}@2C=IqZpJi$P>XPJ)572Fj|b)xqF{;hj}Vb7F+%RA0|+6bx{Jzf1=);T3K0RXB5@%R7$ diff --git a/app/src/main/res/drawable-hdpi/menu_selected.png b/app/src/main/res/drawable-hdpi/menu_selected.png index 4090146957f6cc3d02449533f3841ac4779e1c76..d86933bd6448b87cfc5d07957a2f1ab92396a574 100644 GIT binary patch literal 2323 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 WaBrcq(0vO40000gI>8mWQBfp%MXHVR^^1 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 F{{RbvbNm1R literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/status_play.png b/app/src/main/res/drawable-hdpi/status_play.png new file mode 100644 index 0000000000000000000000000000000000000000..07238d832dfaf2034a4527cf55363240b4b73079 GIT binary patch literal 4702 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 + tools:context=".activity.main.MainActivity"> @@ -48,7 +48,7 @@ android:text="" android:singleLine="true" android:textColor="@color/defaultColor" - android:textSize="18sp" + android:textSize="@dimen/sp_12" android:background="@color/white" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout-port/activity_main.xml b/app/src/main/res/layout-port/activity_main.xml index 5022cb9..ef24ea1 100644 --- a/app/src/main/res/layout-port/activity_main.xml +++ b/app/src/main/res/layout-port/activity_main.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".activity.MainActivity"> + tools:context=".activity.main.MainActivity"> @@ -48,7 +48,7 @@ android:text="" android:singleLine="true" android:textColor="@color/defaultColor" - android:textSize="18sp" + android:textSize="@dimen/sp_12" android:background="@color/white" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/item_tiktok.xml b/app/src/main/res/layout/item_tiktok.xml index 9bbebce..d87d511 100644 --- a/app/src/main/res/layout/item_tiktok.xml +++ b/app/src/main/res/layout/item_tiktok.xml @@ -1,12 +1,38 @@ - + android:layout_height="match_parent"> + + + + + + + diff --git a/app/src/main/res/layout/item_videofile.xml b/app/src/main/res/layout/item_videofile.xml index 3b305b9..e0b5003 100644 --- a/app/src/main/res/layout/item_videofile.xml +++ b/app/src/main/res/layout/item_videofile.xml @@ -6,42 +6,58 @@ android:layout_height="wrap_content" android:gravity="center"> - + app:layout_constraintTop_toTopOf="parent"> - + + + + + + + app:layout_constraintEnd_toEndOf="@+id/constraintLayout" + app:layout_constraintStart_toStartOf="@+id/constraintLayout" + app:layout_constraintTop_toBottomOf="@+id/constraintLayout" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index b09ef4b117d0df5e648a97cff5dca4bafe9bbf27..999ee776b8f95dec6a487d34f6d245abb5695996 100644 GIT binary patch delta 6837 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 Ca3Gif delta 3089 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 Ca3Gif delta 3089 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 Ca3Gif delta 3089 zcmZ{mc{CIX8^*Q;cP1XsVI1>zc}veV4I~ z8AG;Y-MgM&lB#v1DQ zYe)T8e{%nt3|f(I-I=qTUNCK_zNNVi)KD8{prr+~Ft>mhSX{gaftW*dw9L&7!SaZR zTXuFv(5Qfzh@i;3Hc%7rFGnNrW}wmkSlI7aLJ8-E{|7*RcLbKdbJsB_*eLM#0T#bw z2^w4w)b#-zje`U5*#>IvjF{W@j<0QOy#SqjBXFlfRpAmXdo_t;>D6pCSf zT|v}Z@)$(2B?loh&l<7I}^Dn*q2#mTET@VU_`DuMiQ%}w*f9@F9zF5{|{B~k7 zGdof_(om)>?rzWK_5<2S^x`B=kcg|^Iyp%DA|(KB^g!QC0@jT8NJw#_2tN3U3no8g zv5J2eTGsS_Fgoc6??SYdWY?yljl#lclCK0xqvmgsNFY}uBj26P>@TKQsSEvoX6Q>? zP|)MPn5mT`3$mc_;6n2-KfF^8K5mScWMPpLJ$*{sQ6W?%vY^JQk^)l8Fhy?Bd&YHjUux+3e`BN^Tf@rlDSAae(+6QOQ*x* zk4wT%;A6K(_yX%$F-f&YFtT@341#@CQYI;d{ulxhL93^nbR(k9+5Q#wV0paURaN8P za>5M}O&JT#eVE%>FVu08+QIY@D_FBolWsg6nb9^&X{qtHQr%ZyRxfxz{q1O&wNyra zr@SCRV^@TRx4LPusR0Sinc|v$l>tuc*S4Rt?+vBLwU_d!!V9+fo}TE|EggNf^cNT3 z0?jjFQ)l7c0S5q;rVKA|>_og!S3hhV7~)>##L}Z$R*Ew---zv61qJ=-Ohz1&Z_|vg z_{7zbOnm2F_mDr<{tIew&t*is{#*3H!{zH8C1kkK;Dw))6B2v2akf?JWp@l7iHW_G z8U1EuVdDJdpVp#c_15&3(FKXxh(+I>uu%Jl2zZNhn)+}BY7iN{5DHV(RltU@Mw*&R zNYk_z9iF*)58L_>A<0ShQ=z>}sYVO2Mk!*WNP6bD^HdrGL=~@Tq*2!Ui>H~WIJJ^cF#Z~Ip0 ztupr^_phkYb5iF@hTGpRDIw2@Qx`j?ls3O0&KUFLmtM8<%WyDYo;Nn8isP$}Dn4W- zI;W`X@0~ORK1S$90rb}3Z1gn;?U5_>HVqA)x0#9p`7z#t1`8ce(uRwG%{O3m(Xz77 zbUIo)Q*o=7oGwS9o0ZDwP3r!oh9OI-3@c$mT@%Vzual6?>s?EJRg83&x9M_t+B>5B zC4*CKt@_G9x0rA=FXo)9L5atm8kp{Bj39wd4d}Mec%1-0g%jBou790+Bse?tb zJiOtnJfwzRg*}fQXPK_W4DbEPvgo@<>z&!MJ)rDZqODf13(FsLX<_*;pWLJLs%qKl z1Ju?^E&STM+S#$*}gP5^&WG<*RINJBi00>}G+dUq=cKJp`z=5?E(|^;ph@Yb6)!jxvWn^Ay0?Wyb zJ!2WjENMIg!MRw;HsheibDKXWBcf%F@K3PBigCV=$Z*|xp5aNAx{0sD3(Z#j)- zgnJPuwgHQ)QkkE3O!F5WX^?TSe7;4YifNw9!f%}9$^33{YF4VQy&Pa?;$4rNH&aBP zmk&?nK51(zBBIU79EowOBS703A<5SLZ+T_)NIGZwb)oip%2lgU1M#1Q5~jm83k8Kg zDLrh|wVJVYYGqc`vKqD(rM8>Jybn;l-AxhG-P4wr!Y5oF09_mWzm@ z7`BU^T&*k0R3etyg^4Ljwu!&DqMx%My94WrPHaXB67Xt^m#3;LKcNCDeMDh2IYgAfJ#D()y^8gCTA+JS9n!pNF<%$=Y@I%PStMW8^R@BbkJ4tMx6FuXh6f~-- zyuR|48s3J}#$jA3bDnLs_2VA6i0pg=wGV+?$v~!?bTLM^kG~i{&d9i=v=sk^A?c8D zw`VL>*b`-98gcR85G&i|NYC6o4qkRs8B`4i?`zzX7~3Q~#vA}T4hz$pIz~QrySHaT z8=sZD8U}gP#IX$Z&)VKFD>4-(q_b=qA;Mu^Wwl&edj4vlD9MgPw{sXs)A+;GB8^dx z5vjku=l{JwxeiU6U-u)n6F;O5Zq<2Q;hpWXOh7&221==elbX^e(eh^%`Ey_2QcU|` zG6c{yGgmpQ5ye~bPt>Y4%JsqNQ=WpNS179wevnNnOhmZYZd)WS+Ba$F zT>cA2p_d>s?8~oK&e!crWxkzEBbvmUJRq5x)HO+^~?}me2dO+K&n->#+Bd$z|87=Hiv9{%T#>pPhPs7ZZxHWNR!Tl4Y!8OT;vjB_l#ep=@J@UQyPvWG&hEK|)c+kTq-8 zB-_}xhK3OnqVK%V`ThR<{PB9d&Uu~Zecp4I=Y2fxeV&L$X-mf0SetQkoaF$4K-?DQ za0LCE{NKaQN`J4JE`F+&lwowzxU8p~7aI@#7aXMIaM7|sT3`A=Y1;lvb?rch zs^I;eZ=r%y((Y&bm=`aX03R&MygTxSPsYsF1C8#EMkE`(N^>_#1z9{9eI0$e#)^sc zT>s^i7Y{5R_oXQIW+?XVZ)o8t={N1xc5-F|24@xC7mbsE?q8GL2eXu;@HvVuv7t$i z_n}aGXetS_d7BCSahT?_v9C?2E+rco<;VLflw~ehwaAY3^8#k0E7#{@mVZ&KS_Ur! z)afSSa`7G)`fSrwSFp9+sl7Of_M@kgj{BhSfUFk3A`0)=mLy@;iUw0%d2OxpF*5*i za!EGQ?FNw1I%dTAIjQBZIumyYm47Fz;^;9RY_ir<&w>E|_Jn5R>MS=hqeV4lj|FR&sWZ%3}N}kJ2PPJ~v ziJzfAeF`f5S`U$9d;Ev1!n2PRgmj@~rg#pGMMA9TCpaTq3a|T;%n)HY|J0fbr18fc zG#^>3g*L0ICYr5#jyuiASLt+b9jLZ;3{oY~(;IKhHi9898#SxQjGRO^e_{-flRL8* z3(SbOV^1kbB+(=kAqz8~L7=K?`<(jJKrt-boS`%ORH35;_P)UE-{{xIgzr@4tS6#Y zQ`MZkxM7deBA@Gqa1w#KZQGD2^5TxM)QVGE|I{_HI)W2E7)|=%6UUg36A>vQ-|RW4 z&+iQuoB%J>XVWl@oSyMC38&0O4448iyqHe=)I8jBYvXhChZ$TgEoJs6D0X(o?RRV5 z@K&~yzSwvWe_K>mAbJ!T!MHpUniSIj8B3xCGPJ@n?4nM8?EaZHzU4L zs@5-Ndu+T{`JoN>>}1BI2a-zTQ=~BL63yi11hBz#>_4-ZgY@d1PAhS^u`~nbAuZQC zduku|2liBV;9_Md{3*_{y*PEFV6py^Hk`@<X9Y<107U zrAP{siq;4cM*ryoZMC~k04oJlTSmGOC*mHh=?v?ff#LQA0a|OYiE^Z5t$ME1ou~E) zmhfGxGojBFGuaIk)(_LT#@T8!${g? zBHWBakhQD(l_@)&jRF?yP-gb_$lgz>-Xx~W7+x=PaB4TwLj_n^(c^?Xf#j3lLhsz` z50XJw)O^9+iQe=g6B7O1S}9O-NHK>XrS?1uz5*+Z z-O5uF<|ov=8>{CLs3R-FO)%=1>rQw^x`|!5O-rzR)NO?uTljY-7{9h!u5-6}^K`iK zIS7vvgy&&^wNbD%#nwY2MG>_fnl!K#%JDI#=ZSy}+uyS_4Yx%#PKGu-cRA8&aGpti zq8uK<0#AjeRdX(jCb}*cIPrAWB><&jb>~u`{{7vED7tZ?&#n0;aRiF7$iOv_7bn^d zkGZ~J39jgi@v*3|Y0|PjlnVG&s(x1u!D{hw2Y6X{=dL+8Ub?^yZv=^Qy)>RhWD}}8 z|Ja-)#3Yn)aG!0cY-$;1kqm9M>4BgsY)tOo!?&k03N1!$R)~`lt2o`zhSkQq5S0#G ziVUjU=vVPou*=no*6rMxwfg85hXGKaWp?r`Jqk8NxfUeD1OXYb0Mi|9j$-g~D|iOb z9ev5TINsb!z0eXYOiDc(VP(y)m&GJqz~A|Dc_dZ>RsP6IHOq_c>BjDNdmH~sEK;B# zfx4k}QnADeOuO0Qyg8U~P*^g+s04M#-&x(0{n~^q7?_D^sqkI-^34~yHf zx@S|N(vB+?zip_LY!^q>vNa064~QnMAS^PVe9Aw91h{Q>AhDge_UWs)?}bZIA&h@H z62{@iaB4ttJkmoe?X43dsp`(#WHH5<&CMTu=?ONI--MsjUS&X~wsW_4y72IwTzN^{ z-CHeKt%2sHyYhaHXTvT(+GNf?ob*w_R>-|WL}fxFy8wT-0Uz(^!bxu%AP*B1QnRQw z9-0cZQE$z=fH2v6@J6n+BV*Kqd-zYQIO}wn1sFd%SwmF_F`oUNATaN0d7P+}Tp@2o z_vBST9#?uM9%);9x9h{B=ROq$JN-1~?-r0pZ+Is?QFiU|IU&ZVU5;P77tl7Tfq2Go z<1V_6E*l@6IS%B_);j=4VLaJRYY8U9xymw+zwbB@Ztd3m)W4Q|Umefbg?nKE?pr#3 zErrSs-%B{vlG^k~rmJQ-0+){+(>S!*bAP({*Z-VYstkW;p&AOhOE&dk?O#IEHh2Nq ztKdwwn1bDnytb%B>xIXhkNp%B{|->TWI*rvI&Jgx^t;ZKK8mO1?w)_aZ8p=rqWq>Cu8M-s-(P!)96yTsekOI&a^?PoNb_j|1N zf6a7;C2_&8KOf85|83kd+IG?oflTFMBcjQkReQ3iNZl4>ffs%wBERcow1YJaI*aI`#&W0C7lMVk)(ZvQhJi}2-R z02bL)E?cAL*_Fsrzljq(LQOcE*Y`yJ#I~kXVv^(!&VuCc^(eER(R1g$eSh5QoXg-U zw+hbTsajvF=kQB#xtBncRYQECmUkm_$nE18K&Qad?_4%12vjV_$fEBn;wR-e|5{Ps zL({!`CzrY^Ti#O7(wCKCVT_aqZ5uFeyHN0l1erF+iMq4a#1>vG4RE)rXf3rt1eb7V zQ1Cx$&YYPAcz-&ie41xCnwQkhGuzxpH{Z3WfdB^&uIyLBZkBL}@OpR@8ziHGBvHUX z6Zvxa!Sc;-V~KMg^-57=tVy1mDe(DQhxj*7DTz1uCR3o#G9IYC7#b2qzaT$rGv<2I zT}qB;%DqA~^Jo-~t+=V-mNSb614RrpGW&CteV7b!yaE&(8InQtp2za_jjXU+h*Xf+GyWJ zy|QjJ|7BB`*DY^JP7U{N(OdO(&g+CgwlR8{*QKpBWfxTzyBb2!ndeAu3hv#^j4Ryr z^WcNpH(uruY(3te9}JA3kj@#j>JcCh75%`AOq zf2Ii4`9#XGZzzm{)MQYx2a4AmCG47^b&cX7M9-g(@MRa*B0`6crf;s#O|b4>h&^+E zn(JgUr88!;uB5!GvmDu`a6ar>U(mbwu;|Uqi;347WBi-m+<3PYu?rkc6(mNM@2`>t z+Hiqylhobq_6NFlA+ExH&6;?brNUIo%e{F~y)n*i;O}kvc^q=BdHdc4lXO~F>d87! zPnS0)BmO6$a9|{zm(&5cP#N-Bc_7^1r)~jkXGkNAGWFwetFWK(Ny?~lMSG}zKw#q% zY%HXU7c{=Rs<&PQ_$EYnEi|0j{#yvALN>JctZt;|nzo08PtaG=>&A>p$b5glamVoS zsNekj=M!Np?Xi7wHRo5Hprp=F;gRp!x>^sekSY*?zsVgITD!{?_;=oJ_~iFR*YzLx z$N;o0CaIzltk28Lv$|flNcde6FVA#)zh%yJBG~>zLL*RbWq5-_pqi5ja=)?EIQX@# zMb`qIQ;F%AWr|FIVGCvY+cFWU|8{wP|03rbOfhr%O|L(rxg=^Tp?VIg%Fep5fqSU_{qfZVa{5?=e;80E@UJ0{8ey;u5;gtDEi^q5RnB~D;ux*W5HK+ zM@=<71?qpT2H9L!LO7I%dLuB`k$5Ad_4l`Bflfj$#=)LMvn3n0fWVyaCh%bM1nb_k zrg6uN-IUD?)IdWLn#=H)fKV+V%4u ztR%KNT!Zu+i=wOBE`_t7I|>No&fAOv8pK;z+5T;r2z!y0L8Ky{$ec*$OJ*|AT7mH!1>Xt?6vG{C zJ*&xAOYt+VQV*jJYvd7yk5)>F2L#q$?&A)rH(1JfQx#y)oGofyVIz}u<5lwPcTu!5CP}xm zUT1ry@GZIEWu#~DgY@tT7Hy;ygaVxUZ0%|k{2Gw%J2l1p*+ouLN468S3z=<%{*b?u z5Yo`R!O^NNHAPc`t2Vs+=~ z`9+kwzk&E-6x`co%J$@dA^-l@k#Pep>yG`eHcqHj>FF0MuphE#4Su&VJ(~a^JqA64 zO+VmVAP<|09>}ftt{w&{YgOfT$QCq-DWjM}hOJH(CI5vS(2INaOa6-}`aZnoa7#%= z|58orU+fkYQX`LIZ@bzqeRjYC{Ao4q7bfY0ZSxa>-m22u*^#Ck+1S3I_A&b}`?ahX zUQi;foEj!P0q$e!nuqb@3;@C^Y~~T2Le^_Kn}u3)rfGinw&&F(ngz{iTd8-xg9Sn4 zp_G@=X=hrEUtCsBwFIa4pJ6#u7VMUK_w<+~h2dB?cVE{x`}wuk8Bk;=cR%i0lXCJl z;Qt&?0O zLF3=AWdGX1O1$sJwI3B<8yt~Yh2?6I++5}@9eSLbu@){5D<+hmFJP%;!ZkXP7|E6Q zz$Plsde@_Q!Zu3cpCL?oiCPT)_Tuj_texl{aZn?U*Kg+I9YsoTIeVv2^Fxz2P9M6$2O33Y*62exc}HfjZ9y z4JDsQQgIdT(XgrKai4^UePf;ByA%!9mJg%nP}Ji;!~UDHXVtcsb9KQo?wJ-~xEkva z613u39Y3z4&vf2XkHJLdeR&st_#Ls6n){nAQ|*#W#V8$vJkVep2pi@SefTcFGAX=Sv97u)7F` zXrp~|iM?T+Je`>b8t!WhUo)w>=7=c!ADmw%wSq@4P~wcjcDD$HJe)sp<+tYf2dKID zX0;br!F50_+t?iK-@ZgWyvRB=h1hI}u=e!FG7GVoMyH;1hR1$}G zVA4Lf!JN+9XmsXVjx?018s>WNMp)6fGKE2}Yo~|`d4ZJd`?J4wAn}TGmP`M29MQ~g zgA~p__}G6ynIidjefr~9`p6(`|NTNL%ztz8Heia4x5z3|I92Ua9KtsR>;T`3Ilv*m zt<*C@pr`x)1jW{ibLa@|uiz5r+LO z{Q;mIbVhGlq(R%GT4>9a{?u6>Pe~n0Q=vY(?!;Dr7_|p%?$8^0JiD!Jb4=6x@O9F&F-mwRLtH{KS~tY$syS9tmSTHVEVciD$t<#dHDj+0 zF1OPEb62QN?iDRt=Lbs}Y2!(?=B=neBTaWX`3V`lgpWSt%-Fu5-mFl*XJjc+`17W5 zjEx}!a-10HSfchyqb%&s<;6G%|8qddz}BMn10&m1)9{Ru23xG}kR#;JYV|!ELUl`n zz>P~Zw{S#-u&Y;Qsh7k2QaWgP^O%Dh}xG&Z$?N zJ&jSpb%Jid$c;wM-jm9}) z+wcvP>ucKbvz&pc{!p5$I)5_-mya*L{43bTDYC z^2m4C!4Dx&t#H&#J0mml>Hw@FsnZ5Bcp50sDPfI|N61%KJgc+=-XT6}urH-qN=MLQ zb4&CUSV}YkBv6iAnTHo!+26Q22(l=Y4b@#l^|T5kd!-^+;%Q#+`>!JSzQmYD1|4?P z^y84#mcJGM>qj`tj-o)!EEp$C@Tg55!pgKT=Ds}|ONaE^xpIy&jZJLn1U@(;4;g-v{#=Wm*ZDAe> z5-?b4>0DxKd{d+_N0iGBcTwK_^Z?(!OeYp>EiWK-5=N;iaTYAhGyP zoK*B?=NBh%Y{bP9n!Ad7h^kqpbq^$+Chugoe+)>n<{vkdaJ&f!#9!09=x)a#q^@H} zpd;&NqGw;g)XcrPzeQJ zgY{-Y;UgE(Q|nV3o*d!hvXqA~GdsQFcrT*d0fI$HcSGo14d9@<7wSfoGwSj6NmK^x zh-_|?7}{zYt&?{$;4?<=+uQDGlYc?N3o!m-4pjApK~c1AXwoJ|iFD%!q6;Z;{c&4O z9p@;BTDPLVkV5;ERn-59K2}LXN>cf*yFcgt$cBydJ@g>5y`bj0n}a*^kqh?{l|v+( zx{qG|_N-w9E#%^*`B0w|o`)^&LV$;*+9#su+R*E8ywn+rMJci^pfbtW^hqAbru=k^ zl_m@^A)^(6mp%Kim?I}v$yb2;93o1AR3uX8DHNU1-68%*ODCs{+)?@;@OOVe@;|3t zNrO7=FpRoh@%m zIvsMH+uwM7N{1@$RjR_BIV~C8q7f~+siR?1$$s&y1?~GN2OHgap#<2EI z)}ydj4`(xJIi7CjK0;^sdg7f>_ERoOae;5q#!3S?no4X-wGiTppr Ca3Gif delta 3089 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 Ca3Gif delta 3089 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 + + 0.0000dp + 2.8444dp + 14.2222dp + 113.7778dp + -170.6667dp + -85.3333dp + -56.8889dp + -34.1333dp + -28.4444dp + -22.7556dp + -14.2222dp + -5.6889dp + -2.8444dp + 0.0000dp + 0.2844dp + 1.4222dp + 2.8444dp + 4.2667dp + 5.6889dp + 7.1111dp + 8.5333dp + 9.9556dp + 11.3778dp + 12.8000dp + 14.2222dp + 17.0667dp + 19.9111dp + 22.7556dp + 25.6000dp + 28.4444dp + 31.2889dp + 34.1333dp + 36.9778dp + 39.8222dp + 42.6667dp + 45.5111dp + 48.3556dp + 51.2000dp + 54.0444dp + 56.8889dp + 59.7333dp + 62.5778dp + 65.4222dp + 68.2667dp + 71.1111dp + 73.9556dp + 76.8000dp + 79.6444dp + 82.4889dp + 85.3333dp + 88.1778dp + 91.0222dp + 93.8667dp + 96.7111dp + 99.5556dp + 102.4000dp + 105.2444dp + 108.0889dp + 110.9333dp + 113.7778dp + 116.6222dp + 119.4667dp + 122.3111dp + 125.1556dp + 128.0000dp + 130.8444dp + 133.6889dp + 136.5333dp + 139.3778dp + 142.2222dp + 145.0667dp + 147.9111dp + 150.7556dp + 153.6000dp + 156.4444dp + 159.2889dp + 162.1333dp + 164.9778dp + 167.8222dp + 170.6667dp + 173.5111dp + 176.3556dp + 179.2000dp + 182.0444dp + 184.8889dp + 187.7333dp + 190.5778dp + 193.4222dp + 196.2667dp + 199.1111dp + 201.9556dp + 204.8000dp + 207.6444dp + 210.4889dp + 213.3333dp + 216.1778dp + 219.0222dp + 221.8667dp + 224.7111dp + 227.5556dp + 230.4000dp + 233.2444dp + 236.0889dp + 238.9333dp + 241.7778dp + 244.6222dp + 247.4667dp + 250.3111dp + 253.1556dp + 256.0000dp + 258.8444dp + 261.6889dp + 264.5333dp + 267.3778dp + 270.2222dp + 273.0667dp + 275.9111dp + 278.7556dp + 281.6000dp + 284.4444dp + 287.2889dp + 290.1333dp + 292.9778dp + 295.8222dp + 298.6667dp + 301.5111dp + 304.3556dp + 307.2000dp + 310.0444dp + 312.8889dp + 315.7333dp + 318.5778dp + 321.4222dp + 324.2667dp + 327.1111dp + 329.9556dp + 332.8000dp + 335.6444dp + 338.4889dp + 341.3333dp + 344.1778dp + 347.0222dp + 349.8667dp + 352.7111dp + 355.5556dp + 358.4000dp + 361.2444dp + 364.0889dp + 366.9333dp + 369.7778dp + 372.6222dp + 375.4667dp + 378.3111dp + 381.1556dp + 384.0000dp + 386.8444dp + 389.6889dp + 392.5333dp + 395.3778dp + 398.2222dp + 401.0667dp + 403.9111dp + 406.7556dp + 409.6000dp + 412.4444dp + 415.2889dp + 418.1333dp + 420.9778dp + 423.8222dp + 426.6667dp + 429.5111dp + 432.3556dp + 435.2000dp + 438.0444dp + 440.8889dp + 443.7333dp + 446.5778dp + 449.4222dp + 452.2667dp + 455.1111dp + 457.9556dp + 460.8000dp + 463.6444dp + 466.4889dp + 469.3333dp + 472.1778dp + 475.0222dp + 477.8667dp + 480.7111dp + 483.5556dp + 486.4000dp + 489.2444dp + 492.0889dp + 494.9333dp + 497.7778dp + 500.6222dp + 503.4667dp + 506.3111dp + 509.1556dp + 512.0000dp + 514.8444dp + 517.6889dp + 520.5333dp + 523.3778dp + 526.2222dp + 529.0667dp + 531.9111dp + 534.7556dp + 537.6000dp + 540.4444dp + 543.2889dp + 546.1333dp + 548.9778dp + 551.8222dp + 554.6667dp + 557.5111dp + 560.3556dp + 563.2000dp + 566.0444dp + 568.8889dp + 571.7333dp + 574.5778dp + 577.4222dp + 580.2667dp + 583.1111dp + 585.9556dp + 588.8000dp + 591.6444dp + 594.4889dp + 597.3333dp + 600.1778dp + 603.0222dp + 605.8667dp + 608.7111dp + 611.5556dp + 614.4000dp + 617.2444dp + 620.0889dp + 622.9333dp + 625.7778dp + 628.6222dp + 631.4667dp + 634.3111dp + 637.1556dp + 640.0000dp + 642.8444dp + 645.6889dp + 648.5333dp + 651.3778dp + 654.2222dp + 657.0667dp + 659.9111dp + 662.7556dp + 665.6000dp + 668.4444dp + 671.2889dp + 674.1333dp + 676.9778dp + 679.8222dp + 682.6667dp + 685.5111dp + 688.3556dp + 691.2000dp + 694.0444dp + 696.8889dp + 699.7333dp + 702.5778dp + 705.4222dp + 708.2667dp + 711.1111dp + 713.9556dp + 716.8000dp + 719.6444dp + 722.4889dp + 725.3333dp + 728.1778dp + 731.0222dp + 733.8667dp + 736.7111dp + 739.5556dp + 742.4000dp + 745.2444dp + 748.0889dp + 750.9333dp + 753.7778dp + 756.6222dp + 759.4667dp + 762.3111dp + 765.1556dp + 768.0000dp + 770.8444dp + 773.6889dp + 776.5333dp + 779.3778dp + 782.2222dp + 785.0667dp + 787.9111dp + 790.7556dp + 793.6000dp + 796.4444dp + 799.2889dp + 802.1333dp + 804.9778dp + 807.8222dp + 810.6667dp + 813.5111dp + 816.3556dp + 819.2000dp + 822.0444dp + 824.8889dp + 827.7333dp + 830.5778dp + 833.4222dp + 836.2667dp + 839.1111dp + 841.9556dp + 844.8000dp + 847.6444dp + 850.4889dp + 853.3333dp + 856.1778dp + 859.0222dp + 861.8667dp + 864.7111dp + 867.5556dp + 870.4000dp + 873.2444dp + 876.0889dp + 878.9333dp + 881.7778dp + 884.6222dp + 887.4667dp + 890.3111dp + 893.1556dp + 896.0000dp + 898.8444dp + 901.6889dp + 904.5333dp + 907.3778dp + 910.2222dp + 913.0667dp + 915.9111dp + 918.7556dp + 921.6000dp + 924.4444dp + 927.2889dp + 930.1333dp + 932.9778dp + 935.8222dp + 938.6667dp + 941.5111dp + 944.3556dp + 947.2000dp + 950.0444dp + 952.8889dp + 955.7333dp + 958.5778dp + 961.4222dp + 964.2667dp + 967.1111dp + 969.9556dp + 972.8000dp + 975.6444dp + 978.4889dp + 981.3333dp + 984.1778dp + 987.0222dp + 989.8667dp + 992.7111dp + 995.5556dp + 998.4000dp + 1001.2444dp + 1004.0889dp + 1006.9333dp + 1009.7778dp + 1012.6222dp + 1015.4667dp + 1018.3111dp + 1021.1556dp + 1024.0000dp + 1026.8444dp + 1029.6889dp + 1032.5333dp + 1035.3778dp + 1038.2222dp + 1041.0667dp + 1043.9111dp + 1046.7556dp + 1049.6000dp + 1052.4444dp + 1055.2889dp + 1058.1333dp + 1060.9778dp + 1063.8222dp + 1066.6667dp + 1069.5111dp + 1072.3556dp + 1075.2000dp + 1078.0444dp + 1080.8889dp + 1083.7333dp + 1086.5778dp + 1089.4222dp + 1092.2667dp + 1095.1111dp + 1097.9556dp + 1100.8000dp + 1103.6444dp + 1106.4889dp + 1109.3333dp + 1112.1778dp + 1115.0222dp + 1117.8667dp + 1120.7111dp + 1123.5556dp + 1126.4000dp + 1129.2444dp + 1132.0889dp + 1134.9333dp + 1137.7778dp + 1140.6222dp + 1143.4667dp + 1146.3111dp + 1149.1556dp + 1152.0000dp + 1154.8444dp + 1157.6889dp + 1160.5333dp + 1163.3778dp + 1166.2222dp + 1169.0667dp + 1171.9111dp + 1174.7556dp + 1177.6000dp + 1180.4444dp + 1183.2889dp + 1186.1333dp + 1188.9778dp + 1191.8222dp + 1194.6667dp + 1197.5111dp + 1200.3556dp + 1203.2000dp + 1206.0444dp + 1208.8889dp + 1211.7333dp + 1214.5778dp + 1217.4222dp + 1220.2667dp + 1223.1111dp + 1225.9556dp + 1228.8000dp + 1231.6444dp + 1234.4889dp + 1237.3333dp + 1240.1778dp + 1243.0222dp + 1245.8667dp + 1248.7111dp + 1251.5556dp + 1254.4000dp + 1257.2444dp + 1260.0889dp + 1262.9333dp + 1265.7778dp + 1268.6222dp + 1271.4667dp + 1274.3111dp + 1277.1556dp + 1280.0000dp + 1282.8444dp + 1285.6889dp + 1288.5333dp + 1291.3778dp + 1294.2222dp + 1297.0667dp + 1299.9111dp + 1302.7556dp + 1305.6000dp + 1308.4444dp + 1311.2889dp + 1314.1333dp + 1316.9778dp + 1319.8222dp + 1322.6667dp + 1325.5111dp + 1328.3556dp + 1331.2000dp + 1334.0444dp + 1336.8889dp + 1339.7333dp + 1342.5778dp + 1345.4222dp + 1348.2667dp + 1351.1111dp + 1353.9556dp + 1356.8000dp + 1359.6444dp + 1362.4889dp + 1365.3333dp + 1368.1778dp + 1371.0222dp + 1373.8667dp + 1376.7111dp + 1379.5556dp + 1382.4000dp + 1385.2444dp + 1388.0889dp + 1390.9333dp + 1393.7778dp + 1396.6222dp + 1399.4667dp + 1402.3111dp + 1405.1556dp + 1408.0000dp + 1410.8444dp + 1413.6889dp + 1416.5333dp + 1419.3778dp + 1422.2222dp + 1706.6667dp + 1820.4444dp + 2048.0000dp + 2.8444sp + 5.6889sp + 8.5333sp + 11.3778sp + 14.2222sp + 17.0667sp + 19.9111sp + 22.7556sp + 25.6000sp + 28.4444sp + 31.2889sp + 34.1333sp + 36.9778sp + 39.8222sp + 42.6667sp + 45.5111sp + 48.3556sp + 51.2000sp + 54.0444sp + 56.8889sp + 59.7333sp + 62.5778sp + 65.4222sp + 68.2667sp + 71.1111sp + 73.9556sp + 76.8000sp + 79.6444sp + 82.4889sp + 85.3333sp + 88.1778sp + 91.0222sp + 93.8667sp + 96.7111sp + 99.5556sp + 102.4000sp + 105.2444sp + 108.0889sp + 110.9333sp + 113.7778sp + 116.6222sp + 119.4667sp + 122.3111sp + 125.1556sp + 128.0000sp + 130.8444sp + 133.6889sp + 136.5333sp + 139.3778sp + 142.2222sp + diff --git a/app/src/main/res/values-sw1280dp/dimens.xml b/app/src/main/res/values-sw1280dp/dimens.xml new file mode 100644 index 0000000..6a347b4 --- /dev/null +++ b/app/src/main/res/values-sw1280dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 3.5556dp + 17.7778dp + 142.2222dp + -213.3333dp + -106.6667dp + -71.1111dp + -42.6667dp + -35.5556dp + -28.4444dp + -17.7778dp + -7.1111dp + -3.5556dp + 0.0000dp + 0.3556dp + 1.7778dp + 3.5556dp + 5.3333dp + 7.1111dp + 8.8889dp + 10.6667dp + 12.4444dp + 14.2222dp + 16.0000dp + 17.7778dp + 21.3333dp + 24.8889dp + 28.4444dp + 32.0000dp + 35.5556dp + 39.1111dp + 42.6667dp + 46.2222dp + 49.7778dp + 53.3333dp + 56.8889dp + 60.4444dp + 64.0000dp + 67.5556dp + 71.1111dp + 74.6667dp + 78.2222dp + 81.7778dp + 85.3333dp + 88.8889dp + 92.4444dp + 96.0000dp + 99.5556dp + 103.1111dp + 106.6667dp + 110.2222dp + 113.7778dp + 117.3333dp + 120.8889dp + 124.4444dp + 128.0000dp + 131.5556dp + 135.1111dp + 138.6667dp + 142.2222dp + 145.7778dp + 149.3333dp + 152.8889dp + 156.4444dp + 160.0000dp + 163.5556dp + 167.1111dp + 170.6667dp + 174.2222dp + 177.7778dp + 181.3333dp + 184.8889dp + 188.4444dp + 192.0000dp + 195.5556dp + 199.1111dp + 202.6667dp + 206.2222dp + 209.7778dp + 213.3333dp + 216.8889dp + 220.4444dp + 224.0000dp + 227.5556dp + 231.1111dp + 234.6667dp + 238.2222dp + 241.7778dp + 245.3333dp + 248.8889dp + 252.4444dp + 256.0000dp + 259.5556dp + 263.1111dp + 266.6667dp + 270.2222dp + 273.7778dp + 277.3333dp + 280.8889dp + 284.4444dp + 288.0000dp + 291.5556dp + 295.1111dp + 298.6667dp + 302.2222dp + 305.7778dp + 309.3333dp + 312.8889dp + 316.4444dp + 320.0000dp + 323.5556dp + 327.1111dp + 330.6667dp + 334.2222dp + 337.7778dp + 341.3333dp + 344.8889dp + 348.4444dp + 352.0000dp + 355.5556dp + 359.1111dp + 362.6667dp + 366.2222dp + 369.7778dp + 373.3333dp + 376.8889dp + 380.4444dp + 384.0000dp + 387.5556dp + 391.1111dp + 394.6667dp + 398.2222dp + 401.7778dp + 405.3333dp + 408.8889dp + 412.4444dp + 416.0000dp + 419.5556dp + 423.1111dp + 426.6667dp + 430.2222dp + 433.7778dp + 437.3333dp + 440.8889dp + 444.4444dp + 448.0000dp + 451.5556dp + 455.1111dp + 458.6667dp + 462.2222dp + 465.7778dp + 469.3333dp + 472.8889dp + 476.4444dp + 480.0000dp + 483.5556dp + 487.1111dp + 490.6667dp + 494.2222dp + 497.7778dp + 501.3333dp + 504.8889dp + 508.4444dp + 512.0000dp + 515.5556dp + 519.1111dp + 522.6667dp + 526.2222dp + 529.7778dp + 533.3333dp + 536.8889dp + 540.4444dp + 544.0000dp + 547.5556dp + 551.1111dp + 554.6667dp + 558.2222dp + 561.7778dp + 565.3333dp + 568.8889dp + 572.4444dp + 576.0000dp + 579.5556dp + 583.1111dp + 586.6667dp + 590.2222dp + 593.7778dp + 597.3333dp + 600.8889dp + 604.4444dp + 608.0000dp + 611.5556dp + 615.1111dp + 618.6667dp + 622.2222dp + 625.7778dp + 629.3333dp + 632.8889dp + 636.4444dp + 640.0000dp + 643.5556dp + 647.1111dp + 650.6667dp + 654.2222dp + 657.7778dp + 661.3333dp + 664.8889dp + 668.4444dp + 672.0000dp + 675.5556dp + 679.1111dp + 682.6667dp + 686.2222dp + 689.7778dp + 693.3333dp + 696.8889dp + 700.4444dp + 704.0000dp + 707.5556dp + 711.1111dp + 714.6667dp + 718.2222dp + 721.7778dp + 725.3333dp + 728.8889dp + 732.4444dp + 736.0000dp + 739.5556dp + 743.1111dp + 746.6667dp + 750.2222dp + 753.7778dp + 757.3333dp + 760.8889dp + 764.4444dp + 768.0000dp + 771.5556dp + 775.1111dp + 778.6667dp + 782.2222dp + 785.7778dp + 789.3333dp + 792.8889dp + 796.4444dp + 800.0000dp + 803.5556dp + 807.1111dp + 810.6667dp + 814.2222dp + 817.7778dp + 821.3333dp + 824.8889dp + 828.4444dp + 832.0000dp + 835.5556dp + 839.1111dp + 842.6667dp + 846.2222dp + 849.7778dp + 853.3333dp + 856.8889dp + 860.4444dp + 864.0000dp + 867.5556dp + 871.1111dp + 874.6667dp + 878.2222dp + 881.7778dp + 885.3333dp + 888.8889dp + 892.4444dp + 896.0000dp + 899.5556dp + 903.1111dp + 906.6667dp + 910.2222dp + 913.7778dp + 917.3333dp + 920.8889dp + 924.4444dp + 928.0000dp + 931.5556dp + 935.1111dp + 938.6667dp + 942.2222dp + 945.7778dp + 949.3333dp + 952.8889dp + 956.4444dp + 960.0000dp + 963.5556dp + 967.1111dp + 970.6667dp + 974.2222dp + 977.7778dp + 981.3333dp + 984.8889dp + 988.4444dp + 992.0000dp + 995.5556dp + 999.1111dp + 1002.6667dp + 1006.2222dp + 1009.7778dp + 1013.3333dp + 1016.8889dp + 1020.4444dp + 1024.0000dp + 1027.5556dp + 1031.1111dp + 1034.6667dp + 1038.2222dp + 1041.7778dp + 1045.3333dp + 1048.8889dp + 1052.4444dp + 1056.0000dp + 1059.5556dp + 1063.1111dp + 1066.6667dp + 1070.2222dp + 1073.7778dp + 1077.3333dp + 1080.8889dp + 1084.4444dp + 1088.0000dp + 1091.5556dp + 1095.1111dp + 1098.6667dp + 1102.2222dp + 1105.7778dp + 1109.3333dp + 1112.8889dp + 1116.4444dp + 1120.0000dp + 1123.5556dp + 1127.1111dp + 1130.6667dp + 1134.2222dp + 1137.7778dp + 1141.3333dp + 1144.8889dp + 1148.4444dp + 1152.0000dp + 1155.5556dp + 1159.1111dp + 1162.6667dp + 1166.2222dp + 1169.7778dp + 1173.3333dp + 1176.8889dp + 1180.4444dp + 1184.0000dp + 1187.5556dp + 1191.1111dp + 1194.6667dp + 1198.2222dp + 1201.7778dp + 1205.3333dp + 1208.8889dp + 1212.4444dp + 1216.0000dp + 1219.5556dp + 1223.1111dp + 1226.6667dp + 1230.2222dp + 1233.7778dp + 1237.3333dp + 1240.8889dp + 1244.4444dp + 1248.0000dp + 1251.5556dp + 1255.1111dp + 1258.6667dp + 1262.2222dp + 1265.7778dp + 1269.3333dp + 1272.8889dp + 1276.4444dp + 1280.0000dp + 1283.5556dp + 1287.1111dp + 1290.6667dp + 1294.2222dp + 1297.7778dp + 1301.3333dp + 1304.8889dp + 1308.4444dp + 1312.0000dp + 1315.5556dp + 1319.1111dp + 1322.6667dp + 1326.2222dp + 1329.7778dp + 1333.3333dp + 1336.8889dp + 1340.4444dp + 1344.0000dp + 1347.5556dp + 1351.1111dp + 1354.6667dp + 1358.2222dp + 1361.7778dp + 1365.3333dp + 1368.8889dp + 1372.4444dp + 1376.0000dp + 1379.5556dp + 1383.1111dp + 1386.6667dp + 1390.2222dp + 1393.7778dp + 1397.3333dp + 1400.8889dp + 1404.4444dp + 1408.0000dp + 1411.5556dp + 1415.1111dp + 1418.6667dp + 1422.2222dp + 1425.7778dp + 1429.3333dp + 1432.8889dp + 1436.4444dp + 1440.0000dp + 1443.5556dp + 1447.1111dp + 1450.6667dp + 1454.2222dp + 1457.7778dp + 1461.3333dp + 1464.8889dp + 1468.4444dp + 1472.0000dp + 1475.5556dp + 1479.1111dp + 1482.6667dp + 1486.2222dp + 1489.7778dp + 1493.3333dp + 1496.8889dp + 1500.4444dp + 1504.0000dp + 1507.5556dp + 1511.1111dp + 1514.6667dp + 1518.2222dp + 1521.7778dp + 1525.3333dp + 1528.8889dp + 1532.4444dp + 1536.0000dp + 1539.5556dp + 1543.1111dp + 1546.6667dp + 1550.2222dp + 1553.7778dp + 1557.3333dp + 1560.8889dp + 1564.4444dp + 1568.0000dp + 1571.5556dp + 1575.1111dp + 1578.6667dp + 1582.2222dp + 1585.7778dp + 1589.3333dp + 1592.8889dp + 1596.4444dp + 1600.0000dp + 1603.5556dp + 1607.1111dp + 1610.6667dp + 1614.2222dp + 1617.7778dp + 1621.3333dp + 1624.8889dp + 1628.4444dp + 1632.0000dp + 1635.5556dp + 1639.1111dp + 1642.6667dp + 1646.2222dp + 1649.7778dp + 1653.3333dp + 1656.8889dp + 1660.4444dp + 1664.0000dp + 1667.5556dp + 1671.1111dp + 1674.6667dp + 1678.2222dp + 1681.7778dp + 1685.3333dp + 1688.8889dp + 1692.4444dp + 1696.0000dp + 1699.5556dp + 1703.1111dp + 1706.6667dp + 1710.2222dp + 1713.7778dp + 1717.3333dp + 1720.8889dp + 1724.4444dp + 1728.0000dp + 1731.5556dp + 1735.1111dp + 1738.6667dp + 1742.2222dp + 1745.7778dp + 1749.3333dp + 1752.8889dp + 1756.4444dp + 1760.0000dp + 1763.5556dp + 1767.1111dp + 1770.6667dp + 1774.2222dp + 1777.7778dp + 2133.3333dp + 2275.5556dp + 2560.0000dp + 3.5556sp + 7.1111sp + 10.6667sp + 14.2222sp + 17.7778sp + 21.3333sp + 24.8889sp + 28.4444sp + 32.0000sp + 35.5556sp + 39.1111sp + 42.6667sp + 46.2222sp + 49.7778sp + 53.3333sp + 56.8889sp + 60.4444sp + 64.0000sp + 67.5556sp + 71.1111sp + 74.6667sp + 78.2222sp + 81.7778sp + 85.3333sp + 88.8889sp + 92.4444sp + 96.0000sp + 99.5556sp + 103.1111sp + 106.6667sp + 110.2222sp + 113.7778sp + 117.3333sp + 120.8889sp + 124.4444sp + 128.0000sp + 131.5556sp + 135.1111sp + 138.6667sp + 142.2222sp + 145.7778sp + 149.3333sp + 152.8889sp + 156.4444sp + 160.0000sp + 163.5556sp + 167.1111sp + 170.6667sp + 174.2222sp + 177.7778sp + diff --git a/app/src/main/res/values-sw1365dp/dimens.xml b/app/src/main/res/values-sw1365dp/dimens.xml new file mode 100644 index 0000000..6e2c8c6 --- /dev/null +++ b/app/src/main/res/values-sw1365dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 3.7917dp + 18.9583dp + 151.6667dp + -227.5000dp + -113.7500dp + -75.8333dp + -45.5000dp + -37.9167dp + -30.3333dp + -18.9583dp + -7.5833dp + -3.7917dp + 0.0000dp + 0.3792dp + 1.8958dp + 3.7917dp + 5.6875dp + 7.5833dp + 9.4792dp + 11.3750dp + 13.2708dp + 15.1667dp + 17.0625dp + 18.9583dp + 22.7500dp + 26.5417dp + 30.3333dp + 34.1250dp + 37.9167dp + 41.7083dp + 45.5000dp + 49.2917dp + 53.0833dp + 56.8750dp + 60.6667dp + 64.4583dp + 68.2500dp + 72.0417dp + 75.8333dp + 79.6250dp + 83.4167dp + 87.2083dp + 91.0000dp + 94.7917dp + 98.5833dp + 102.3750dp + 106.1667dp + 109.9583dp + 113.7500dp + 117.5417dp + 121.3333dp + 125.1250dp + 128.9167dp + 132.7083dp + 136.5000dp + 140.2917dp + 144.0833dp + 147.8750dp + 151.6667dp + 155.4583dp + 159.2500dp + 163.0417dp + 166.8333dp + 170.6250dp + 174.4167dp + 178.2083dp + 182.0000dp + 185.7917dp + 189.5833dp + 193.3750dp + 197.1667dp + 200.9583dp + 204.7500dp + 208.5417dp + 212.3333dp + 216.1250dp + 219.9167dp + 223.7083dp + 227.5000dp + 231.2917dp + 235.0833dp + 238.8750dp + 242.6667dp + 246.4583dp + 250.2500dp + 254.0417dp + 257.8333dp + 261.6250dp + 265.4167dp + 269.2083dp + 273.0000dp + 276.7917dp + 280.5833dp + 284.3750dp + 288.1667dp + 291.9583dp + 295.7500dp + 299.5417dp + 303.3333dp + 307.1250dp + 310.9167dp + 314.7083dp + 318.5000dp + 322.2917dp + 326.0833dp + 329.8750dp + 333.6667dp + 337.4583dp + 341.2500dp + 345.0417dp + 348.8333dp + 352.6250dp + 356.4167dp + 360.2083dp + 364.0000dp + 367.7917dp + 371.5833dp + 375.3750dp + 379.1667dp + 382.9583dp + 386.7500dp + 390.5417dp + 394.3333dp + 398.1250dp + 401.9167dp + 405.7083dp + 409.5000dp + 413.2917dp + 417.0833dp + 420.8750dp + 424.6667dp + 428.4583dp + 432.2500dp + 436.0417dp + 439.8333dp + 443.6250dp + 447.4167dp + 451.2083dp + 455.0000dp + 458.7917dp + 462.5833dp + 466.3750dp + 470.1667dp + 473.9583dp + 477.7500dp + 481.5417dp + 485.3333dp + 489.1250dp + 492.9167dp + 496.7083dp + 500.5000dp + 504.2917dp + 508.0833dp + 511.8750dp + 515.6667dp + 519.4583dp + 523.2500dp + 527.0417dp + 530.8333dp + 534.6250dp + 538.4167dp + 542.2083dp + 546.0000dp + 549.7917dp + 553.5833dp + 557.3750dp + 561.1667dp + 564.9583dp + 568.7500dp + 572.5417dp + 576.3333dp + 580.1250dp + 583.9167dp + 587.7083dp + 591.5000dp + 595.2917dp + 599.0833dp + 602.8750dp + 606.6667dp + 610.4583dp + 614.2500dp + 618.0417dp + 621.8333dp + 625.6250dp + 629.4167dp + 633.2083dp + 637.0000dp + 640.7917dp + 644.5833dp + 648.3750dp + 652.1667dp + 655.9583dp + 659.7500dp + 663.5417dp + 667.3333dp + 671.1250dp + 674.9167dp + 678.7083dp + 682.5000dp + 686.2917dp + 690.0833dp + 693.8750dp + 697.6667dp + 701.4583dp + 705.2500dp + 709.0417dp + 712.8333dp + 716.6250dp + 720.4167dp + 724.2083dp + 728.0000dp + 731.7917dp + 735.5833dp + 739.3750dp + 743.1667dp + 746.9583dp + 750.7500dp + 754.5417dp + 758.3333dp + 762.1250dp + 765.9167dp + 769.7083dp + 773.5000dp + 777.2917dp + 781.0833dp + 784.8750dp + 788.6667dp + 792.4583dp + 796.2500dp + 800.0417dp + 803.8333dp + 807.6250dp + 811.4167dp + 815.2083dp + 819.0000dp + 822.7917dp + 826.5833dp + 830.3750dp + 834.1667dp + 837.9583dp + 841.7500dp + 845.5417dp + 849.3333dp + 853.1250dp + 856.9167dp + 860.7083dp + 864.5000dp + 868.2917dp + 872.0833dp + 875.8750dp + 879.6667dp + 883.4583dp + 887.2500dp + 891.0417dp + 894.8333dp + 898.6250dp + 902.4167dp + 906.2083dp + 910.0000dp + 913.7917dp + 917.5833dp + 921.3750dp + 925.1667dp + 928.9583dp + 932.7500dp + 936.5417dp + 940.3333dp + 944.1250dp + 947.9167dp + 951.7083dp + 955.5000dp + 959.2917dp + 963.0833dp + 966.8750dp + 970.6667dp + 974.4583dp + 978.2500dp + 982.0417dp + 985.8333dp + 989.6250dp + 993.4167dp + 997.2083dp + 1001.0000dp + 1004.7917dp + 1008.5833dp + 1012.3750dp + 1016.1667dp + 1019.9583dp + 1023.7500dp + 1027.5417dp + 1031.3333dp + 1035.1250dp + 1038.9167dp + 1042.7083dp + 1046.5000dp + 1050.2917dp + 1054.0833dp + 1057.8750dp + 1061.6667dp + 1065.4583dp + 1069.2500dp + 1073.0417dp + 1076.8333dp + 1080.6250dp + 1084.4167dp + 1088.2083dp + 1092.0000dp + 1095.7917dp + 1099.5833dp + 1103.3750dp + 1107.1667dp + 1110.9583dp + 1114.7500dp + 1118.5417dp + 1122.3333dp + 1126.1250dp + 1129.9167dp + 1133.7083dp + 1137.5000dp + 1141.2917dp + 1145.0833dp + 1148.8750dp + 1152.6667dp + 1156.4583dp + 1160.2500dp + 1164.0417dp + 1167.8333dp + 1171.6250dp + 1175.4167dp + 1179.2083dp + 1183.0000dp + 1186.7917dp + 1190.5833dp + 1194.3750dp + 1198.1667dp + 1201.9583dp + 1205.7500dp + 1209.5417dp + 1213.3333dp + 1217.1250dp + 1220.9167dp + 1224.7083dp + 1228.5000dp + 1232.2917dp + 1236.0833dp + 1239.8750dp + 1243.6667dp + 1247.4583dp + 1251.2500dp + 1255.0417dp + 1258.8333dp + 1262.6250dp + 1266.4167dp + 1270.2083dp + 1274.0000dp + 1277.7917dp + 1281.5833dp + 1285.3750dp + 1289.1667dp + 1292.9583dp + 1296.7500dp + 1300.5417dp + 1304.3333dp + 1308.1250dp + 1311.9167dp + 1315.7083dp + 1319.5000dp + 1323.2917dp + 1327.0833dp + 1330.8750dp + 1334.6667dp + 1338.4583dp + 1342.2500dp + 1346.0417dp + 1349.8333dp + 1353.6250dp + 1357.4167dp + 1361.2083dp + 1365.0000dp + 1368.7917dp + 1372.5833dp + 1376.3750dp + 1380.1667dp + 1383.9583dp + 1387.7500dp + 1391.5417dp + 1395.3333dp + 1399.1250dp + 1402.9167dp + 1406.7083dp + 1410.5000dp + 1414.2917dp + 1418.0833dp + 1421.8750dp + 1425.6667dp + 1429.4583dp + 1433.2500dp + 1437.0417dp + 1440.8333dp + 1444.6250dp + 1448.4167dp + 1452.2083dp + 1456.0000dp + 1459.7917dp + 1463.5833dp + 1467.3750dp + 1471.1667dp + 1474.9583dp + 1478.7500dp + 1482.5417dp + 1486.3333dp + 1490.1250dp + 1493.9167dp + 1497.7083dp + 1501.5000dp + 1505.2917dp + 1509.0833dp + 1512.8750dp + 1516.6667dp + 1520.4583dp + 1524.2500dp + 1528.0417dp + 1531.8333dp + 1535.6250dp + 1539.4167dp + 1543.2083dp + 1547.0000dp + 1550.7917dp + 1554.5833dp + 1558.3750dp + 1562.1667dp + 1565.9583dp + 1569.7500dp + 1573.5417dp + 1577.3333dp + 1581.1250dp + 1584.9167dp + 1588.7083dp + 1592.5000dp + 1596.2917dp + 1600.0833dp + 1603.8750dp + 1607.6667dp + 1611.4583dp + 1615.2500dp + 1619.0417dp + 1622.8333dp + 1626.6250dp + 1630.4167dp + 1634.2083dp + 1638.0000dp + 1641.7917dp + 1645.5833dp + 1649.3750dp + 1653.1667dp + 1656.9583dp + 1660.7500dp + 1664.5417dp + 1668.3333dp + 1672.1250dp + 1675.9167dp + 1679.7083dp + 1683.5000dp + 1687.2917dp + 1691.0833dp + 1694.8750dp + 1698.6667dp + 1702.4583dp + 1706.2500dp + 1710.0417dp + 1713.8333dp + 1717.6250dp + 1721.4167dp + 1725.2083dp + 1729.0000dp + 1732.7917dp + 1736.5833dp + 1740.3750dp + 1744.1667dp + 1747.9583dp + 1751.7500dp + 1755.5417dp + 1759.3333dp + 1763.1250dp + 1766.9167dp + 1770.7083dp + 1774.5000dp + 1778.2917dp + 1782.0833dp + 1785.8750dp + 1789.6667dp + 1793.4583dp + 1797.2500dp + 1801.0417dp + 1804.8333dp + 1808.6250dp + 1812.4167dp + 1816.2083dp + 1820.0000dp + 1823.7917dp + 1827.5833dp + 1831.3750dp + 1835.1667dp + 1838.9583dp + 1842.7500dp + 1846.5417dp + 1850.3333dp + 1854.1250dp + 1857.9167dp + 1861.7083dp + 1865.5000dp + 1869.2917dp + 1873.0833dp + 1876.8750dp + 1880.6667dp + 1884.4583dp + 1888.2500dp + 1892.0417dp + 1895.8333dp + 2275.0000dp + 2426.6667dp + 2730.0000dp + 3.7917sp + 7.5833sp + 11.3750sp + 15.1667sp + 18.9583sp + 22.7500sp + 26.5417sp + 30.3333sp + 34.1250sp + 37.9167sp + 41.7083sp + 45.5000sp + 49.2917sp + 53.0833sp + 56.8750sp + 60.6667sp + 64.4583sp + 68.2500sp + 72.0417sp + 75.8333sp + 79.6250sp + 83.4167sp + 87.2083sp + 91.0000sp + 94.7917sp + 98.5833sp + 102.3750sp + 106.1667sp + 109.9583sp + 113.7500sp + 117.5417sp + 121.3333sp + 125.1250sp + 128.9167sp + 132.7083sp + 136.5000sp + 140.2917sp + 144.0833sp + 147.8750sp + 151.6667sp + 155.4583sp + 159.2500sp + 163.0417sp + 166.8333sp + 170.6250sp + 174.4167sp + 178.2083sp + 182.0000sp + 185.7917sp + 189.5833sp + diff --git a/app/src/main/res/values-sw320dp/dimens.xml b/app/src/main/res/values-sw320dp/dimens.xml new file mode 100644 index 0000000..d8da219 --- /dev/null +++ b/app/src/main/res/values-sw320dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 0.8889dp + 4.4444dp + 35.5556dp + -53.3333dp + -26.6667dp + -17.7778dp + -10.6667dp + -8.8889dp + -7.1111dp + -4.4444dp + -1.7778dp + -0.8889dp + 0.0000dp + 0.0889dp + 0.4444dp + 0.8889dp + 1.3333dp + 1.7778dp + 2.2222dp + 2.6667dp + 3.1111dp + 3.5556dp + 4.0000dp + 4.4444dp + 5.3333dp + 6.2222dp + 7.1111dp + 8.0000dp + 8.8889dp + 9.7778dp + 10.6667dp + 11.5556dp + 12.4444dp + 13.3333dp + 14.2222dp + 15.1111dp + 16.0000dp + 16.8889dp + 17.7778dp + 18.6667dp + 19.5556dp + 20.4444dp + 21.3333dp + 22.2222dp + 23.1111dp + 24.0000dp + 24.8889dp + 25.7778dp + 26.6667dp + 27.5556dp + 28.4444dp + 29.3333dp + 30.2222dp + 31.1111dp + 32.0000dp + 32.8889dp + 33.7778dp + 34.6667dp + 35.5556dp + 36.4444dp + 37.3333dp + 38.2222dp + 39.1111dp + 40.0000dp + 40.8889dp + 41.7778dp + 42.6667dp + 43.5556dp + 44.4444dp + 45.3333dp + 46.2222dp + 47.1111dp + 48.0000dp + 48.8889dp + 49.7778dp + 50.6667dp + 51.5556dp + 52.4444dp + 53.3333dp + 54.2222dp + 55.1111dp + 56.0000dp + 56.8889dp + 57.7778dp + 58.6667dp + 59.5556dp + 60.4444dp + 61.3333dp + 62.2222dp + 63.1111dp + 64.0000dp + 64.8889dp + 65.7778dp + 66.6667dp + 67.5556dp + 68.4444dp + 69.3333dp + 70.2222dp + 71.1111dp + 72.0000dp + 72.8889dp + 73.7778dp + 74.6667dp + 75.5556dp + 76.4444dp + 77.3333dp + 78.2222dp + 79.1111dp + 80.0000dp + 80.8889dp + 81.7778dp + 82.6667dp + 83.5556dp + 84.4444dp + 85.3333dp + 86.2222dp + 87.1111dp + 88.0000dp + 88.8889dp + 89.7778dp + 90.6667dp + 91.5556dp + 92.4444dp + 93.3333dp + 94.2222dp + 95.1111dp + 96.0000dp + 96.8889dp + 97.7778dp + 98.6667dp + 99.5556dp + 100.4444dp + 101.3333dp + 102.2222dp + 103.1111dp + 104.0000dp + 104.8889dp + 105.7778dp + 106.6667dp + 107.5556dp + 108.4444dp + 109.3333dp + 110.2222dp + 111.1111dp + 112.0000dp + 112.8889dp + 113.7778dp + 114.6667dp + 115.5556dp + 116.4444dp + 117.3333dp + 118.2222dp + 119.1111dp + 120.0000dp + 120.8889dp + 121.7778dp + 122.6667dp + 123.5556dp + 124.4444dp + 125.3333dp + 126.2222dp + 127.1111dp + 128.0000dp + 128.8889dp + 129.7778dp + 130.6667dp + 131.5556dp + 132.4444dp + 133.3333dp + 134.2222dp + 135.1111dp + 136.0000dp + 136.8889dp + 137.7778dp + 138.6667dp + 139.5556dp + 140.4444dp + 141.3333dp + 142.2222dp + 143.1111dp + 144.0000dp + 144.8889dp + 145.7778dp + 146.6667dp + 147.5556dp + 148.4444dp + 149.3333dp + 150.2222dp + 151.1111dp + 152.0000dp + 152.8889dp + 153.7778dp + 154.6667dp + 155.5556dp + 156.4444dp + 157.3333dp + 158.2222dp + 159.1111dp + 160.0000dp + 160.8889dp + 161.7778dp + 162.6667dp + 163.5556dp + 164.4444dp + 165.3333dp + 166.2222dp + 167.1111dp + 168.0000dp + 168.8889dp + 169.7778dp + 170.6667dp + 171.5556dp + 172.4444dp + 173.3333dp + 174.2222dp + 175.1111dp + 176.0000dp + 176.8889dp + 177.7778dp + 178.6667dp + 179.5556dp + 180.4444dp + 181.3333dp + 182.2222dp + 183.1111dp + 184.0000dp + 184.8889dp + 185.7778dp + 186.6667dp + 187.5556dp + 188.4444dp + 189.3333dp + 190.2222dp + 191.1111dp + 192.0000dp + 192.8889dp + 193.7778dp + 194.6667dp + 195.5556dp + 196.4444dp + 197.3333dp + 198.2222dp + 199.1111dp + 200.0000dp + 200.8889dp + 201.7778dp + 202.6667dp + 203.5556dp + 204.4444dp + 205.3333dp + 206.2222dp + 207.1111dp + 208.0000dp + 208.8889dp + 209.7778dp + 210.6667dp + 211.5556dp + 212.4444dp + 213.3333dp + 214.2222dp + 215.1111dp + 216.0000dp + 216.8889dp + 217.7778dp + 218.6667dp + 219.5556dp + 220.4444dp + 221.3333dp + 222.2222dp + 223.1111dp + 224.0000dp + 224.8889dp + 225.7778dp + 226.6667dp + 227.5556dp + 228.4444dp + 229.3333dp + 230.2222dp + 231.1111dp + 232.0000dp + 232.8889dp + 233.7778dp + 234.6667dp + 235.5556dp + 236.4444dp + 237.3333dp + 238.2222dp + 239.1111dp + 240.0000dp + 240.8889dp + 241.7778dp + 242.6667dp + 243.5556dp + 244.4444dp + 245.3333dp + 246.2222dp + 247.1111dp + 248.0000dp + 248.8889dp + 249.7778dp + 250.6667dp + 251.5556dp + 252.4444dp + 253.3333dp + 254.2222dp + 255.1111dp + 256.0000dp + 256.8889dp + 257.7778dp + 258.6667dp + 259.5556dp + 260.4444dp + 261.3333dp + 262.2222dp + 263.1111dp + 264.0000dp + 264.8889dp + 265.7778dp + 266.6667dp + 267.5556dp + 268.4444dp + 269.3333dp + 270.2222dp + 271.1111dp + 272.0000dp + 272.8889dp + 273.7778dp + 274.6667dp + 275.5556dp + 276.4444dp + 277.3333dp + 278.2222dp + 279.1111dp + 280.0000dp + 280.8889dp + 281.7778dp + 282.6667dp + 283.5556dp + 284.4444dp + 285.3333dp + 286.2222dp + 287.1111dp + 288.0000dp + 288.8889dp + 289.7778dp + 290.6667dp + 291.5556dp + 292.4444dp + 293.3333dp + 294.2222dp + 295.1111dp + 296.0000dp + 296.8889dp + 297.7778dp + 298.6667dp + 299.5556dp + 300.4444dp + 301.3333dp + 302.2222dp + 303.1111dp + 304.0000dp + 304.8889dp + 305.7778dp + 306.6667dp + 307.5556dp + 308.4444dp + 309.3333dp + 310.2222dp + 311.1111dp + 312.0000dp + 312.8889dp + 313.7778dp + 314.6667dp + 315.5556dp + 316.4444dp + 317.3333dp + 318.2222dp + 319.1111dp + 320.0000dp + 320.8889dp + 321.7778dp + 322.6667dp + 323.5556dp + 324.4444dp + 325.3333dp + 326.2222dp + 327.1111dp + 328.0000dp + 328.8889dp + 329.7778dp + 330.6667dp + 331.5556dp + 332.4444dp + 333.3333dp + 334.2222dp + 335.1111dp + 336.0000dp + 336.8889dp + 337.7778dp + 338.6667dp + 339.5556dp + 340.4444dp + 341.3333dp + 342.2222dp + 343.1111dp + 344.0000dp + 344.8889dp + 345.7778dp + 346.6667dp + 347.5556dp + 348.4444dp + 349.3333dp + 350.2222dp + 351.1111dp + 352.0000dp + 352.8889dp + 353.7778dp + 354.6667dp + 355.5556dp + 356.4444dp + 357.3333dp + 358.2222dp + 359.1111dp + 360.0000dp + 360.8889dp + 361.7778dp + 362.6667dp + 363.5556dp + 364.4444dp + 365.3333dp + 366.2222dp + 367.1111dp + 368.0000dp + 368.8889dp + 369.7778dp + 370.6667dp + 371.5556dp + 372.4444dp + 373.3333dp + 374.2222dp + 375.1111dp + 376.0000dp + 376.8889dp + 377.7778dp + 378.6667dp + 379.5556dp + 380.4444dp + 381.3333dp + 382.2222dp + 383.1111dp + 384.0000dp + 384.8889dp + 385.7778dp + 386.6667dp + 387.5556dp + 388.4444dp + 389.3333dp + 390.2222dp + 391.1111dp + 392.0000dp + 392.8889dp + 393.7778dp + 394.6667dp + 395.5556dp + 396.4444dp + 397.3333dp + 398.2222dp + 399.1111dp + 400.0000dp + 400.8889dp + 401.7778dp + 402.6667dp + 403.5556dp + 404.4444dp + 405.3333dp + 406.2222dp + 407.1111dp + 408.0000dp + 408.8889dp + 409.7778dp + 410.6667dp + 411.5556dp + 412.4444dp + 413.3333dp + 414.2222dp + 415.1111dp + 416.0000dp + 416.8889dp + 417.7778dp + 418.6667dp + 419.5556dp + 420.4444dp + 421.3333dp + 422.2222dp + 423.1111dp + 424.0000dp + 424.8889dp + 425.7778dp + 426.6667dp + 427.5556dp + 428.4444dp + 429.3333dp + 430.2222dp + 431.1111dp + 432.0000dp + 432.8889dp + 433.7778dp + 434.6667dp + 435.5556dp + 436.4444dp + 437.3333dp + 438.2222dp + 439.1111dp + 440.0000dp + 440.8889dp + 441.7778dp + 442.6667dp + 443.5556dp + 444.4444dp + 533.3333dp + 568.8889dp + 640.0000dp + 0.8889sp + 1.7778sp + 2.6667sp + 3.5556sp + 4.4444sp + 5.3333sp + 6.2222sp + 7.1111sp + 8.0000sp + 8.8889sp + 9.7778sp + 10.6667sp + 11.5556sp + 12.4444sp + 13.3333sp + 14.2222sp + 15.1111sp + 16.0000sp + 16.8889sp + 17.7778sp + 18.6667sp + 19.5556sp + 20.4444sp + 21.3333sp + 22.2222sp + 23.1111sp + 24.0000sp + 24.8889sp + 25.7778sp + 26.6667sp + 27.5556sp + 28.4444sp + 29.3333sp + 30.2222sp + 31.1111sp + 32.0000sp + 32.8889sp + 33.7778sp + 34.6667sp + 35.5556sp + 36.4444sp + 37.3333sp + 38.2222sp + 39.1111sp + 40.0000sp + 40.8889sp + 41.7778sp + 42.6667sp + 43.5556sp + 44.4444sp + diff --git a/app/src/main/res/values-sw360dp/dimens.xml b/app/src/main/res/values-sw360dp/dimens.xml new file mode 100644 index 0000000..21c12a8 --- /dev/null +++ b/app/src/main/res/values-sw360dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.0000dp + 5.0000dp + 40.0000dp + -60.0000dp + -30.0000dp + -20.0000dp + -12.0000dp + -10.0000dp + -8.0000dp + -5.0000dp + -2.0000dp + -1.0000dp + 0.0000dp + 0.1000dp + 0.5000dp + 1.0000dp + 1.5000dp + 2.0000dp + 2.5000dp + 3.0000dp + 3.5000dp + 4.0000dp + 4.5000dp + 5.0000dp + 6.0000dp + 7.0000dp + 8.0000dp + 9.0000dp + 10.0000dp + 11.0000dp + 12.0000dp + 13.0000dp + 14.0000dp + 15.0000dp + 16.0000dp + 17.0000dp + 18.0000dp + 19.0000dp + 20.0000dp + 21.0000dp + 22.0000dp + 23.0000dp + 24.0000dp + 25.0000dp + 26.0000dp + 27.0000dp + 28.0000dp + 29.0000dp + 30.0000dp + 31.0000dp + 32.0000dp + 33.0000dp + 34.0000dp + 35.0000dp + 36.0000dp + 37.0000dp + 38.0000dp + 39.0000dp + 40.0000dp + 41.0000dp + 42.0000dp + 43.0000dp + 44.0000dp + 45.0000dp + 46.0000dp + 47.0000dp + 48.0000dp + 49.0000dp + 50.0000dp + 51.0000dp + 52.0000dp + 53.0000dp + 54.0000dp + 55.0000dp + 56.0000dp + 57.0000dp + 58.0000dp + 59.0000dp + 60.0000dp + 61.0000dp + 62.0000dp + 63.0000dp + 64.0000dp + 65.0000dp + 66.0000dp + 67.0000dp + 68.0000dp + 69.0000dp + 70.0000dp + 71.0000dp + 72.0000dp + 73.0000dp + 74.0000dp + 75.0000dp + 76.0000dp + 77.0000dp + 78.0000dp + 79.0000dp + 80.0000dp + 81.0000dp + 82.0000dp + 83.0000dp + 84.0000dp + 85.0000dp + 86.0000dp + 87.0000dp + 88.0000dp + 89.0000dp + 90.0000dp + 91.0000dp + 92.0000dp + 93.0000dp + 94.0000dp + 95.0000dp + 96.0000dp + 97.0000dp + 98.0000dp + 99.0000dp + 100.0000dp + 101.0000dp + 102.0000dp + 103.0000dp + 104.0000dp + 105.0000dp + 106.0000dp + 107.0000dp + 108.0000dp + 109.0000dp + 110.0000dp + 111.0000dp + 112.0000dp + 113.0000dp + 114.0000dp + 115.0000dp + 116.0000dp + 117.0000dp + 118.0000dp + 119.0000dp + 120.0000dp + 121.0000dp + 122.0000dp + 123.0000dp + 124.0000dp + 125.0000dp + 126.0000dp + 127.0000dp + 128.0000dp + 129.0000dp + 130.0000dp + 131.0000dp + 132.0000dp + 133.0000dp + 134.0000dp + 135.0000dp + 136.0000dp + 137.0000dp + 138.0000dp + 139.0000dp + 140.0000dp + 141.0000dp + 142.0000dp + 143.0000dp + 144.0000dp + 145.0000dp + 146.0000dp + 147.0000dp + 148.0000dp + 149.0000dp + 150.0000dp + 151.0000dp + 152.0000dp + 153.0000dp + 154.0000dp + 155.0000dp + 156.0000dp + 157.0000dp + 158.0000dp + 159.0000dp + 160.0000dp + 161.0000dp + 162.0000dp + 163.0000dp + 164.0000dp + 165.0000dp + 166.0000dp + 167.0000dp + 168.0000dp + 169.0000dp + 170.0000dp + 171.0000dp + 172.0000dp + 173.0000dp + 174.0000dp + 175.0000dp + 176.0000dp + 177.0000dp + 178.0000dp + 179.0000dp + 180.0000dp + 181.0000dp + 182.0000dp + 183.0000dp + 184.0000dp + 185.0000dp + 186.0000dp + 187.0000dp + 188.0000dp + 189.0000dp + 190.0000dp + 191.0000dp + 192.0000dp + 193.0000dp + 194.0000dp + 195.0000dp + 196.0000dp + 197.0000dp + 198.0000dp + 199.0000dp + 200.0000dp + 201.0000dp + 202.0000dp + 203.0000dp + 204.0000dp + 205.0000dp + 206.0000dp + 207.0000dp + 208.0000dp + 209.0000dp + 210.0000dp + 211.0000dp + 212.0000dp + 213.0000dp + 214.0000dp + 215.0000dp + 216.0000dp + 217.0000dp + 218.0000dp + 219.0000dp + 220.0000dp + 221.0000dp + 222.0000dp + 223.0000dp + 224.0000dp + 225.0000dp + 226.0000dp + 227.0000dp + 228.0000dp + 229.0000dp + 230.0000dp + 231.0000dp + 232.0000dp + 233.0000dp + 234.0000dp + 235.0000dp + 236.0000dp + 237.0000dp + 238.0000dp + 239.0000dp + 240.0000dp + 241.0000dp + 242.0000dp + 243.0000dp + 244.0000dp + 245.0000dp + 246.0000dp + 247.0000dp + 248.0000dp + 249.0000dp + 250.0000dp + 251.0000dp + 252.0000dp + 253.0000dp + 254.0000dp + 255.0000dp + 256.0000dp + 257.0000dp + 258.0000dp + 259.0000dp + 260.0000dp + 261.0000dp + 262.0000dp + 263.0000dp + 264.0000dp + 265.0000dp + 266.0000dp + 267.0000dp + 268.0000dp + 269.0000dp + 270.0000dp + 271.0000dp + 272.0000dp + 273.0000dp + 274.0000dp + 275.0000dp + 276.0000dp + 277.0000dp + 278.0000dp + 279.0000dp + 280.0000dp + 281.0000dp + 282.0000dp + 283.0000dp + 284.0000dp + 285.0000dp + 286.0000dp + 287.0000dp + 288.0000dp + 289.0000dp + 290.0000dp + 291.0000dp + 292.0000dp + 293.0000dp + 294.0000dp + 295.0000dp + 296.0000dp + 297.0000dp + 298.0000dp + 299.0000dp + 300.0000dp + 301.0000dp + 302.0000dp + 303.0000dp + 304.0000dp + 305.0000dp + 306.0000dp + 307.0000dp + 308.0000dp + 309.0000dp + 310.0000dp + 311.0000dp + 312.0000dp + 313.0000dp + 314.0000dp + 315.0000dp + 316.0000dp + 317.0000dp + 318.0000dp + 319.0000dp + 320.0000dp + 321.0000dp + 322.0000dp + 323.0000dp + 324.0000dp + 325.0000dp + 326.0000dp + 327.0000dp + 328.0000dp + 329.0000dp + 330.0000dp + 331.0000dp + 332.0000dp + 333.0000dp + 334.0000dp + 335.0000dp + 336.0000dp + 337.0000dp + 338.0000dp + 339.0000dp + 340.0000dp + 341.0000dp + 342.0000dp + 343.0000dp + 344.0000dp + 345.0000dp + 346.0000dp + 347.0000dp + 348.0000dp + 349.0000dp + 350.0000dp + 351.0000dp + 352.0000dp + 353.0000dp + 354.0000dp + 355.0000dp + 356.0000dp + 357.0000dp + 358.0000dp + 359.0000dp + 360.0000dp + 361.0000dp + 362.0000dp + 363.0000dp + 364.0000dp + 365.0000dp + 366.0000dp + 367.0000dp + 368.0000dp + 369.0000dp + 370.0000dp + 371.0000dp + 372.0000dp + 373.0000dp + 374.0000dp + 375.0000dp + 376.0000dp + 377.0000dp + 378.0000dp + 379.0000dp + 380.0000dp + 381.0000dp + 382.0000dp + 383.0000dp + 384.0000dp + 385.0000dp + 386.0000dp + 387.0000dp + 388.0000dp + 389.0000dp + 390.0000dp + 391.0000dp + 392.0000dp + 393.0000dp + 394.0000dp + 395.0000dp + 396.0000dp + 397.0000dp + 398.0000dp + 399.0000dp + 400.0000dp + 401.0000dp + 402.0000dp + 403.0000dp + 404.0000dp + 405.0000dp + 406.0000dp + 407.0000dp + 408.0000dp + 409.0000dp + 410.0000dp + 411.0000dp + 412.0000dp + 413.0000dp + 414.0000dp + 415.0000dp + 416.0000dp + 417.0000dp + 418.0000dp + 419.0000dp + 420.0000dp + 421.0000dp + 422.0000dp + 423.0000dp + 424.0000dp + 425.0000dp + 426.0000dp + 427.0000dp + 428.0000dp + 429.0000dp + 430.0000dp + 431.0000dp + 432.0000dp + 433.0000dp + 434.0000dp + 435.0000dp + 436.0000dp + 437.0000dp + 438.0000dp + 439.0000dp + 440.0000dp + 441.0000dp + 442.0000dp + 443.0000dp + 444.0000dp + 445.0000dp + 446.0000dp + 447.0000dp + 448.0000dp + 449.0000dp + 450.0000dp + 451.0000dp + 452.0000dp + 453.0000dp + 454.0000dp + 455.0000dp + 456.0000dp + 457.0000dp + 458.0000dp + 459.0000dp + 460.0000dp + 461.0000dp + 462.0000dp + 463.0000dp + 464.0000dp + 465.0000dp + 466.0000dp + 467.0000dp + 468.0000dp + 469.0000dp + 470.0000dp + 471.0000dp + 472.0000dp + 473.0000dp + 474.0000dp + 475.0000dp + 476.0000dp + 477.0000dp + 478.0000dp + 479.0000dp + 480.0000dp + 481.0000dp + 482.0000dp + 483.0000dp + 484.0000dp + 485.0000dp + 486.0000dp + 487.0000dp + 488.0000dp + 489.0000dp + 490.0000dp + 491.0000dp + 492.0000dp + 493.0000dp + 494.0000dp + 495.0000dp + 496.0000dp + 497.0000dp + 498.0000dp + 499.0000dp + 500.0000dp + 600.0000dp + 640.0000dp + 720.0000dp + 1.0000sp + 2.0000sp + 3.0000sp + 4.0000sp + 5.0000sp + 6.0000sp + 7.0000sp + 8.0000sp + 9.0000sp + 10.0000sp + 11.0000sp + 12.0000sp + 13.0000sp + 14.0000sp + 15.0000sp + 16.0000sp + 17.0000sp + 18.0000sp + 19.0000sp + 20.0000sp + 21.0000sp + 22.0000sp + 23.0000sp + 24.0000sp + 25.0000sp + 26.0000sp + 27.0000sp + 28.0000sp + 29.0000sp + 30.0000sp + 31.0000sp + 32.0000sp + 33.0000sp + 34.0000sp + 35.0000sp + 36.0000sp + 37.0000sp + 38.0000sp + 39.0000sp + 40.0000sp + 41.0000sp + 42.0000sp + 43.0000sp + 44.0000sp + 45.0000sp + 46.0000sp + 47.0000sp + 48.0000sp + 49.0000sp + 50.0000sp + diff --git a/app/src/main/res/values-sw362dp/dimens.xml b/app/src/main/res/values-sw362dp/dimens.xml new file mode 100644 index 0000000..a708d5d --- /dev/null +++ b/app/src/main/res/values-sw362dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.0063dp + 5.0314dp + 40.2516dp + -60.3773dp + -30.1887dp + -20.1258dp + -12.0755dp + -10.0629dp + -8.0503dp + -5.0314dp + -2.0126dp + -1.0063dp + 0.0000dp + 0.1006dp + 0.5031dp + 1.0063dp + 1.5094dp + 2.0126dp + 2.5157dp + 3.0189dp + 3.5220dp + 4.0252dp + 4.5283dp + 5.0314dp + 6.0377dp + 7.0440dp + 8.0503dp + 9.0566dp + 10.0629dp + 11.0692dp + 12.0755dp + 13.0818dp + 14.0880dp + 15.0943dp + 16.1006dp + 17.1069dp + 18.1132dp + 19.1195dp + 20.1258dp + 21.1321dp + 22.1384dp + 23.1447dp + 24.1509dp + 25.1572dp + 26.1635dp + 27.1698dp + 28.1761dp + 29.1824dp + 30.1887dp + 31.1950dp + 32.2013dp + 33.2075dp + 34.2138dp + 35.2201dp + 36.2264dp + 37.2327dp + 38.2390dp + 39.2453dp + 40.2516dp + 41.2579dp + 42.2641dp + 43.2704dp + 44.2767dp + 45.2830dp + 46.2893dp + 47.2956dp + 48.3019dp + 49.3082dp + 50.3145dp + 51.3207dp + 52.3270dp + 53.3333dp + 54.3396dp + 55.3459dp + 56.3522dp + 57.3585dp + 58.3648dp + 59.3711dp + 60.3773dp + 61.3836dp + 62.3899dp + 63.3962dp + 64.4025dp + 65.4088dp + 66.4151dp + 67.4214dp + 68.4277dp + 69.4340dp + 70.4402dp + 71.4465dp + 72.4528dp + 73.4591dp + 74.4654dp + 75.4717dp + 76.4780dp + 77.4843dp + 78.4906dp + 79.4968dp + 80.5031dp + 81.5094dp + 82.5157dp + 83.5220dp + 84.5283dp + 85.5346dp + 86.5409dp + 87.5472dp + 88.5534dp + 89.5597dp + 90.5660dp + 91.5723dp + 92.5786dp + 93.5849dp + 94.5912dp + 95.5975dp + 96.6038dp + 97.6100dp + 98.6163dp + 99.6226dp + 100.6289dp + 101.6352dp + 102.6415dp + 103.6478dp + 104.6541dp + 105.6604dp + 106.6667dp + 107.6729dp + 108.6792dp + 109.6855dp + 110.6918dp + 111.6981dp + 112.7044dp + 113.7107dp + 114.7170dp + 115.7233dp + 116.7295dp + 117.7358dp + 118.7421dp + 119.7484dp + 120.7547dp + 121.7610dp + 122.7673dp + 123.7736dp + 124.7799dp + 125.7861dp + 126.7924dp + 127.7987dp + 128.8050dp + 129.8113dp + 130.8176dp + 131.8239dp + 132.8302dp + 133.8365dp + 134.8427dp + 135.8490dp + 136.8553dp + 137.8616dp + 138.8679dp + 139.8742dp + 140.8805dp + 141.8868dp + 142.8931dp + 143.8994dp + 144.9056dp + 145.9119dp + 146.9182dp + 147.9245dp + 148.9308dp + 149.9371dp + 150.9434dp + 151.9497dp + 152.9560dp + 153.9622dp + 154.9685dp + 155.9748dp + 156.9811dp + 157.9874dp + 158.9937dp + 160.0000dp + 161.0063dp + 162.0126dp + 163.0188dp + 164.0251dp + 165.0314dp + 166.0377dp + 167.0440dp + 168.0503dp + 169.0566dp + 170.0629dp + 171.0692dp + 172.0754dp + 173.0817dp + 174.0880dp + 175.0943dp + 176.1006dp + 177.1069dp + 178.1132dp + 179.1195dp + 180.1258dp + 181.1320dp + 182.1383dp + 183.1446dp + 184.1509dp + 185.1572dp + 186.1635dp + 187.1698dp + 188.1761dp + 189.1824dp + 190.1887dp + 191.1949dp + 192.2012dp + 193.2075dp + 194.2138dp + 195.2201dp + 196.2264dp + 197.2327dp + 198.2390dp + 199.2453dp + 200.2515dp + 201.2578dp + 202.2641dp + 203.2704dp + 204.2767dp + 205.2830dp + 206.2893dp + 207.2956dp + 208.3019dp + 209.3081dp + 210.3144dp + 211.3207dp + 212.3270dp + 213.3333dp + 214.3396dp + 215.3459dp + 216.3522dp + 217.3585dp + 218.3647dp + 219.3710dp + 220.3773dp + 221.3836dp + 222.3899dp + 223.3962dp + 224.4025dp + 225.4088dp + 226.4151dp + 227.4214dp + 228.4276dp + 229.4339dp + 230.4402dp + 231.4465dp + 232.4528dp + 233.4591dp + 234.4654dp + 235.4717dp + 236.4780dp + 237.4842dp + 238.4905dp + 239.4968dp + 240.5031dp + 241.5094dp + 242.5157dp + 243.5220dp + 244.5283dp + 245.5346dp + 246.5408dp + 247.5471dp + 248.5534dp + 249.5597dp + 250.5660dp + 251.5723dp + 252.5786dp + 253.5849dp + 254.5912dp + 255.5974dp + 256.6037dp + 257.6100dp + 258.6163dp + 259.6226dp + 260.6289dp + 261.6352dp + 262.6415dp + 263.6478dp + 264.6541dp + 265.6603dp + 266.6666dp + 267.6729dp + 268.6792dp + 269.6855dp + 270.6918dp + 271.6981dp + 272.7044dp + 273.7107dp + 274.7169dp + 275.7232dp + 276.7295dp + 277.7358dp + 278.7421dp + 279.7484dp + 280.7547dp + 281.7610dp + 282.7673dp + 283.7735dp + 284.7798dp + 285.7861dp + 286.7924dp + 287.7987dp + 288.8050dp + 289.8113dp + 290.8176dp + 291.8239dp + 292.8301dp + 293.8364dp + 294.8427dp + 295.8490dp + 296.8553dp + 297.8616dp + 298.8679dp + 299.8742dp + 300.8805dp + 301.8868dp + 302.8930dp + 303.8993dp + 304.9056dp + 305.9119dp + 306.9182dp + 307.9245dp + 308.9308dp + 309.9371dp + 310.9434dp + 311.9496dp + 312.9559dp + 313.9622dp + 314.9685dp + 315.9748dp + 316.9811dp + 317.9874dp + 318.9937dp + 320.0000dp + 321.0062dp + 322.0125dp + 323.0188dp + 324.0251dp + 325.0314dp + 326.0377dp + 327.0440dp + 328.0503dp + 329.0566dp + 330.0628dp + 331.0691dp + 332.0754dp + 333.0817dp + 334.0880dp + 335.0943dp + 336.1006dp + 337.1069dp + 338.1132dp + 339.1194dp + 340.1257dp + 341.1320dp + 342.1383dp + 343.1446dp + 344.1509dp + 345.1572dp + 346.1635dp + 347.1698dp + 348.1761dp + 349.1823dp + 350.1886dp + 351.1949dp + 352.2012dp + 353.2075dp + 354.2138dp + 355.2201dp + 356.2264dp + 357.2327dp + 358.2389dp + 359.2452dp + 360.2515dp + 361.2578dp + 362.2641dp + 363.2704dp + 364.2767dp + 365.2830dp + 366.2893dp + 367.2955dp + 368.3018dp + 369.3081dp + 370.3144dp + 371.3207dp + 372.3270dp + 373.3333dp + 374.3396dp + 375.3459dp + 376.3521dp + 377.3584dp + 378.3647dp + 379.3710dp + 380.3773dp + 381.3836dp + 382.3899dp + 383.3962dp + 384.4025dp + 385.4088dp + 386.4150dp + 387.4213dp + 388.4276dp + 389.4339dp + 390.4402dp + 391.4465dp + 392.4528dp + 393.4591dp + 394.4654dp + 395.4716dp + 396.4779dp + 397.4842dp + 398.4905dp + 399.4968dp + 400.5031dp + 401.5094dp + 402.5157dp + 403.5220dp + 404.5282dp + 405.5345dp + 406.5408dp + 407.5471dp + 408.5534dp + 409.5597dp + 410.5660dp + 411.5723dp + 412.5786dp + 413.5848dp + 414.5911dp + 415.5974dp + 416.6037dp + 417.6100dp + 418.6163dp + 419.6226dp + 420.6289dp + 421.6352dp + 422.6415dp + 423.6477dp + 424.6540dp + 425.6603dp + 426.6666dp + 427.6729dp + 428.6792dp + 429.6855dp + 430.6918dp + 431.6981dp + 432.7043dp + 433.7106dp + 434.7169dp + 435.7232dp + 436.7295dp + 437.7358dp + 438.7421dp + 439.7484dp + 440.7547dp + 441.7609dp + 442.7672dp + 443.7735dp + 444.7798dp + 445.7861dp + 446.7924dp + 447.7987dp + 448.8050dp + 449.8113dp + 450.8175dp + 451.8238dp + 452.8301dp + 453.8364dp + 454.8427dp + 455.8490dp + 456.8553dp + 457.8616dp + 458.8679dp + 459.8741dp + 460.8804dp + 461.8867dp + 462.8930dp + 463.8993dp + 464.9056dp + 465.9119dp + 466.9182dp + 467.9245dp + 468.9308dp + 469.9370dp + 470.9433dp + 471.9496dp + 472.9559dp + 473.9622dp + 474.9685dp + 475.9748dp + 476.9811dp + 477.9874dp + 478.9936dp + 479.9999dp + 481.0062dp + 482.0125dp + 483.0188dp + 484.0251dp + 485.0314dp + 486.0377dp + 487.0440dp + 488.0502dp + 489.0565dp + 490.0628dp + 491.0691dp + 492.0754dp + 493.0817dp + 494.0880dp + 495.0943dp + 496.1006dp + 497.1068dp + 498.1131dp + 499.1194dp + 500.1257dp + 501.1320dp + 502.1383dp + 503.1446dp + 603.7735dp + 644.0251dp + 724.5282dp + 1.0063sp + 2.0126sp + 3.0189sp + 4.0252sp + 5.0314sp + 6.0377sp + 7.0440sp + 8.0503sp + 9.0566sp + 10.0629sp + 11.0692sp + 12.0755sp + 13.0818sp + 14.0880sp + 15.0943sp + 16.1006sp + 17.1069sp + 18.1132sp + 19.1195sp + 20.1258sp + 21.1321sp + 22.1384sp + 23.1447sp + 24.1509sp + 25.1572sp + 26.1635sp + 27.1698sp + 28.1761sp + 29.1824sp + 30.1887sp + 31.1950sp + 32.2013sp + 33.2075sp + 34.2138sp + 35.2201sp + 36.2264sp + 37.2327sp + 38.2390sp + 39.2453sp + 40.2516sp + 41.2579sp + 42.2641sp + 43.2704sp + 44.2767sp + 45.2830sp + 46.2893sp + 47.2956sp + 48.3019sp + 49.3082sp + 50.3145sp + diff --git a/app/src/main/res/values-sw384dp/dimens.xml b/app/src/main/res/values-sw384dp/dimens.xml new file mode 100644 index 0000000..e807e1b --- /dev/null +++ b/app/src/main/res/values-sw384dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.0667dp + 5.3333dp + 42.6667dp + -64.0000dp + -32.0000dp + -21.3333dp + -12.8000dp + -10.6667dp + -8.5333dp + -5.3333dp + -2.1333dp + -1.0667dp + 0.0000dp + 0.1067dp + 0.5333dp + 1.0667dp + 1.6000dp + 2.1333dp + 2.6667dp + 3.2000dp + 3.7333dp + 4.2667dp + 4.8000dp + 5.3333dp + 6.4000dp + 7.4667dp + 8.5333dp + 9.6000dp + 10.6667dp + 11.7333dp + 12.8000dp + 13.8667dp + 14.9333dp + 16.0000dp + 17.0667dp + 18.1333dp + 19.2000dp + 20.2667dp + 21.3333dp + 22.4000dp + 23.4667dp + 24.5333dp + 25.6000dp + 26.6667dp + 27.7333dp + 28.8000dp + 29.8667dp + 30.9333dp + 32.0000dp + 33.0667dp + 34.1333dp + 35.2000dp + 36.2667dp + 37.3333dp + 38.4000dp + 39.4667dp + 40.5333dp + 41.6000dp + 42.6667dp + 43.7333dp + 44.8000dp + 45.8667dp + 46.9333dp + 48.0000dp + 49.0667dp + 50.1333dp + 51.2000dp + 52.2667dp + 53.3333dp + 54.4000dp + 55.4667dp + 56.5333dp + 57.6000dp + 58.6667dp + 59.7333dp + 60.8000dp + 61.8667dp + 62.9333dp + 64.0000dp + 65.0667dp + 66.1333dp + 67.2000dp + 68.2667dp + 69.3333dp + 70.4000dp + 71.4667dp + 72.5333dp + 73.6000dp + 74.6667dp + 75.7333dp + 76.8000dp + 77.8667dp + 78.9333dp + 80.0000dp + 81.0667dp + 82.1333dp + 83.2000dp + 84.2667dp + 85.3333dp + 86.4000dp + 87.4667dp + 88.5333dp + 89.6000dp + 90.6667dp + 91.7333dp + 92.8000dp + 93.8667dp + 94.9333dp + 96.0000dp + 97.0667dp + 98.1333dp + 99.2000dp + 100.2667dp + 101.3333dp + 102.4000dp + 103.4667dp + 104.5333dp + 105.6000dp + 106.6667dp + 107.7333dp + 108.8000dp + 109.8667dp + 110.9333dp + 112.0000dp + 113.0667dp + 114.1333dp + 115.2000dp + 116.2667dp + 117.3333dp + 118.4000dp + 119.4667dp + 120.5333dp + 121.6000dp + 122.6667dp + 123.7333dp + 124.8000dp + 125.8667dp + 126.9333dp + 128.0000dp + 129.0667dp + 130.1333dp + 131.2000dp + 132.2667dp + 133.3333dp + 134.4000dp + 135.4667dp + 136.5333dp + 137.6000dp + 138.6667dp + 139.7333dp + 140.8000dp + 141.8667dp + 142.9333dp + 144.0000dp + 145.0667dp + 146.1333dp + 147.2000dp + 148.2667dp + 149.3333dp + 150.4000dp + 151.4667dp + 152.5333dp + 153.6000dp + 154.6667dp + 155.7333dp + 156.8000dp + 157.8667dp + 158.9333dp + 160.0000dp + 161.0667dp + 162.1333dp + 163.2000dp + 164.2667dp + 165.3333dp + 166.4000dp + 167.4667dp + 168.5333dp + 169.6000dp + 170.6667dp + 171.7333dp + 172.8000dp + 173.8667dp + 174.9333dp + 176.0000dp + 177.0667dp + 178.1333dp + 179.2000dp + 180.2667dp + 181.3333dp + 182.4000dp + 183.4667dp + 184.5333dp + 185.6000dp + 186.6667dp + 187.7333dp + 188.8000dp + 189.8667dp + 190.9333dp + 192.0000dp + 193.0667dp + 194.1333dp + 195.2000dp + 196.2667dp + 197.3333dp + 198.4000dp + 199.4667dp + 200.5333dp + 201.6000dp + 202.6667dp + 203.7333dp + 204.8000dp + 205.8667dp + 206.9333dp + 208.0000dp + 209.0667dp + 210.1333dp + 211.2000dp + 212.2667dp + 213.3333dp + 214.4000dp + 215.4667dp + 216.5333dp + 217.6000dp + 218.6667dp + 219.7333dp + 220.8000dp + 221.8667dp + 222.9333dp + 224.0000dp + 225.0667dp + 226.1333dp + 227.2000dp + 228.2667dp + 229.3333dp + 230.4000dp + 231.4667dp + 232.5333dp + 233.6000dp + 234.6667dp + 235.7333dp + 236.8000dp + 237.8667dp + 238.9333dp + 240.0000dp + 241.0667dp + 242.1333dp + 243.2000dp + 244.2667dp + 245.3333dp + 246.4000dp + 247.4667dp + 248.5333dp + 249.6000dp + 250.6667dp + 251.7333dp + 252.8000dp + 253.8667dp + 254.9333dp + 256.0000dp + 257.0667dp + 258.1333dp + 259.2000dp + 260.2667dp + 261.3333dp + 262.4000dp + 263.4667dp + 264.5333dp + 265.6000dp + 266.6667dp + 267.7333dp + 268.8000dp + 269.8667dp + 270.9333dp + 272.0000dp + 273.0667dp + 274.1333dp + 275.2000dp + 276.2667dp + 277.3333dp + 278.4000dp + 279.4667dp + 280.5333dp + 281.6000dp + 282.6667dp + 283.7333dp + 284.8000dp + 285.8667dp + 286.9333dp + 288.0000dp + 289.0667dp + 290.1333dp + 291.2000dp + 292.2667dp + 293.3333dp + 294.4000dp + 295.4667dp + 296.5333dp + 297.6000dp + 298.6667dp + 299.7333dp + 300.8000dp + 301.8667dp + 302.9333dp + 304.0000dp + 305.0667dp + 306.1333dp + 307.2000dp + 308.2667dp + 309.3333dp + 310.4000dp + 311.4667dp + 312.5333dp + 313.6000dp + 314.6667dp + 315.7333dp + 316.8000dp + 317.8667dp + 318.9333dp + 320.0000dp + 321.0667dp + 322.1333dp + 323.2000dp + 324.2667dp + 325.3333dp + 326.4000dp + 327.4667dp + 328.5333dp + 329.6000dp + 330.6667dp + 331.7333dp + 332.8000dp + 333.8667dp + 334.9333dp + 336.0000dp + 337.0667dp + 338.1333dp + 339.2000dp + 340.2667dp + 341.3333dp + 342.4000dp + 343.4667dp + 344.5333dp + 345.6000dp + 346.6667dp + 347.7333dp + 348.8000dp + 349.8667dp + 350.9333dp + 352.0000dp + 353.0667dp + 354.1333dp + 355.2000dp + 356.2667dp + 357.3333dp + 358.4000dp + 359.4667dp + 360.5333dp + 361.6000dp + 362.6667dp + 363.7333dp + 364.8000dp + 365.8667dp + 366.9333dp + 368.0000dp + 369.0667dp + 370.1333dp + 371.2000dp + 372.2667dp + 373.3333dp + 374.4000dp + 375.4667dp + 376.5333dp + 377.6000dp + 378.6667dp + 379.7333dp + 380.8000dp + 381.8667dp + 382.9333dp + 384.0000dp + 385.0667dp + 386.1333dp + 387.2000dp + 388.2667dp + 389.3333dp + 390.4000dp + 391.4667dp + 392.5333dp + 393.6000dp + 394.6667dp + 395.7333dp + 396.8000dp + 397.8667dp + 398.9333dp + 400.0000dp + 401.0667dp + 402.1333dp + 403.2000dp + 404.2667dp + 405.3333dp + 406.4000dp + 407.4667dp + 408.5333dp + 409.6000dp + 410.6667dp + 411.7333dp + 412.8000dp + 413.8667dp + 414.9333dp + 416.0000dp + 417.0667dp + 418.1333dp + 419.2000dp + 420.2667dp + 421.3333dp + 422.4000dp + 423.4667dp + 424.5333dp + 425.6000dp + 426.6667dp + 427.7333dp + 428.8000dp + 429.8667dp + 430.9333dp + 432.0000dp + 433.0667dp + 434.1333dp + 435.2000dp + 436.2667dp + 437.3333dp + 438.4000dp + 439.4667dp + 440.5333dp + 441.6000dp + 442.6667dp + 443.7333dp + 444.8000dp + 445.8667dp + 446.9333dp + 448.0000dp + 449.0667dp + 450.1333dp + 451.2000dp + 452.2667dp + 453.3333dp + 454.4000dp + 455.4667dp + 456.5333dp + 457.6000dp + 458.6667dp + 459.7333dp + 460.8000dp + 461.8667dp + 462.9333dp + 464.0000dp + 465.0667dp + 466.1333dp + 467.2000dp + 468.2667dp + 469.3333dp + 470.4000dp + 471.4667dp + 472.5333dp + 473.6000dp + 474.6667dp + 475.7333dp + 476.8000dp + 477.8667dp + 478.9333dp + 480.0000dp + 481.0667dp + 482.1333dp + 483.2000dp + 484.2667dp + 485.3333dp + 486.4000dp + 487.4667dp + 488.5333dp + 489.6000dp + 490.6667dp + 491.7333dp + 492.8000dp + 493.8667dp + 494.9333dp + 496.0000dp + 497.0667dp + 498.1333dp + 499.2000dp + 500.2667dp + 501.3333dp + 502.4000dp + 503.4667dp + 504.5333dp + 505.6000dp + 506.6667dp + 507.7333dp + 508.8000dp + 509.8667dp + 510.9333dp + 512.0000dp + 513.0667dp + 514.1333dp + 515.2000dp + 516.2667dp + 517.3333dp + 518.4000dp + 519.4667dp + 520.5333dp + 521.6000dp + 522.6667dp + 523.7333dp + 524.8000dp + 525.8667dp + 526.9333dp + 528.0000dp + 529.0667dp + 530.1333dp + 531.2000dp + 532.2667dp + 533.3333dp + 640.0000dp + 682.6667dp + 768.0000dp + 1.0667sp + 2.1333sp + 3.2000sp + 4.2667sp + 5.3333sp + 6.4000sp + 7.4667sp + 8.5333sp + 9.6000sp + 10.6667sp + 11.7333sp + 12.8000sp + 13.8667sp + 14.9333sp + 16.0000sp + 17.0667sp + 18.1333sp + 19.2000sp + 20.2667sp + 21.3333sp + 22.4000sp + 23.4667sp + 24.5333sp + 25.6000sp + 26.6667sp + 27.7333sp + 28.8000sp + 29.8667sp + 30.9333sp + 32.0000sp + 33.0667sp + 34.1333sp + 35.2000sp + 36.2667sp + 37.3333sp + 38.4000sp + 39.4667sp + 40.5333sp + 41.6000sp + 42.6667sp + 43.7333sp + 44.8000sp + 45.8667sp + 46.9333sp + 48.0000sp + 49.0667sp + 50.1333sp + 51.2000sp + 52.2667sp + 53.3333sp + diff --git a/app/src/main/res/values-sw392dp/dimens.xml b/app/src/main/res/values-sw392dp/dimens.xml new file mode 100644 index 0000000..6801e84 --- /dev/null +++ b/app/src/main/res/values-sw392dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.0909dp + 5.4545dp + 43.6364dp + -65.4545dp + -32.7273dp + -21.8182dp + -13.0909dp + -10.9091dp + -8.7273dp + -5.4545dp + -2.1818dp + -1.0909dp + 0.0000dp + 0.1091dp + 0.5455dp + 1.0909dp + 1.6364dp + 2.1818dp + 2.7273dp + 3.2727dp + 3.8182dp + 4.3636dp + 4.9091dp + 5.4545dp + 6.5455dp + 7.6364dp + 8.7273dp + 9.8182dp + 10.9091dp + 12.0000dp + 13.0909dp + 14.1818dp + 15.2727dp + 16.3636dp + 17.4545dp + 18.5455dp + 19.6364dp + 20.7273dp + 21.8182dp + 22.9091dp + 24.0000dp + 25.0909dp + 26.1818dp + 27.2727dp + 28.3636dp + 29.4545dp + 30.5454dp + 31.6364dp + 32.7273dp + 33.8182dp + 34.9091dp + 36.0000dp + 37.0909dp + 38.1818dp + 39.2727dp + 40.3636dp + 41.4545dp + 42.5454dp + 43.6364dp + 44.7273dp + 45.8182dp + 46.9091dp + 48.0000dp + 49.0909dp + 50.1818dp + 51.2727dp + 52.3636dp + 53.4545dp + 54.5454dp + 55.6364dp + 56.7273dp + 57.8182dp + 58.9091dp + 60.0000dp + 61.0909dp + 62.1818dp + 63.2727dp + 64.3636dp + 65.4545dp + 66.5454dp + 67.6364dp + 68.7273dp + 69.8182dp + 70.9091dp + 72.0000dp + 73.0909dp + 74.1818dp + 75.2727dp + 76.3636dp + 77.4545dp + 78.5454dp + 79.6363dp + 80.7273dp + 81.8182dp + 82.9091dp + 84.0000dp + 85.0909dp + 86.1818dp + 87.2727dp + 88.3636dp + 89.4545dp + 90.5454dp + 91.6363dp + 92.7273dp + 93.8182dp + 94.9091dp + 96.0000dp + 97.0909dp + 98.1818dp + 99.2727dp + 100.3636dp + 101.4545dp + 102.5454dp + 103.6363dp + 104.7273dp + 105.8182dp + 106.9091dp + 108.0000dp + 109.0909dp + 110.1818dp + 111.2727dp + 112.3636dp + 113.4545dp + 114.5454dp + 115.6363dp + 116.7273dp + 117.8182dp + 118.9091dp + 120.0000dp + 121.0909dp + 122.1818dp + 123.2727dp + 124.3636dp + 125.4545dp + 126.5454dp + 127.6363dp + 128.7272dp + 129.8182dp + 130.9091dp + 132.0000dp + 133.0909dp + 134.1818dp + 135.2727dp + 136.3636dp + 137.4545dp + 138.5454dp + 139.6363dp + 140.7272dp + 141.8182dp + 142.9091dp + 144.0000dp + 145.0909dp + 146.1818dp + 147.2727dp + 148.3636dp + 149.4545dp + 150.5454dp + 151.6363dp + 152.7272dp + 153.8182dp + 154.9091dp + 156.0000dp + 157.0909dp + 158.1818dp + 159.2727dp + 160.3636dp + 161.4545dp + 162.5454dp + 163.6363dp + 164.7272dp + 165.8182dp + 166.9091dp + 168.0000dp + 169.0909dp + 170.1818dp + 171.2727dp + 172.3636dp + 173.4545dp + 174.5454dp + 175.6363dp + 176.7272dp + 177.8181dp + 178.9091dp + 180.0000dp + 181.0909dp + 182.1818dp + 183.2727dp + 184.3636dp + 185.4545dp + 186.5454dp + 187.6363dp + 188.7272dp + 189.8181dp + 190.9091dp + 192.0000dp + 193.0909dp + 194.1818dp + 195.2727dp + 196.3636dp + 197.4545dp + 198.5454dp + 199.6363dp + 200.7272dp + 201.8181dp + 202.9091dp + 204.0000dp + 205.0909dp + 206.1818dp + 207.2727dp + 208.3636dp + 209.4545dp + 210.5454dp + 211.6363dp + 212.7272dp + 213.8181dp + 214.9091dp + 216.0000dp + 217.0909dp + 218.1818dp + 219.2727dp + 220.3636dp + 221.4545dp + 222.5454dp + 223.6363dp + 224.7272dp + 225.8181dp + 226.9090dp + 228.0000dp + 229.0909dp + 230.1818dp + 231.2727dp + 232.3636dp + 233.4545dp + 234.5454dp + 235.6363dp + 236.7272dp + 237.8181dp + 238.9090dp + 240.0000dp + 241.0909dp + 242.1818dp + 243.2727dp + 244.3636dp + 245.4545dp + 246.5454dp + 247.6363dp + 248.7272dp + 249.8181dp + 250.9090dp + 252.0000dp + 253.0909dp + 254.1818dp + 255.2727dp + 256.3636dp + 257.4545dp + 258.5454dp + 259.6363dp + 260.7272dp + 261.8181dp + 262.9090dp + 264.0000dp + 265.0909dp + 266.1818dp + 267.2727dp + 268.3636dp + 269.4545dp + 270.5454dp + 271.6363dp + 272.7272dp + 273.8181dp + 274.9090dp + 275.9999dp + 277.0909dp + 278.1818dp + 279.2727dp + 280.3636dp + 281.4545dp + 282.5454dp + 283.6363dp + 284.7272dp + 285.8181dp + 286.9090dp + 287.9999dp + 289.0909dp + 290.1818dp + 291.2727dp + 292.3636dp + 293.4545dp + 294.5454dp + 295.6363dp + 296.7272dp + 297.8181dp + 298.9090dp + 299.9999dp + 301.0909dp + 302.1818dp + 303.2727dp + 304.3636dp + 305.4545dp + 306.5454dp + 307.6363dp + 308.7272dp + 309.8181dp + 310.9090dp + 311.9999dp + 313.0909dp + 314.1818dp + 315.2727dp + 316.3636dp + 317.4545dp + 318.5454dp + 319.6363dp + 320.7272dp + 321.8181dp + 322.9090dp + 323.9999dp + 325.0908dp + 326.1818dp + 327.2727dp + 328.3636dp + 329.4545dp + 330.5454dp + 331.6363dp + 332.7272dp + 333.8181dp + 334.9090dp + 335.9999dp + 337.0908dp + 338.1818dp + 339.2727dp + 340.3636dp + 341.4545dp + 342.5454dp + 343.6363dp + 344.7272dp + 345.8181dp + 346.9090dp + 347.9999dp + 349.0908dp + 350.1818dp + 351.2727dp + 352.3636dp + 353.4545dp + 354.5454dp + 355.6363dp + 356.7272dp + 357.8181dp + 358.9090dp + 359.9999dp + 361.0908dp + 362.1818dp + 363.2727dp + 364.3636dp + 365.4545dp + 366.5454dp + 367.6363dp + 368.7272dp + 369.8181dp + 370.9090dp + 371.9999dp + 373.0908dp + 374.1817dp + 375.2727dp + 376.3636dp + 377.4545dp + 378.5454dp + 379.6363dp + 380.7272dp + 381.8181dp + 382.9090dp + 383.9999dp + 385.0908dp + 386.1817dp + 387.2727dp + 388.3636dp + 389.4545dp + 390.5454dp + 391.6363dp + 392.7272dp + 393.8181dp + 394.9090dp + 395.9999dp + 397.0908dp + 398.1817dp + 399.2727dp + 400.3636dp + 401.4545dp + 402.5454dp + 403.6363dp + 404.7272dp + 405.8181dp + 406.9090dp + 407.9999dp + 409.0908dp + 410.1817dp + 411.2727dp + 412.3636dp + 413.4545dp + 414.5454dp + 415.6363dp + 416.7272dp + 417.8181dp + 418.9090dp + 419.9999dp + 421.0908dp + 422.1817dp + 423.2726dp + 424.3636dp + 425.4545dp + 426.5454dp + 427.6363dp + 428.7272dp + 429.8181dp + 430.9090dp + 431.9999dp + 433.0908dp + 434.1817dp + 435.2726dp + 436.3636dp + 437.4545dp + 438.5454dp + 439.6363dp + 440.7272dp + 441.8181dp + 442.9090dp + 443.9999dp + 445.0908dp + 446.1817dp + 447.2726dp + 448.3636dp + 449.4545dp + 450.5454dp + 451.6363dp + 452.7272dp + 453.8181dp + 454.9090dp + 455.9999dp + 457.0908dp + 458.1817dp + 459.2726dp + 460.3636dp + 461.4545dp + 462.5454dp + 463.6363dp + 464.7272dp + 465.8181dp + 466.9090dp + 467.9999dp + 469.0908dp + 470.1817dp + 471.2726dp + 472.3635dp + 473.4545dp + 474.5454dp + 475.6363dp + 476.7272dp + 477.8181dp + 478.9090dp + 479.9999dp + 481.0908dp + 482.1817dp + 483.2726dp + 484.3635dp + 485.4545dp + 486.5454dp + 487.6363dp + 488.7272dp + 489.8181dp + 490.9090dp + 491.9999dp + 493.0908dp + 494.1817dp + 495.2726dp + 496.3635dp + 497.4545dp + 498.5454dp + 499.6363dp + 500.7272dp + 501.8181dp + 502.9090dp + 503.9999dp + 505.0908dp + 506.1817dp + 507.2726dp + 508.3635dp + 509.4545dp + 510.5454dp + 511.6363dp + 512.7272dp + 513.8181dp + 514.9090dp + 515.9999dp + 517.0908dp + 518.1817dp + 519.2726dp + 520.3635dp + 521.4544dp + 522.5454dp + 523.6363dp + 524.7272dp + 525.8181dp + 526.9090dp + 527.9999dp + 529.0908dp + 530.1817dp + 531.2726dp + 532.3635dp + 533.4544dp + 534.5454dp + 535.6363dp + 536.7272dp + 537.8181dp + 538.9090dp + 539.9999dp + 541.0908dp + 542.1817dp + 543.2726dp + 544.3635dp + 545.4544dp + 654.5453dp + 698.1817dp + 785.4544dp + 1.0909sp + 2.1818sp + 3.2727sp + 4.3636sp + 5.4545sp + 6.5455sp + 7.6364sp + 8.7273sp + 9.8182sp + 10.9091sp + 12.0000sp + 13.0909sp + 14.1818sp + 15.2727sp + 16.3636sp + 17.4545sp + 18.5455sp + 19.6364sp + 20.7273sp + 21.8182sp + 22.9091sp + 24.0000sp + 25.0909sp + 26.1818sp + 27.2727sp + 28.3636sp + 29.4545sp + 30.5454sp + 31.6364sp + 32.7273sp + 33.8182sp + 34.9091sp + 36.0000sp + 37.0909sp + 38.1818sp + 39.2727sp + 40.3636sp + 41.4545sp + 42.5454sp + 43.6364sp + 44.7273sp + 45.8182sp + 46.9091sp + 48.0000sp + 49.0909sp + 50.1818sp + 51.2727sp + 52.3636sp + 53.4545sp + 54.5454sp + diff --git a/app/src/main/res/values-sw400dp/dimens.xml b/app/src/main/res/values-sw400dp/dimens.xml new file mode 100644 index 0000000..51a9e2f --- /dev/null +++ b/app/src/main/res/values-sw400dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.1111dp + 5.5556dp + 44.4444dp + -66.6667dp + -33.3333dp + -22.2222dp + -13.3333dp + -11.1111dp + -8.8889dp + -5.5556dp + -2.2222dp + -1.1111dp + 0.0000dp + 0.1111dp + 0.5556dp + 1.1111dp + 1.6667dp + 2.2222dp + 2.7778dp + 3.3333dp + 3.8889dp + 4.4444dp + 5.0000dp + 5.5556dp + 6.6667dp + 7.7778dp + 8.8889dp + 10.0000dp + 11.1111dp + 12.2222dp + 13.3333dp + 14.4444dp + 15.5556dp + 16.6667dp + 17.7778dp + 18.8889dp + 20.0000dp + 21.1111dp + 22.2222dp + 23.3333dp + 24.4444dp + 25.5556dp + 26.6667dp + 27.7778dp + 28.8889dp + 30.0000dp + 31.1111dp + 32.2222dp + 33.3333dp + 34.4444dp + 35.5556dp + 36.6667dp + 37.7778dp + 38.8889dp + 40.0000dp + 41.1111dp + 42.2222dp + 43.3333dp + 44.4444dp + 45.5556dp + 46.6667dp + 47.7778dp + 48.8889dp + 50.0000dp + 51.1111dp + 52.2222dp + 53.3333dp + 54.4444dp + 55.5556dp + 56.6667dp + 57.7778dp + 58.8889dp + 60.0000dp + 61.1111dp + 62.2222dp + 63.3333dp + 64.4444dp + 65.5556dp + 66.6667dp + 67.7778dp + 68.8889dp + 70.0000dp + 71.1111dp + 72.2222dp + 73.3333dp + 74.4444dp + 75.5556dp + 76.6667dp + 77.7778dp + 78.8889dp + 80.0000dp + 81.1111dp + 82.2222dp + 83.3333dp + 84.4444dp + 85.5556dp + 86.6667dp + 87.7778dp + 88.8889dp + 90.0000dp + 91.1111dp + 92.2222dp + 93.3333dp + 94.4444dp + 95.5556dp + 96.6667dp + 97.7778dp + 98.8889dp + 100.0000dp + 101.1111dp + 102.2222dp + 103.3333dp + 104.4444dp + 105.5556dp + 106.6667dp + 107.7778dp + 108.8889dp + 110.0000dp + 111.1111dp + 112.2222dp + 113.3333dp + 114.4444dp + 115.5556dp + 116.6667dp + 117.7778dp + 118.8889dp + 120.0000dp + 121.1111dp + 122.2222dp + 123.3333dp + 124.4444dp + 125.5556dp + 126.6667dp + 127.7778dp + 128.8889dp + 130.0000dp + 131.1111dp + 132.2222dp + 133.3333dp + 134.4444dp + 135.5556dp + 136.6667dp + 137.7778dp + 138.8889dp + 140.0000dp + 141.1111dp + 142.2222dp + 143.3333dp + 144.4444dp + 145.5556dp + 146.6667dp + 147.7778dp + 148.8889dp + 150.0000dp + 151.1111dp + 152.2222dp + 153.3333dp + 154.4444dp + 155.5556dp + 156.6667dp + 157.7778dp + 158.8889dp + 160.0000dp + 161.1111dp + 162.2222dp + 163.3333dp + 164.4444dp + 165.5556dp + 166.6667dp + 167.7778dp + 168.8889dp + 170.0000dp + 171.1111dp + 172.2222dp + 173.3333dp + 174.4444dp + 175.5556dp + 176.6667dp + 177.7778dp + 178.8889dp + 180.0000dp + 181.1111dp + 182.2222dp + 183.3333dp + 184.4444dp + 185.5556dp + 186.6667dp + 187.7778dp + 188.8889dp + 190.0000dp + 191.1111dp + 192.2222dp + 193.3333dp + 194.4444dp + 195.5556dp + 196.6667dp + 197.7778dp + 198.8889dp + 200.0000dp + 201.1111dp + 202.2222dp + 203.3333dp + 204.4444dp + 205.5556dp + 206.6667dp + 207.7778dp + 208.8889dp + 210.0000dp + 211.1111dp + 212.2222dp + 213.3333dp + 214.4444dp + 215.5556dp + 216.6667dp + 217.7778dp + 218.8889dp + 220.0000dp + 221.1111dp + 222.2222dp + 223.3333dp + 224.4444dp + 225.5556dp + 226.6667dp + 227.7778dp + 228.8889dp + 230.0000dp + 231.1111dp + 232.2222dp + 233.3333dp + 234.4444dp + 235.5556dp + 236.6667dp + 237.7778dp + 238.8889dp + 240.0000dp + 241.1111dp + 242.2222dp + 243.3333dp + 244.4444dp + 245.5556dp + 246.6667dp + 247.7778dp + 248.8889dp + 250.0000dp + 251.1111dp + 252.2222dp + 253.3333dp + 254.4444dp + 255.5556dp + 256.6667dp + 257.7778dp + 258.8889dp + 260.0000dp + 261.1111dp + 262.2222dp + 263.3333dp + 264.4444dp + 265.5556dp + 266.6667dp + 267.7778dp + 268.8889dp + 270.0000dp + 271.1111dp + 272.2222dp + 273.3333dp + 274.4444dp + 275.5556dp + 276.6667dp + 277.7778dp + 278.8889dp + 280.0000dp + 281.1111dp + 282.2222dp + 283.3333dp + 284.4444dp + 285.5556dp + 286.6667dp + 287.7778dp + 288.8889dp + 290.0000dp + 291.1111dp + 292.2222dp + 293.3333dp + 294.4444dp + 295.5556dp + 296.6667dp + 297.7778dp + 298.8889dp + 300.0000dp + 301.1111dp + 302.2222dp + 303.3333dp + 304.4444dp + 305.5556dp + 306.6667dp + 307.7778dp + 308.8889dp + 310.0000dp + 311.1111dp + 312.2222dp + 313.3333dp + 314.4444dp + 315.5556dp + 316.6667dp + 317.7778dp + 318.8889dp + 320.0000dp + 321.1111dp + 322.2222dp + 323.3333dp + 324.4444dp + 325.5556dp + 326.6667dp + 327.7778dp + 328.8889dp + 330.0000dp + 331.1111dp + 332.2222dp + 333.3333dp + 334.4444dp + 335.5556dp + 336.6667dp + 337.7778dp + 338.8889dp + 340.0000dp + 341.1111dp + 342.2222dp + 343.3333dp + 344.4444dp + 345.5556dp + 346.6667dp + 347.7778dp + 348.8889dp + 350.0000dp + 351.1111dp + 352.2222dp + 353.3333dp + 354.4444dp + 355.5556dp + 356.6667dp + 357.7778dp + 358.8889dp + 360.0000dp + 361.1111dp + 362.2222dp + 363.3333dp + 364.4444dp + 365.5556dp + 366.6667dp + 367.7778dp + 368.8889dp + 370.0000dp + 371.1111dp + 372.2222dp + 373.3333dp + 374.4444dp + 375.5556dp + 376.6667dp + 377.7778dp + 378.8889dp + 380.0000dp + 381.1111dp + 382.2222dp + 383.3333dp + 384.4444dp + 385.5556dp + 386.6667dp + 387.7778dp + 388.8889dp + 390.0000dp + 391.1111dp + 392.2222dp + 393.3333dp + 394.4444dp + 395.5556dp + 396.6667dp + 397.7778dp + 398.8889dp + 400.0000dp + 401.1111dp + 402.2222dp + 403.3333dp + 404.4444dp + 405.5556dp + 406.6667dp + 407.7778dp + 408.8889dp + 410.0000dp + 411.1111dp + 412.2222dp + 413.3333dp + 414.4444dp + 415.5556dp + 416.6667dp + 417.7778dp + 418.8889dp + 420.0000dp + 421.1111dp + 422.2222dp + 423.3333dp + 424.4444dp + 425.5556dp + 426.6667dp + 427.7778dp + 428.8889dp + 430.0000dp + 431.1111dp + 432.2222dp + 433.3333dp + 434.4444dp + 435.5556dp + 436.6667dp + 437.7778dp + 438.8889dp + 440.0000dp + 441.1111dp + 442.2222dp + 443.3333dp + 444.4444dp + 445.5556dp + 446.6667dp + 447.7778dp + 448.8889dp + 450.0000dp + 451.1111dp + 452.2222dp + 453.3333dp + 454.4444dp + 455.5556dp + 456.6667dp + 457.7778dp + 458.8889dp + 460.0000dp + 461.1111dp + 462.2222dp + 463.3333dp + 464.4444dp + 465.5556dp + 466.6667dp + 467.7778dp + 468.8889dp + 470.0000dp + 471.1111dp + 472.2222dp + 473.3333dp + 474.4444dp + 475.5556dp + 476.6667dp + 477.7778dp + 478.8889dp + 480.0000dp + 481.1111dp + 482.2222dp + 483.3333dp + 484.4444dp + 485.5556dp + 486.6667dp + 487.7778dp + 488.8889dp + 490.0000dp + 491.1111dp + 492.2222dp + 493.3333dp + 494.4444dp + 495.5556dp + 496.6667dp + 497.7778dp + 498.8889dp + 500.0000dp + 501.1111dp + 502.2222dp + 503.3333dp + 504.4444dp + 505.5556dp + 506.6667dp + 507.7778dp + 508.8889dp + 510.0000dp + 511.1111dp + 512.2222dp + 513.3333dp + 514.4444dp + 515.5556dp + 516.6667dp + 517.7778dp + 518.8889dp + 520.0000dp + 521.1111dp + 522.2222dp + 523.3333dp + 524.4444dp + 525.5556dp + 526.6667dp + 527.7778dp + 528.8889dp + 530.0000dp + 531.1111dp + 532.2222dp + 533.3333dp + 534.4444dp + 535.5556dp + 536.6667dp + 537.7778dp + 538.8889dp + 540.0000dp + 541.1111dp + 542.2222dp + 543.3333dp + 544.4444dp + 545.5556dp + 546.6667dp + 547.7778dp + 548.8889dp + 550.0000dp + 551.1111dp + 552.2222dp + 553.3333dp + 554.4444dp + 555.5556dp + 666.6667dp + 711.1111dp + 800.0000dp + 1.1111sp + 2.2222sp + 3.3333sp + 4.4444sp + 5.5556sp + 6.6667sp + 7.7778sp + 8.8889sp + 10.0000sp + 11.1111sp + 12.2222sp + 13.3333sp + 14.4444sp + 15.5556sp + 16.6667sp + 17.7778sp + 18.8889sp + 20.0000sp + 21.1111sp + 22.2222sp + 23.3333sp + 24.4444sp + 25.5556sp + 26.6667sp + 27.7778sp + 28.8889sp + 30.0000sp + 31.1111sp + 32.2222sp + 33.3333sp + 34.4444sp + 35.5556sp + 36.6667sp + 37.7778sp + 38.8889sp + 40.0000sp + 41.1111sp + 42.2222sp + 43.3333sp + 44.4444sp + 45.5556sp + 46.6667sp + 47.7778sp + 48.8889sp + 50.0000sp + 51.1111sp + 52.2222sp + 53.3333sp + 54.4444sp + 55.5556sp + diff --git a/app/src/main/res/values-sw410dp/dimens.xml b/app/src/main/res/values-sw410dp/dimens.xml new file mode 100644 index 0000000..9e1c201 --- /dev/null +++ b/app/src/main/res/values-sw410dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.1389dp + 5.6944dp + 45.5556dp + -68.3333dp + -34.1667dp + -22.7778dp + -13.6667dp + -11.3889dp + -9.1111dp + -5.6944dp + -2.2778dp + -1.1389dp + 0.0000dp + 0.1139dp + 0.5694dp + 1.1389dp + 1.7083dp + 2.2778dp + 2.8472dp + 3.4167dp + 3.9861dp + 4.5556dp + 5.1250dp + 5.6944dp + 6.8333dp + 7.9722dp + 9.1111dp + 10.2500dp + 11.3889dp + 12.5278dp + 13.6667dp + 14.8056dp + 15.9444dp + 17.0833dp + 18.2222dp + 19.3611dp + 20.5000dp + 21.6389dp + 22.7778dp + 23.9167dp + 25.0556dp + 26.1944dp + 27.3333dp + 28.4722dp + 29.6111dp + 30.7500dp + 31.8889dp + 33.0278dp + 34.1667dp + 35.3056dp + 36.4444dp + 37.5833dp + 38.7222dp + 39.8611dp + 41.0000dp + 42.1389dp + 43.2778dp + 44.4167dp + 45.5556dp + 46.6944dp + 47.8333dp + 48.9722dp + 50.1111dp + 51.2500dp + 52.3889dp + 53.5278dp + 54.6667dp + 55.8056dp + 56.9444dp + 58.0833dp + 59.2222dp + 60.3611dp + 61.5000dp + 62.6389dp + 63.7778dp + 64.9167dp + 66.0556dp + 67.1944dp + 68.3333dp + 69.4722dp + 70.6111dp + 71.7500dp + 72.8889dp + 74.0278dp + 75.1667dp + 76.3056dp + 77.4444dp + 78.5833dp + 79.7222dp + 80.8611dp + 82.0000dp + 83.1389dp + 84.2778dp + 85.4167dp + 86.5556dp + 87.6944dp + 88.8333dp + 89.9722dp + 91.1111dp + 92.2500dp + 93.3889dp + 94.5278dp + 95.6667dp + 96.8056dp + 97.9444dp + 99.0833dp + 100.2222dp + 101.3611dp + 102.5000dp + 103.6389dp + 104.7778dp + 105.9167dp + 107.0556dp + 108.1944dp + 109.3333dp + 110.4722dp + 111.6111dp + 112.7500dp + 113.8889dp + 115.0278dp + 116.1667dp + 117.3056dp + 118.4444dp + 119.5833dp + 120.7222dp + 121.8611dp + 123.0000dp + 124.1389dp + 125.2778dp + 126.4167dp + 127.5556dp + 128.6944dp + 129.8333dp + 130.9722dp + 132.1111dp + 133.2500dp + 134.3889dp + 135.5278dp + 136.6667dp + 137.8056dp + 138.9444dp + 140.0833dp + 141.2222dp + 142.3611dp + 143.5000dp + 144.6389dp + 145.7778dp + 146.9167dp + 148.0556dp + 149.1944dp + 150.3333dp + 151.4722dp + 152.6111dp + 153.7500dp + 154.8889dp + 156.0278dp + 157.1667dp + 158.3056dp + 159.4444dp + 160.5833dp + 161.7222dp + 162.8611dp + 164.0000dp + 165.1389dp + 166.2778dp + 167.4167dp + 168.5556dp + 169.6944dp + 170.8333dp + 171.9722dp + 173.1111dp + 174.2500dp + 175.3889dp + 176.5278dp + 177.6667dp + 178.8056dp + 179.9444dp + 181.0833dp + 182.2222dp + 183.3611dp + 184.5000dp + 185.6389dp + 186.7778dp + 187.9167dp + 189.0556dp + 190.1944dp + 191.3333dp + 192.4722dp + 193.6111dp + 194.7500dp + 195.8889dp + 197.0278dp + 198.1667dp + 199.3056dp + 200.4444dp + 201.5833dp + 202.7222dp + 203.8611dp + 205.0000dp + 206.1389dp + 207.2778dp + 208.4167dp + 209.5556dp + 210.6944dp + 211.8333dp + 212.9722dp + 214.1111dp + 215.2500dp + 216.3889dp + 217.5278dp + 218.6667dp + 219.8056dp + 220.9444dp + 222.0833dp + 223.2222dp + 224.3611dp + 225.5000dp + 226.6389dp + 227.7778dp + 228.9167dp + 230.0556dp + 231.1944dp + 232.3333dp + 233.4722dp + 234.6111dp + 235.7500dp + 236.8889dp + 238.0278dp + 239.1667dp + 240.3056dp + 241.4444dp + 242.5833dp + 243.7222dp + 244.8611dp + 246.0000dp + 247.1389dp + 248.2778dp + 249.4167dp + 250.5556dp + 251.6944dp + 252.8333dp + 253.9722dp + 255.1111dp + 256.2500dp + 257.3889dp + 258.5278dp + 259.6667dp + 260.8056dp + 261.9444dp + 263.0833dp + 264.2222dp + 265.3611dp + 266.5000dp + 267.6389dp + 268.7778dp + 269.9167dp + 271.0556dp + 272.1944dp + 273.3333dp + 274.4722dp + 275.6111dp + 276.7500dp + 277.8889dp + 279.0278dp + 280.1667dp + 281.3056dp + 282.4444dp + 283.5833dp + 284.7222dp + 285.8611dp + 287.0000dp + 288.1389dp + 289.2778dp + 290.4167dp + 291.5556dp + 292.6944dp + 293.8333dp + 294.9722dp + 296.1111dp + 297.2500dp + 298.3889dp + 299.5278dp + 300.6667dp + 301.8056dp + 302.9444dp + 304.0833dp + 305.2222dp + 306.3611dp + 307.5000dp + 308.6389dp + 309.7778dp + 310.9167dp + 312.0556dp + 313.1944dp + 314.3333dp + 315.4722dp + 316.6111dp + 317.7500dp + 318.8889dp + 320.0278dp + 321.1667dp + 322.3056dp + 323.4444dp + 324.5833dp + 325.7222dp + 326.8611dp + 328.0000dp + 329.1389dp + 330.2778dp + 331.4167dp + 332.5556dp + 333.6944dp + 334.8333dp + 335.9722dp + 337.1111dp + 338.2500dp + 339.3889dp + 340.5278dp + 341.6667dp + 342.8056dp + 343.9444dp + 345.0833dp + 346.2222dp + 347.3611dp + 348.5000dp + 349.6389dp + 350.7778dp + 351.9167dp + 353.0556dp + 354.1944dp + 355.3333dp + 356.4722dp + 357.6111dp + 358.7500dp + 359.8889dp + 361.0278dp + 362.1667dp + 363.3056dp + 364.4444dp + 365.5833dp + 366.7222dp + 367.8611dp + 369.0000dp + 370.1389dp + 371.2778dp + 372.4167dp + 373.5556dp + 374.6944dp + 375.8333dp + 376.9722dp + 378.1111dp + 379.2500dp + 380.3889dp + 381.5278dp + 382.6667dp + 383.8056dp + 384.9444dp + 386.0833dp + 387.2222dp + 388.3611dp + 389.5000dp + 390.6389dp + 391.7778dp + 392.9167dp + 394.0556dp + 395.1944dp + 396.3333dp + 397.4722dp + 398.6111dp + 399.7500dp + 400.8889dp + 402.0278dp + 403.1667dp + 404.3056dp + 405.4444dp + 406.5833dp + 407.7222dp + 408.8611dp + 410.0000dp + 411.1389dp + 412.2778dp + 413.4167dp + 414.5556dp + 415.6944dp + 416.8333dp + 417.9722dp + 419.1111dp + 420.2500dp + 421.3889dp + 422.5278dp + 423.6667dp + 424.8056dp + 425.9444dp + 427.0833dp + 428.2222dp + 429.3611dp + 430.5000dp + 431.6389dp + 432.7778dp + 433.9167dp + 435.0556dp + 436.1944dp + 437.3333dp + 438.4722dp + 439.6111dp + 440.7500dp + 441.8889dp + 443.0278dp + 444.1667dp + 445.3056dp + 446.4444dp + 447.5833dp + 448.7222dp + 449.8611dp + 451.0000dp + 452.1389dp + 453.2778dp + 454.4167dp + 455.5556dp + 456.6944dp + 457.8333dp + 458.9722dp + 460.1111dp + 461.2500dp + 462.3889dp + 463.5278dp + 464.6667dp + 465.8056dp + 466.9444dp + 468.0833dp + 469.2222dp + 470.3611dp + 471.5000dp + 472.6389dp + 473.7778dp + 474.9167dp + 476.0556dp + 477.1944dp + 478.3333dp + 479.4722dp + 480.6111dp + 481.7500dp + 482.8889dp + 484.0278dp + 485.1667dp + 486.3056dp + 487.4444dp + 488.5833dp + 489.7222dp + 490.8611dp + 492.0000dp + 493.1389dp + 494.2778dp + 495.4167dp + 496.5556dp + 497.6944dp + 498.8333dp + 499.9722dp + 501.1111dp + 502.2500dp + 503.3889dp + 504.5278dp + 505.6667dp + 506.8056dp + 507.9444dp + 509.0833dp + 510.2222dp + 511.3611dp + 512.5000dp + 513.6389dp + 514.7778dp + 515.9167dp + 517.0556dp + 518.1944dp + 519.3333dp + 520.4722dp + 521.6111dp + 522.7500dp + 523.8889dp + 525.0278dp + 526.1667dp + 527.3056dp + 528.4444dp + 529.5833dp + 530.7222dp + 531.8611dp + 533.0000dp + 534.1389dp + 535.2778dp + 536.4167dp + 537.5556dp + 538.6944dp + 539.8333dp + 540.9722dp + 542.1111dp + 543.2500dp + 544.3889dp + 545.5278dp + 546.6667dp + 547.8056dp + 548.9444dp + 550.0833dp + 551.2222dp + 552.3611dp + 553.5000dp + 554.6389dp + 555.7778dp + 556.9167dp + 558.0556dp + 559.1944dp + 560.3333dp + 561.4722dp + 562.6111dp + 563.7500dp + 564.8889dp + 566.0278dp + 567.1667dp + 568.3056dp + 569.4444dp + 683.3333dp + 728.8889dp + 820.0000dp + 1.1389sp + 2.2778sp + 3.4167sp + 4.5556sp + 5.6944sp + 6.8333sp + 7.9722sp + 9.1111sp + 10.2500sp + 11.3889sp + 12.5278sp + 13.6667sp + 14.8056sp + 15.9444sp + 17.0833sp + 18.2222sp + 19.3611sp + 20.5000sp + 21.6389sp + 22.7778sp + 23.9167sp + 25.0556sp + 26.1944sp + 27.3333sp + 28.4722sp + 29.6111sp + 30.7500sp + 31.8889sp + 33.0278sp + 34.1667sp + 35.3056sp + 36.4444sp + 37.5833sp + 38.7222sp + 39.8611sp + 41.0000sp + 42.1389sp + 43.2778sp + 44.4167sp + 45.5556sp + 46.6944sp + 47.8333sp + 48.9722sp + 50.1111sp + 51.2500sp + 52.3889sp + 53.5278sp + 54.6667sp + 55.8056sp + 56.9444sp + diff --git a/app/src/main/res/values-sw411dp/dimens.xml b/app/src/main/res/values-sw411dp/dimens.xml new file mode 100644 index 0000000..bca2036 --- /dev/null +++ b/app/src/main/res/values-sw411dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.1429dp + 5.7143dp + 45.7143dp + -68.5714dp + -34.2857dp + -22.8571dp + -13.7143dp + -11.4286dp + -9.1429dp + -5.7143dp + -2.2857dp + -1.1429dp + 0.0000dp + 0.1143dp + 0.5714dp + 1.1429dp + 1.7143dp + 2.2857dp + 2.8571dp + 3.4286dp + 4.0000dp + 4.5714dp + 5.1429dp + 5.7143dp + 6.8571dp + 8.0000dp + 9.1429dp + 10.2857dp + 11.4286dp + 12.5714dp + 13.7143dp + 14.8571dp + 16.0000dp + 17.1429dp + 18.2857dp + 19.4286dp + 20.5714dp + 21.7143dp + 22.8571dp + 24.0000dp + 25.1429dp + 26.2857dp + 27.4286dp + 28.5714dp + 29.7143dp + 30.8571dp + 32.0000dp + 33.1429dp + 34.2857dp + 35.4286dp + 36.5714dp + 37.7143dp + 38.8571dp + 40.0000dp + 41.1428dp + 42.2857dp + 43.4286dp + 44.5714dp + 45.7143dp + 46.8571dp + 48.0000dp + 49.1428dp + 50.2857dp + 51.4286dp + 52.5714dp + 53.7143dp + 54.8571dp + 56.0000dp + 57.1428dp + 58.2857dp + 59.4286dp + 60.5714dp + 61.7143dp + 62.8571dp + 64.0000dp + 65.1428dp + 66.2857dp + 67.4286dp + 68.5714dp + 69.7143dp + 70.8571dp + 72.0000dp + 73.1428dp + 74.2857dp + 75.4286dp + 76.5714dp + 77.7143dp + 78.8571dp + 80.0000dp + 81.1428dp + 82.2857dp + 83.4286dp + 84.5714dp + 85.7143dp + 86.8571dp + 88.0000dp + 89.1428dp + 90.2857dp + 91.4286dp + 92.5714dp + 93.7143dp + 94.8571dp + 96.0000dp + 97.1428dp + 98.2857dp + 99.4286dp + 100.5714dp + 101.7143dp + 102.8571dp + 104.0000dp + 105.1428dp + 106.2857dp + 107.4286dp + 108.5714dp + 109.7143dp + 110.8571dp + 112.0000dp + 113.1428dp + 114.2857dp + 115.4286dp + 116.5714dp + 117.7143dp + 118.8571dp + 120.0000dp + 121.1428dp + 122.2857dp + 123.4285dp + 124.5714dp + 125.7143dp + 126.8571dp + 128.0000dp + 129.1428dp + 130.2857dp + 131.4285dp + 132.5714dp + 133.7143dp + 134.8571dp + 136.0000dp + 137.1428dp + 138.2857dp + 139.4285dp + 140.5714dp + 141.7143dp + 142.8571dp + 144.0000dp + 145.1428dp + 146.2857dp + 147.4285dp + 148.5714dp + 149.7143dp + 150.8571dp + 152.0000dp + 153.1428dp + 154.2857dp + 155.4285dp + 156.5714dp + 157.7143dp + 158.8571dp + 160.0000dp + 161.1428dp + 162.2857dp + 163.4285dp + 164.5714dp + 165.7143dp + 166.8571dp + 168.0000dp + 169.1428dp + 170.2857dp + 171.4285dp + 172.5714dp + 173.7143dp + 174.8571dp + 176.0000dp + 177.1428dp + 178.2857dp + 179.4285dp + 180.5714dp + 181.7143dp + 182.8571dp + 184.0000dp + 185.1428dp + 186.2857dp + 187.4285dp + 188.5714dp + 189.7143dp + 190.8571dp + 192.0000dp + 193.1428dp + 194.2857dp + 195.4285dp + 196.5714dp + 197.7143dp + 198.8571dp + 200.0000dp + 201.1428dp + 202.2857dp + 203.4285dp + 204.5714dp + 205.7142dp + 206.8571dp + 208.0000dp + 209.1428dp + 210.2857dp + 211.4285dp + 212.5714dp + 213.7142dp + 214.8571dp + 216.0000dp + 217.1428dp + 218.2857dp + 219.4285dp + 220.5714dp + 221.7142dp + 222.8571dp + 224.0000dp + 225.1428dp + 226.2857dp + 227.4285dp + 228.5714dp + 229.7142dp + 230.8571dp + 232.0000dp + 233.1428dp + 234.2857dp + 235.4285dp + 236.5714dp + 237.7142dp + 238.8571dp + 240.0000dp + 241.1428dp + 242.2857dp + 243.4285dp + 244.5714dp + 245.7142dp + 246.8571dp + 248.0000dp + 249.1428dp + 250.2857dp + 251.4285dp + 252.5714dp + 253.7142dp + 254.8571dp + 256.0000dp + 257.1428dp + 258.2857dp + 259.4285dp + 260.5714dp + 261.7142dp + 262.8571dp + 264.0000dp + 265.1428dp + 266.2857dp + 267.4285dp + 268.5714dp + 269.7142dp + 270.8571dp + 272.0000dp + 273.1428dp + 274.2857dp + 275.4285dp + 276.5714dp + 277.7142dp + 278.8571dp + 280.0000dp + 281.1428dp + 282.2857dp + 283.4285dp + 284.5714dp + 285.7142dp + 286.8571dp + 287.9999dp + 289.1428dp + 290.2857dp + 291.4285dp + 292.5714dp + 293.7142dp + 294.8571dp + 295.9999dp + 297.1428dp + 298.2857dp + 299.4285dp + 300.5714dp + 301.7142dp + 302.8571dp + 303.9999dp + 305.1428dp + 306.2857dp + 307.4285dp + 308.5714dp + 309.7142dp + 310.8571dp + 311.9999dp + 313.1428dp + 314.2857dp + 315.4285dp + 316.5714dp + 317.7142dp + 318.8571dp + 319.9999dp + 321.1428dp + 322.2857dp + 323.4285dp + 324.5714dp + 325.7142dp + 326.8571dp + 327.9999dp + 329.1428dp + 330.2857dp + 331.4285dp + 332.5714dp + 333.7142dp + 334.8571dp + 335.9999dp + 337.1428dp + 338.2857dp + 339.4285dp + 340.5714dp + 341.7142dp + 342.8571dp + 343.9999dp + 345.1428dp + 346.2857dp + 347.4285dp + 348.5714dp + 349.7142dp + 350.8571dp + 351.9999dp + 353.1428dp + 354.2857dp + 355.4285dp + 356.5714dp + 357.7142dp + 358.8571dp + 359.9999dp + 361.1428dp + 362.2857dp + 363.4285dp + 364.5714dp + 365.7142dp + 366.8571dp + 367.9999dp + 369.1428dp + 370.2856dp + 371.4285dp + 372.5714dp + 373.7142dp + 374.8571dp + 375.9999dp + 377.1428dp + 378.2856dp + 379.4285dp + 380.5714dp + 381.7142dp + 382.8571dp + 383.9999dp + 385.1428dp + 386.2856dp + 387.4285dp + 388.5714dp + 389.7142dp + 390.8571dp + 391.9999dp + 393.1428dp + 394.2856dp + 395.4285dp + 396.5714dp + 397.7142dp + 398.8571dp + 399.9999dp + 401.1428dp + 402.2856dp + 403.4285dp + 404.5714dp + 405.7142dp + 406.8571dp + 407.9999dp + 409.1428dp + 410.2856dp + 411.4285dp + 412.5714dp + 413.7142dp + 414.8571dp + 415.9999dp + 417.1428dp + 418.2856dp + 419.4285dp + 420.5714dp + 421.7142dp + 422.8571dp + 423.9999dp + 425.1428dp + 426.2856dp + 427.4285dp + 428.5714dp + 429.7142dp + 430.8571dp + 431.9999dp + 433.1428dp + 434.2856dp + 435.4285dp + 436.5714dp + 437.7142dp + 438.8571dp + 439.9999dp + 441.1428dp + 442.2856dp + 443.4285dp + 444.5714dp + 445.7142dp + 446.8571dp + 447.9999dp + 449.1428dp + 450.2856dp + 451.4285dp + 452.5713dp + 453.7142dp + 454.8571dp + 455.9999dp + 457.1428dp + 458.2856dp + 459.4285dp + 460.5713dp + 461.7142dp + 462.8571dp + 463.9999dp + 465.1428dp + 466.2856dp + 467.4285dp + 468.5713dp + 469.7142dp + 470.8571dp + 471.9999dp + 473.1428dp + 474.2856dp + 475.4285dp + 476.5713dp + 477.7142dp + 478.8571dp + 479.9999dp + 481.1428dp + 482.2856dp + 483.4285dp + 484.5713dp + 485.7142dp + 486.8571dp + 487.9999dp + 489.1428dp + 490.2856dp + 491.4285dp + 492.5713dp + 493.7142dp + 494.8571dp + 495.9999dp + 497.1428dp + 498.2856dp + 499.4285dp + 500.5713dp + 501.7142dp + 502.8571dp + 503.9999dp + 505.1428dp + 506.2856dp + 507.4285dp + 508.5713dp + 509.7142dp + 510.8571dp + 511.9999dp + 513.1428dp + 514.2856dp + 515.4285dp + 516.5713dp + 517.7142dp + 518.8571dp + 519.9999dp + 521.1428dp + 522.2856dp + 523.4285dp + 524.5713dp + 525.7142dp + 526.8571dp + 527.9999dp + 529.1428dp + 530.2856dp + 531.4285dp + 532.5713dp + 533.7142dp + 534.8570dp + 535.9999dp + 537.1428dp + 538.2856dp + 539.4285dp + 540.5713dp + 541.7142dp + 542.8570dp + 543.9999dp + 545.1428dp + 546.2856dp + 547.4285dp + 548.5713dp + 549.7142dp + 550.8570dp + 551.9999dp + 553.1428dp + 554.2856dp + 555.4285dp + 556.5713dp + 557.7142dp + 558.8570dp + 559.9999dp + 561.1428dp + 562.2856dp + 563.4285dp + 564.5713dp + 565.7142dp + 566.8570dp + 567.9999dp + 569.1428dp + 570.2856dp + 571.4285dp + 685.7142dp + 731.4284dp + 822.8570dp + 1.1429sp + 2.2857sp + 3.4286sp + 4.5714sp + 5.7143sp + 6.8571sp + 8.0000sp + 9.1429sp + 10.2857sp + 11.4286sp + 12.5714sp + 13.7143sp + 14.8571sp + 16.0000sp + 17.1429sp + 18.2857sp + 19.4286sp + 20.5714sp + 21.7143sp + 22.8571sp + 24.0000sp + 25.1429sp + 26.2857sp + 27.4286sp + 28.5714sp + 29.7143sp + 30.8571sp + 32.0000sp + 33.1429sp + 34.2857sp + 35.4286sp + 36.5714sp + 37.7143sp + 38.8571sp + 40.0000sp + 41.1428sp + 42.2857sp + 43.4286sp + 44.5714sp + 45.7143sp + 46.8571sp + 48.0000sp + 49.1428sp + 50.2857sp + 51.4286sp + 52.5714sp + 53.7143sp + 54.8571sp + 56.0000sp + 57.1428sp + diff --git a/app/src/main/res/values-sw432dp/dimens.xml b/app/src/main/res/values-sw432dp/dimens.xml new file mode 100644 index 0000000..0323a89 --- /dev/null +++ b/app/src/main/res/values-sw432dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.2000dp + 6.0000dp + 48.0000dp + -72.0000dp + -36.0000dp + -24.0000dp + -14.4000dp + -12.0000dp + -9.6000dp + -6.0000dp + -2.4000dp + -1.2000dp + 0.0000dp + 0.1200dp + 0.6000dp + 1.2000dp + 1.8000dp + 2.4000dp + 3.0000dp + 3.6000dp + 4.2000dp + 4.8000dp + 5.4000dp + 6.0000dp + 7.2000dp + 8.4000dp + 9.6000dp + 10.8000dp + 12.0000dp + 13.2000dp + 14.4000dp + 15.6000dp + 16.8000dp + 18.0000dp + 19.2000dp + 20.4000dp + 21.6000dp + 22.8000dp + 24.0000dp + 25.2000dp + 26.4000dp + 27.6000dp + 28.8000dp + 30.0000dp + 31.2000dp + 32.4000dp + 33.6000dp + 34.8000dp + 36.0000dp + 37.2000dp + 38.4000dp + 39.6000dp + 40.8000dp + 42.0000dp + 43.2000dp + 44.4000dp + 45.6000dp + 46.8000dp + 48.0000dp + 49.2000dp + 50.4000dp + 51.6000dp + 52.8000dp + 54.0000dp + 55.2000dp + 56.4000dp + 57.6000dp + 58.8000dp + 60.0000dp + 61.2000dp + 62.4000dp + 63.6000dp + 64.8000dp + 66.0000dp + 67.2000dp + 68.4000dp + 69.6000dp + 70.8000dp + 72.0000dp + 73.2000dp + 74.4000dp + 75.6000dp + 76.8000dp + 78.0000dp + 79.2000dp + 80.4000dp + 81.6000dp + 82.8000dp + 84.0000dp + 85.2000dp + 86.4000dp + 87.6000dp + 88.8000dp + 90.0000dp + 91.2000dp + 92.4000dp + 93.6000dp + 94.8000dp + 96.0000dp + 97.2000dp + 98.4000dp + 99.6000dp + 100.8000dp + 102.0000dp + 103.2000dp + 104.4000dp + 105.6000dp + 106.8000dp + 108.0000dp + 109.2000dp + 110.4000dp + 111.6000dp + 112.8000dp + 114.0000dp + 115.2000dp + 116.4000dp + 117.6000dp + 118.8000dp + 120.0000dp + 121.2000dp + 122.4000dp + 123.6000dp + 124.8000dp + 126.0000dp + 127.2000dp + 128.4000dp + 129.6000dp + 130.8000dp + 132.0000dp + 133.2000dp + 134.4000dp + 135.6000dp + 136.8000dp + 138.0000dp + 139.2000dp + 140.4000dp + 141.6000dp + 142.8000dp + 144.0000dp + 145.2000dp + 146.4000dp + 147.6000dp + 148.8000dp + 150.0000dp + 151.2000dp + 152.4000dp + 153.6000dp + 154.8000dp + 156.0000dp + 157.2000dp + 158.4000dp + 159.6000dp + 160.8000dp + 162.0000dp + 163.2000dp + 164.4000dp + 165.6000dp + 166.8000dp + 168.0000dp + 169.2000dp + 170.4000dp + 171.6000dp + 172.8000dp + 174.0000dp + 175.2000dp + 176.4000dp + 177.6000dp + 178.8000dp + 180.0000dp + 181.2000dp + 182.4000dp + 183.6000dp + 184.8000dp + 186.0000dp + 187.2000dp + 188.4000dp + 189.6000dp + 190.8000dp + 192.0000dp + 193.2000dp + 194.4000dp + 195.6000dp + 196.8000dp + 198.0000dp + 199.2000dp + 200.4000dp + 201.6000dp + 202.8000dp + 204.0000dp + 205.2000dp + 206.4000dp + 207.6000dp + 208.8000dp + 210.0000dp + 211.2000dp + 212.4000dp + 213.6000dp + 214.8000dp + 216.0000dp + 217.2000dp + 218.4000dp + 219.6000dp + 220.8000dp + 222.0000dp + 223.2000dp + 224.4000dp + 225.6000dp + 226.8000dp + 228.0000dp + 229.2000dp + 230.4000dp + 231.6000dp + 232.8000dp + 234.0000dp + 235.2000dp + 236.4000dp + 237.6000dp + 238.8000dp + 240.0000dp + 241.2000dp + 242.4000dp + 243.6000dp + 244.8000dp + 246.0000dp + 247.2000dp + 248.4000dp + 249.6000dp + 250.8000dp + 252.0000dp + 253.2000dp + 254.4000dp + 255.6000dp + 256.8000dp + 258.0000dp + 259.2000dp + 260.4000dp + 261.6000dp + 262.8000dp + 264.0000dp + 265.2000dp + 266.4000dp + 267.6000dp + 268.8000dp + 270.0000dp + 271.2000dp + 272.4000dp + 273.6000dp + 274.8000dp + 276.0000dp + 277.2000dp + 278.4000dp + 279.6000dp + 280.8000dp + 282.0000dp + 283.2000dp + 284.4000dp + 285.6000dp + 286.8000dp + 288.0000dp + 289.2000dp + 290.4000dp + 291.6000dp + 292.8000dp + 294.0000dp + 295.2000dp + 296.4000dp + 297.6000dp + 298.8000dp + 300.0000dp + 301.2000dp + 302.4000dp + 303.6000dp + 304.8000dp + 306.0000dp + 307.2000dp + 308.4000dp + 309.6000dp + 310.8000dp + 312.0000dp + 313.2000dp + 314.4000dp + 315.6000dp + 316.8000dp + 318.0000dp + 319.2000dp + 320.4000dp + 321.6000dp + 322.8000dp + 324.0000dp + 325.2000dp + 326.4000dp + 327.6000dp + 328.8000dp + 330.0000dp + 331.2000dp + 332.4000dp + 333.6000dp + 334.8000dp + 336.0000dp + 337.2000dp + 338.4000dp + 339.6000dp + 340.8000dp + 342.0000dp + 343.2000dp + 344.4000dp + 345.6000dp + 346.8000dp + 348.0000dp + 349.2000dp + 350.4000dp + 351.6000dp + 352.8000dp + 354.0000dp + 355.2000dp + 356.4000dp + 357.6000dp + 358.8000dp + 360.0000dp + 361.2000dp + 362.4000dp + 363.6000dp + 364.8000dp + 366.0000dp + 367.2000dp + 368.4000dp + 369.6000dp + 370.8000dp + 372.0000dp + 373.2000dp + 374.4000dp + 375.6000dp + 376.8000dp + 378.0000dp + 379.2000dp + 380.4000dp + 381.6000dp + 382.8000dp + 384.0000dp + 385.2000dp + 386.4000dp + 387.6000dp + 388.8000dp + 390.0000dp + 391.2000dp + 392.4000dp + 393.6000dp + 394.8000dp + 396.0000dp + 397.2000dp + 398.4000dp + 399.6000dp + 400.8000dp + 402.0000dp + 403.2000dp + 404.4000dp + 405.6000dp + 406.8000dp + 408.0000dp + 409.2000dp + 410.4000dp + 411.6000dp + 412.8000dp + 414.0000dp + 415.2000dp + 416.4000dp + 417.6000dp + 418.8000dp + 420.0000dp + 421.2000dp + 422.4000dp + 423.6000dp + 424.8000dp + 426.0000dp + 427.2000dp + 428.4000dp + 429.6000dp + 430.8000dp + 432.0000dp + 433.2000dp + 434.4000dp + 435.6000dp + 436.8000dp + 438.0000dp + 439.2000dp + 440.4000dp + 441.6000dp + 442.8000dp + 444.0000dp + 445.2000dp + 446.4000dp + 447.6000dp + 448.8000dp + 450.0000dp + 451.2000dp + 452.4000dp + 453.6000dp + 454.8000dp + 456.0000dp + 457.2000dp + 458.4000dp + 459.6000dp + 460.8000dp + 462.0000dp + 463.2000dp + 464.4000dp + 465.6000dp + 466.8000dp + 468.0000dp + 469.2000dp + 470.4000dp + 471.6000dp + 472.8000dp + 474.0000dp + 475.2000dp + 476.4000dp + 477.6000dp + 478.8000dp + 480.0000dp + 481.2000dp + 482.4000dp + 483.6000dp + 484.8000dp + 486.0000dp + 487.2000dp + 488.4000dp + 489.6000dp + 490.8000dp + 492.0000dp + 493.2000dp + 494.4000dp + 495.6000dp + 496.8000dp + 498.0000dp + 499.2000dp + 500.4000dp + 501.6000dp + 502.8000dp + 504.0000dp + 505.2000dp + 506.4000dp + 507.6000dp + 508.8000dp + 510.0000dp + 511.2000dp + 512.4000dp + 513.6000dp + 514.8000dp + 516.0000dp + 517.2000dp + 518.4000dp + 519.6000dp + 520.8000dp + 522.0000dp + 523.2000dp + 524.4000dp + 525.6000dp + 526.8000dp + 528.0000dp + 529.2000dp + 530.4000dp + 531.6000dp + 532.8000dp + 534.0000dp + 535.2000dp + 536.4000dp + 537.6000dp + 538.8000dp + 540.0000dp + 541.2000dp + 542.4000dp + 543.6000dp + 544.8000dp + 546.0000dp + 547.2000dp + 548.4000dp + 549.6000dp + 550.8000dp + 552.0000dp + 553.2000dp + 554.4000dp + 555.6000dp + 556.8000dp + 558.0000dp + 559.2000dp + 560.4000dp + 561.6000dp + 562.8000dp + 564.0000dp + 565.2000dp + 566.4000dp + 567.6000dp + 568.8000dp + 570.0000dp + 571.2000dp + 572.4000dp + 573.6000dp + 574.8000dp + 576.0000dp + 577.2000dp + 578.4000dp + 579.6000dp + 580.8000dp + 582.0000dp + 583.2000dp + 584.4000dp + 585.6000dp + 586.8000dp + 588.0000dp + 589.2000dp + 590.4000dp + 591.6000dp + 592.8000dp + 594.0000dp + 595.2000dp + 596.4000dp + 597.6000dp + 598.8000dp + 600.0000dp + 720.0000dp + 768.0000dp + 864.0000dp + 1.2000sp + 2.4000sp + 3.6000sp + 4.8000sp + 6.0000sp + 7.2000sp + 8.4000sp + 9.6000sp + 10.8000sp + 12.0000sp + 13.2000sp + 14.4000sp + 15.6000sp + 16.8000sp + 18.0000sp + 19.2000sp + 20.4000sp + 21.6000sp + 22.8000sp + 24.0000sp + 25.2000sp + 26.4000sp + 27.6000sp + 28.8000sp + 30.0000sp + 31.2000sp + 32.4000sp + 33.6000sp + 34.8000sp + 36.0000sp + 37.2000sp + 38.4000sp + 39.6000sp + 40.8000sp + 42.0000sp + 43.2000sp + 44.4000sp + 45.6000sp + 46.8000sp + 48.0000sp + 49.2000sp + 50.4000sp + 51.6000sp + 52.8000sp + 54.0000sp + 55.2000sp + 56.4000sp + 57.6000sp + 58.8000sp + 60.0000sp + diff --git a/app/src/main/res/values-sw451dp/dimens.xml b/app/src/main/res/values-sw451dp/dimens.xml new file mode 100644 index 0000000..090d3ed --- /dev/null +++ b/app/src/main/res/values-sw451dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.2549dp + 6.2745dp + 50.1961dp + -75.2941dp + -37.6471dp + -25.0980dp + -15.0588dp + -12.5490dp + -10.0392dp + -6.2745dp + -2.5098dp + -1.2549dp + 0.0000dp + 0.1255dp + 0.6275dp + 1.2549dp + 1.8824dp + 2.5098dp + 3.1373dp + 3.7647dp + 4.3922dp + 5.0196dp + 5.6471dp + 6.2745dp + 7.5294dp + 8.7843dp + 10.0392dp + 11.2941dp + 12.5490dp + 13.8039dp + 15.0588dp + 16.3137dp + 17.5686dp + 18.8235dp + 20.0784dp + 21.3333dp + 22.5882dp + 23.8431dp + 25.0980dp + 26.3529dp + 27.6078dp + 28.8627dp + 30.1176dp + 31.3725dp + 32.6275dp + 33.8824dp + 35.1373dp + 36.3922dp + 37.6471dp + 38.9020dp + 40.1569dp + 41.4118dp + 42.6667dp + 43.9216dp + 45.1765dp + 46.4314dp + 47.6863dp + 48.9412dp + 50.1961dp + 51.4510dp + 52.7059dp + 53.9608dp + 55.2157dp + 56.4706dp + 57.7255dp + 58.9804dp + 60.2353dp + 61.4902dp + 62.7451dp + 64.0000dp + 65.2549dp + 66.5098dp + 67.7647dp + 69.0196dp + 70.2745dp + 71.5294dp + 72.7843dp + 74.0392dp + 75.2941dp + 76.5490dp + 77.8039dp + 79.0588dp + 80.3137dp + 81.5686dp + 82.8235dp + 84.0784dp + 85.3333dp + 86.5882dp + 87.8431dp + 89.0980dp + 90.3529dp + 91.6078dp + 92.8627dp + 94.1176dp + 95.3725dp + 96.6274dp + 97.8824dp + 99.1373dp + 100.3922dp + 101.6471dp + 102.9020dp + 104.1569dp + 105.4118dp + 106.6667dp + 107.9216dp + 109.1765dp + 110.4314dp + 111.6863dp + 112.9412dp + 114.1961dp + 115.4510dp + 116.7059dp + 117.9608dp + 119.2157dp + 120.4706dp + 121.7255dp + 122.9804dp + 124.2353dp + 125.4902dp + 126.7451dp + 128.0000dp + 129.2549dp + 130.5098dp + 131.7647dp + 133.0196dp + 134.2745dp + 135.5294dp + 136.7843dp + 138.0392dp + 139.2941dp + 140.5490dp + 141.8039dp + 143.0588dp + 144.3137dp + 145.5686dp + 146.8235dp + 148.0784dp + 149.3333dp + 150.5882dp + 151.8431dp + 153.0980dp + 154.3529dp + 155.6078dp + 156.8627dp + 158.1176dp + 159.3725dp + 160.6274dp + 161.8824dp + 163.1373dp + 164.3922dp + 165.6471dp + 166.9020dp + 168.1569dp + 169.4118dp + 170.6667dp + 171.9216dp + 173.1765dp + 174.4314dp + 175.6863dp + 176.9412dp + 178.1961dp + 179.4510dp + 180.7059dp + 181.9608dp + 183.2157dp + 184.4706dp + 185.7255dp + 186.9804dp + 188.2353dp + 189.4902dp + 190.7451dp + 192.0000dp + 193.2549dp + 194.5098dp + 195.7647dp + 197.0196dp + 198.2745dp + 199.5294dp + 200.7843dp + 202.0392dp + 203.2941dp + 204.5490dp + 205.8039dp + 207.0588dp + 208.3137dp + 209.5686dp + 210.8235dp + 212.0784dp + 213.3333dp + 214.5882dp + 215.8431dp + 217.0980dp + 218.3529dp + 219.6078dp + 220.8627dp + 222.1176dp + 223.3725dp + 224.6274dp + 225.8824dp + 227.1373dp + 228.3922dp + 229.6471dp + 230.9020dp + 232.1569dp + 233.4118dp + 234.6667dp + 235.9216dp + 237.1765dp + 238.4314dp + 239.6863dp + 240.9412dp + 242.1961dp + 243.4510dp + 244.7059dp + 245.9608dp + 247.2157dp + 248.4706dp + 249.7255dp + 250.9804dp + 252.2353dp + 253.4902dp + 254.7451dp + 256.0000dp + 257.2549dp + 258.5098dp + 259.7647dp + 261.0196dp + 262.2745dp + 263.5294dp + 264.7843dp + 266.0392dp + 267.2941dp + 268.5490dp + 269.8039dp + 271.0588dp + 272.3137dp + 273.5686dp + 274.8235dp + 276.0784dp + 277.3333dp + 278.5882dp + 279.8431dp + 281.0980dp + 282.3529dp + 283.6078dp + 284.8627dp + 286.1176dp + 287.3725dp + 288.6274dp + 289.8823dp + 291.1373dp + 292.3922dp + 293.6471dp + 294.9020dp + 296.1569dp + 297.4118dp + 298.6667dp + 299.9216dp + 301.1765dp + 302.4314dp + 303.6863dp + 304.9412dp + 306.1961dp + 307.4510dp + 308.7059dp + 309.9608dp + 311.2157dp + 312.4706dp + 313.7255dp + 314.9804dp + 316.2353dp + 317.4902dp + 318.7451dp + 320.0000dp + 321.2549dp + 322.5098dp + 323.7647dp + 325.0196dp + 326.2745dp + 327.5294dp + 328.7843dp + 330.0392dp + 331.2941dp + 332.5490dp + 333.8039dp + 335.0588dp + 336.3137dp + 337.5686dp + 338.8235dp + 340.0784dp + 341.3333dp + 342.5882dp + 343.8431dp + 345.0980dp + 346.3529dp + 347.6078dp + 348.8627dp + 350.1176dp + 351.3725dp + 352.6274dp + 353.8823dp + 355.1373dp + 356.3922dp + 357.6471dp + 358.9020dp + 360.1569dp + 361.4118dp + 362.6667dp + 363.9216dp + 365.1765dp + 366.4314dp + 367.6863dp + 368.9412dp + 370.1961dp + 371.4510dp + 372.7059dp + 373.9608dp + 375.2157dp + 376.4706dp + 377.7255dp + 378.9804dp + 380.2353dp + 381.4902dp + 382.7451dp + 384.0000dp + 385.2549dp + 386.5098dp + 387.7647dp + 389.0196dp + 390.2745dp + 391.5294dp + 392.7843dp + 394.0392dp + 395.2941dp + 396.5490dp + 397.8039dp + 399.0588dp + 400.3137dp + 401.5686dp + 402.8235dp + 404.0784dp + 405.3333dp + 406.5882dp + 407.8431dp + 409.0980dp + 410.3529dp + 411.6078dp + 412.8627dp + 414.1176dp + 415.3725dp + 416.6274dp + 417.8823dp + 419.1372dp + 420.3922dp + 421.6471dp + 422.9020dp + 424.1569dp + 425.4118dp + 426.6667dp + 427.9216dp + 429.1765dp + 430.4314dp + 431.6863dp + 432.9412dp + 434.1961dp + 435.4510dp + 436.7059dp + 437.9608dp + 439.2157dp + 440.4706dp + 441.7255dp + 442.9804dp + 444.2353dp + 445.4902dp + 446.7451dp + 448.0000dp + 449.2549dp + 450.5098dp + 451.7647dp + 453.0196dp + 454.2745dp + 455.5294dp + 456.7843dp + 458.0392dp + 459.2941dp + 460.5490dp + 461.8039dp + 463.0588dp + 464.3137dp + 465.5686dp + 466.8235dp + 468.0784dp + 469.3333dp + 470.5882dp + 471.8431dp + 473.0980dp + 474.3529dp + 475.6078dp + 476.8627dp + 478.1176dp + 479.3725dp + 480.6274dp + 481.8823dp + 483.1372dp + 484.3922dp + 485.6471dp + 486.9020dp + 488.1569dp + 489.4118dp + 490.6667dp + 491.9216dp + 493.1765dp + 494.4314dp + 495.6863dp + 496.9412dp + 498.1961dp + 499.4510dp + 500.7059dp + 501.9608dp + 503.2157dp + 504.4706dp + 505.7255dp + 506.9804dp + 508.2353dp + 509.4902dp + 510.7451dp + 512.0000dp + 513.2549dp + 514.5098dp + 515.7647dp + 517.0196dp + 518.2745dp + 519.5294dp + 520.7843dp + 522.0392dp + 523.2941dp + 524.5490dp + 525.8039dp + 527.0588dp + 528.3137dp + 529.5686dp + 530.8235dp + 532.0784dp + 533.3333dp + 534.5882dp + 535.8431dp + 537.0980dp + 538.3529dp + 539.6078dp + 540.8627dp + 542.1176dp + 543.3725dp + 544.6274dp + 545.8823dp + 547.1372dp + 548.3921dp + 549.6471dp + 550.9020dp + 552.1569dp + 553.4118dp + 554.6667dp + 555.9216dp + 557.1765dp + 558.4314dp + 559.6863dp + 560.9412dp + 562.1961dp + 563.4510dp + 564.7059dp + 565.9608dp + 567.2157dp + 568.4706dp + 569.7255dp + 570.9804dp + 572.2353dp + 573.4902dp + 574.7451dp + 576.0000dp + 577.2549dp + 578.5098dp + 579.7647dp + 581.0196dp + 582.2745dp + 583.5294dp + 584.7843dp + 586.0392dp + 587.2941dp + 588.5490dp + 589.8039dp + 591.0588dp + 592.3137dp + 593.5686dp + 594.8235dp + 596.0784dp + 597.3333dp + 598.5882dp + 599.8431dp + 601.0980dp + 602.3529dp + 603.6078dp + 604.8627dp + 606.1176dp + 607.3725dp + 608.6274dp + 609.8823dp + 611.1372dp + 612.3921dp + 613.6471dp + 614.9020dp + 616.1569dp + 617.4118dp + 618.6667dp + 619.9216dp + 621.1765dp + 622.4314dp + 623.6863dp + 624.9412dp + 626.1961dp + 627.4510dp + 752.9412dp + 803.1372dp + 903.5294dp + 1.2549sp + 2.5098sp + 3.7647sp + 5.0196sp + 6.2745sp + 7.5294sp + 8.7843sp + 10.0392sp + 11.2941sp + 12.5490sp + 13.8039sp + 15.0588sp + 16.3137sp + 17.5686sp + 18.8235sp + 20.0784sp + 21.3333sp + 22.5882sp + 23.8431sp + 25.0980sp + 26.3529sp + 27.6078sp + 28.8627sp + 30.1176sp + 31.3725sp + 32.6275sp + 33.8824sp + 35.1373sp + 36.3922sp + 37.6471sp + 38.9020sp + 40.1569sp + 41.4118sp + 42.6667sp + 43.9216sp + 45.1765sp + 46.4314sp + 47.6863sp + 48.9412sp + 50.1961sp + 51.4510sp + 52.7059sp + 53.9608sp + 55.2157sp + 56.4706sp + 57.7255sp + 58.9804sp + 60.2353sp + 61.4902sp + 62.7451sp + diff --git a/app/src/main/res/values-sw480dp/dimens.xml b/app/src/main/res/values-sw480dp/dimens.xml new file mode 100644 index 0000000..64d4478 --- /dev/null +++ b/app/src/main/res/values-sw480dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.3333dp + 6.6667dp + 53.3333dp + -80.0000dp + -40.0000dp + -26.6667dp + -16.0000dp + -13.3333dp + -10.6667dp + -6.6667dp + -2.6667dp + -1.3333dp + 0.0000dp + 0.1333dp + 0.6667dp + 1.3333dp + 2.0000dp + 2.6667dp + 3.3333dp + 4.0000dp + 4.6667dp + 5.3333dp + 6.0000dp + 6.6667dp + 8.0000dp + 9.3333dp + 10.6667dp + 12.0000dp + 13.3333dp + 14.6667dp + 16.0000dp + 17.3333dp + 18.6667dp + 20.0000dp + 21.3333dp + 22.6667dp + 24.0000dp + 25.3333dp + 26.6667dp + 28.0000dp + 29.3333dp + 30.6667dp + 32.0000dp + 33.3333dp + 34.6667dp + 36.0000dp + 37.3333dp + 38.6667dp + 40.0000dp + 41.3333dp + 42.6667dp + 44.0000dp + 45.3333dp + 46.6667dp + 48.0000dp + 49.3333dp + 50.6667dp + 52.0000dp + 53.3333dp + 54.6667dp + 56.0000dp + 57.3333dp + 58.6667dp + 60.0000dp + 61.3333dp + 62.6667dp + 64.0000dp + 65.3333dp + 66.6667dp + 68.0000dp + 69.3333dp + 70.6667dp + 72.0000dp + 73.3333dp + 74.6667dp + 76.0000dp + 77.3333dp + 78.6667dp + 80.0000dp + 81.3333dp + 82.6667dp + 84.0000dp + 85.3333dp + 86.6667dp + 88.0000dp + 89.3333dp + 90.6667dp + 92.0000dp + 93.3333dp + 94.6667dp + 96.0000dp + 97.3333dp + 98.6667dp + 100.0000dp + 101.3333dp + 102.6667dp + 104.0000dp + 105.3333dp + 106.6667dp + 108.0000dp + 109.3333dp + 110.6667dp + 112.0000dp + 113.3333dp + 114.6667dp + 116.0000dp + 117.3333dp + 118.6667dp + 120.0000dp + 121.3333dp + 122.6667dp + 124.0000dp + 125.3333dp + 126.6667dp + 128.0000dp + 129.3333dp + 130.6667dp + 132.0000dp + 133.3333dp + 134.6667dp + 136.0000dp + 137.3333dp + 138.6667dp + 140.0000dp + 141.3333dp + 142.6667dp + 144.0000dp + 145.3333dp + 146.6667dp + 148.0000dp + 149.3333dp + 150.6667dp + 152.0000dp + 153.3333dp + 154.6667dp + 156.0000dp + 157.3333dp + 158.6667dp + 160.0000dp + 161.3333dp + 162.6667dp + 164.0000dp + 165.3333dp + 166.6667dp + 168.0000dp + 169.3333dp + 170.6667dp + 172.0000dp + 173.3333dp + 174.6667dp + 176.0000dp + 177.3333dp + 178.6667dp + 180.0000dp + 181.3333dp + 182.6667dp + 184.0000dp + 185.3333dp + 186.6667dp + 188.0000dp + 189.3333dp + 190.6667dp + 192.0000dp + 193.3333dp + 194.6667dp + 196.0000dp + 197.3333dp + 198.6667dp + 200.0000dp + 201.3333dp + 202.6667dp + 204.0000dp + 205.3333dp + 206.6667dp + 208.0000dp + 209.3333dp + 210.6667dp + 212.0000dp + 213.3333dp + 214.6667dp + 216.0000dp + 217.3333dp + 218.6667dp + 220.0000dp + 221.3333dp + 222.6667dp + 224.0000dp + 225.3333dp + 226.6667dp + 228.0000dp + 229.3333dp + 230.6667dp + 232.0000dp + 233.3333dp + 234.6667dp + 236.0000dp + 237.3333dp + 238.6667dp + 240.0000dp + 241.3333dp + 242.6667dp + 244.0000dp + 245.3333dp + 246.6667dp + 248.0000dp + 249.3333dp + 250.6667dp + 252.0000dp + 253.3333dp + 254.6667dp + 256.0000dp + 257.3333dp + 258.6667dp + 260.0000dp + 261.3333dp + 262.6667dp + 264.0000dp + 265.3333dp + 266.6667dp + 268.0000dp + 269.3333dp + 270.6667dp + 272.0000dp + 273.3333dp + 274.6667dp + 276.0000dp + 277.3333dp + 278.6667dp + 280.0000dp + 281.3333dp + 282.6667dp + 284.0000dp + 285.3333dp + 286.6667dp + 288.0000dp + 289.3333dp + 290.6667dp + 292.0000dp + 293.3333dp + 294.6667dp + 296.0000dp + 297.3333dp + 298.6667dp + 300.0000dp + 301.3333dp + 302.6667dp + 304.0000dp + 305.3333dp + 306.6667dp + 308.0000dp + 309.3333dp + 310.6667dp + 312.0000dp + 313.3333dp + 314.6667dp + 316.0000dp + 317.3333dp + 318.6667dp + 320.0000dp + 321.3333dp + 322.6667dp + 324.0000dp + 325.3333dp + 326.6667dp + 328.0000dp + 329.3333dp + 330.6667dp + 332.0000dp + 333.3333dp + 334.6667dp + 336.0000dp + 337.3333dp + 338.6667dp + 340.0000dp + 341.3333dp + 342.6667dp + 344.0000dp + 345.3333dp + 346.6667dp + 348.0000dp + 349.3333dp + 350.6667dp + 352.0000dp + 353.3333dp + 354.6667dp + 356.0000dp + 357.3333dp + 358.6667dp + 360.0000dp + 361.3333dp + 362.6667dp + 364.0000dp + 365.3333dp + 366.6667dp + 368.0000dp + 369.3333dp + 370.6667dp + 372.0000dp + 373.3333dp + 374.6667dp + 376.0000dp + 377.3333dp + 378.6667dp + 380.0000dp + 381.3333dp + 382.6667dp + 384.0000dp + 385.3333dp + 386.6667dp + 388.0000dp + 389.3333dp + 390.6667dp + 392.0000dp + 393.3333dp + 394.6667dp + 396.0000dp + 397.3333dp + 398.6667dp + 400.0000dp + 401.3333dp + 402.6667dp + 404.0000dp + 405.3333dp + 406.6667dp + 408.0000dp + 409.3333dp + 410.6667dp + 412.0000dp + 413.3333dp + 414.6667dp + 416.0000dp + 417.3333dp + 418.6667dp + 420.0000dp + 421.3333dp + 422.6667dp + 424.0000dp + 425.3333dp + 426.6667dp + 428.0000dp + 429.3333dp + 430.6667dp + 432.0000dp + 433.3333dp + 434.6667dp + 436.0000dp + 437.3333dp + 438.6667dp + 440.0000dp + 441.3333dp + 442.6667dp + 444.0000dp + 445.3333dp + 446.6667dp + 448.0000dp + 449.3333dp + 450.6667dp + 452.0000dp + 453.3333dp + 454.6667dp + 456.0000dp + 457.3333dp + 458.6667dp + 460.0000dp + 461.3333dp + 462.6667dp + 464.0000dp + 465.3333dp + 466.6667dp + 468.0000dp + 469.3333dp + 470.6667dp + 472.0000dp + 473.3333dp + 474.6667dp + 476.0000dp + 477.3333dp + 478.6667dp + 480.0000dp + 481.3333dp + 482.6667dp + 484.0000dp + 485.3333dp + 486.6667dp + 488.0000dp + 489.3333dp + 490.6667dp + 492.0000dp + 493.3333dp + 494.6667dp + 496.0000dp + 497.3333dp + 498.6667dp + 500.0000dp + 501.3333dp + 502.6667dp + 504.0000dp + 505.3333dp + 506.6667dp + 508.0000dp + 509.3333dp + 510.6667dp + 512.0000dp + 513.3333dp + 514.6667dp + 516.0000dp + 517.3333dp + 518.6667dp + 520.0000dp + 521.3333dp + 522.6667dp + 524.0000dp + 525.3333dp + 526.6667dp + 528.0000dp + 529.3333dp + 530.6667dp + 532.0000dp + 533.3333dp + 534.6667dp + 536.0000dp + 537.3333dp + 538.6667dp + 540.0000dp + 541.3333dp + 542.6667dp + 544.0000dp + 545.3333dp + 546.6667dp + 548.0000dp + 549.3333dp + 550.6667dp + 552.0000dp + 553.3333dp + 554.6667dp + 556.0000dp + 557.3333dp + 558.6667dp + 560.0000dp + 561.3333dp + 562.6667dp + 564.0000dp + 565.3333dp + 566.6667dp + 568.0000dp + 569.3333dp + 570.6667dp + 572.0000dp + 573.3333dp + 574.6667dp + 576.0000dp + 577.3333dp + 578.6667dp + 580.0000dp + 581.3333dp + 582.6667dp + 584.0000dp + 585.3333dp + 586.6667dp + 588.0000dp + 589.3333dp + 590.6667dp + 592.0000dp + 593.3333dp + 594.6667dp + 596.0000dp + 597.3333dp + 598.6667dp + 600.0000dp + 601.3333dp + 602.6667dp + 604.0000dp + 605.3333dp + 606.6667dp + 608.0000dp + 609.3333dp + 610.6667dp + 612.0000dp + 613.3333dp + 614.6667dp + 616.0000dp + 617.3333dp + 618.6667dp + 620.0000dp + 621.3333dp + 622.6667dp + 624.0000dp + 625.3333dp + 626.6667dp + 628.0000dp + 629.3333dp + 630.6667dp + 632.0000dp + 633.3333dp + 634.6667dp + 636.0000dp + 637.3333dp + 638.6667dp + 640.0000dp + 641.3333dp + 642.6667dp + 644.0000dp + 645.3333dp + 646.6667dp + 648.0000dp + 649.3333dp + 650.6667dp + 652.0000dp + 653.3333dp + 654.6667dp + 656.0000dp + 657.3333dp + 658.6667dp + 660.0000dp + 661.3333dp + 662.6667dp + 664.0000dp + 665.3333dp + 666.6667dp + 800.0000dp + 853.3333dp + 960.0000dp + 1.3333sp + 2.6667sp + 4.0000sp + 5.3333sp + 6.6667sp + 8.0000sp + 9.3333sp + 10.6667sp + 12.0000sp + 13.3333sp + 14.6667sp + 16.0000sp + 17.3333sp + 18.6667sp + 20.0000sp + 21.3333sp + 22.6667sp + 24.0000sp + 25.3333sp + 26.6667sp + 28.0000sp + 29.3333sp + 30.6667sp + 32.0000sp + 33.3333sp + 34.6667sp + 36.0000sp + 37.3333sp + 38.6667sp + 40.0000sp + 41.3333sp + 42.6667sp + 44.0000sp + 45.3333sp + 46.6667sp + 48.0000sp + 49.3333sp + 50.6667sp + 52.0000sp + 53.3333sp + 54.6667sp + 56.0000sp + 57.3333sp + 58.6667sp + 60.0000sp + 61.3333sp + 62.6667sp + 64.0000sp + 65.3333sp + 66.6667sp + diff --git a/app/src/main/res/values-sw533dp/dimens.xml b/app/src/main/res/values-sw533dp/dimens.xml new file mode 100644 index 0000000..a1e2c08 --- /dev/null +++ b/app/src/main/res/values-sw533dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.4806dp + 7.4028dp + 59.2222dp + -88.8333dp + -44.4167dp + -29.6111dp + -17.7667dp + -14.8056dp + -11.8444dp + -7.4028dp + -2.9611dp + -1.4806dp + 0.0000dp + 0.1481dp + 0.7403dp + 1.4806dp + 2.2208dp + 2.9611dp + 3.7014dp + 4.4417dp + 5.1819dp + 5.9222dp + 6.6625dp + 7.4028dp + 8.8833dp + 10.3639dp + 11.8444dp + 13.3250dp + 14.8056dp + 16.2861dp + 17.7667dp + 19.2472dp + 20.7278dp + 22.2083dp + 23.6889dp + 25.1694dp + 26.6500dp + 28.1306dp + 29.6111dp + 31.0917dp + 32.5722dp + 34.0528dp + 35.5333dp + 37.0139dp + 38.4944dp + 39.9750dp + 41.4556dp + 42.9361dp + 44.4167dp + 45.8972dp + 47.3778dp + 48.8583dp + 50.3389dp + 51.8194dp + 53.3000dp + 54.7806dp + 56.2611dp + 57.7417dp + 59.2222dp + 60.7028dp + 62.1833dp + 63.6639dp + 65.1444dp + 66.6250dp + 68.1056dp + 69.5861dp + 71.0667dp + 72.5472dp + 74.0278dp + 75.5083dp + 76.9889dp + 78.4694dp + 79.9500dp + 81.4306dp + 82.9111dp + 84.3917dp + 85.8722dp + 87.3528dp + 88.8333dp + 90.3139dp + 91.7944dp + 93.2750dp + 94.7556dp + 96.2361dp + 97.7167dp + 99.1972dp + 100.6778dp + 102.1583dp + 103.6389dp + 105.1194dp + 106.6000dp + 108.0806dp + 109.5611dp + 111.0417dp + 112.5222dp + 114.0028dp + 115.4833dp + 116.9639dp + 118.4444dp + 119.9250dp + 121.4056dp + 122.8861dp + 124.3667dp + 125.8472dp + 127.3278dp + 128.8083dp + 130.2889dp + 131.7694dp + 133.2500dp + 134.7306dp + 136.2111dp + 137.6917dp + 139.1722dp + 140.6528dp + 142.1333dp + 143.6139dp + 145.0944dp + 146.5750dp + 148.0556dp + 149.5361dp + 151.0167dp + 152.4972dp + 153.9778dp + 155.4583dp + 156.9389dp + 158.4194dp + 159.9000dp + 161.3806dp + 162.8611dp + 164.3417dp + 165.8222dp + 167.3028dp + 168.7833dp + 170.2639dp + 171.7444dp + 173.2250dp + 174.7056dp + 176.1861dp + 177.6667dp + 179.1472dp + 180.6278dp + 182.1083dp + 183.5889dp + 185.0694dp + 186.5500dp + 188.0306dp + 189.5111dp + 190.9917dp + 192.4722dp + 193.9528dp + 195.4333dp + 196.9139dp + 198.3944dp + 199.8750dp + 201.3556dp + 202.8361dp + 204.3167dp + 205.7972dp + 207.2778dp + 208.7583dp + 210.2389dp + 211.7194dp + 213.2000dp + 214.6806dp + 216.1611dp + 217.6417dp + 219.1222dp + 220.6028dp + 222.0833dp + 223.5639dp + 225.0444dp + 226.5250dp + 228.0056dp + 229.4861dp + 230.9667dp + 232.4472dp + 233.9278dp + 235.4083dp + 236.8889dp + 238.3694dp + 239.8500dp + 241.3306dp + 242.8111dp + 244.2917dp + 245.7722dp + 247.2528dp + 248.7333dp + 250.2139dp + 251.6944dp + 253.1750dp + 254.6556dp + 256.1361dp + 257.6167dp + 259.0972dp + 260.5778dp + 262.0583dp + 263.5389dp + 265.0194dp + 266.5000dp + 267.9806dp + 269.4611dp + 270.9417dp + 272.4222dp + 273.9028dp + 275.3833dp + 276.8639dp + 278.3444dp + 279.8250dp + 281.3056dp + 282.7861dp + 284.2667dp + 285.7472dp + 287.2278dp + 288.7083dp + 290.1889dp + 291.6694dp + 293.1500dp + 294.6306dp + 296.1111dp + 297.5917dp + 299.0722dp + 300.5528dp + 302.0333dp + 303.5139dp + 304.9944dp + 306.4750dp + 307.9556dp + 309.4361dp + 310.9167dp + 312.3972dp + 313.8778dp + 315.3583dp + 316.8389dp + 318.3194dp + 319.8000dp + 321.2806dp + 322.7611dp + 324.2417dp + 325.7222dp + 327.2028dp + 328.6833dp + 330.1639dp + 331.6444dp + 333.1250dp + 334.6056dp + 336.0861dp + 337.5667dp + 339.0472dp + 340.5278dp + 342.0083dp + 343.4889dp + 344.9694dp + 346.4500dp + 347.9306dp + 349.4111dp + 350.8917dp + 352.3722dp + 353.8528dp + 355.3333dp + 356.8139dp + 358.2944dp + 359.7750dp + 361.2556dp + 362.7361dp + 364.2167dp + 365.6972dp + 367.1778dp + 368.6583dp + 370.1389dp + 371.6194dp + 373.1000dp + 374.5806dp + 376.0611dp + 377.5417dp + 379.0222dp + 380.5028dp + 381.9833dp + 383.4639dp + 384.9444dp + 386.4250dp + 387.9056dp + 389.3861dp + 390.8667dp + 392.3472dp + 393.8278dp + 395.3083dp + 396.7889dp + 398.2694dp + 399.7500dp + 401.2306dp + 402.7111dp + 404.1917dp + 405.6722dp + 407.1528dp + 408.6333dp + 410.1139dp + 411.5944dp + 413.0750dp + 414.5556dp + 416.0361dp + 417.5167dp + 418.9972dp + 420.4778dp + 421.9583dp + 423.4389dp + 424.9194dp + 426.4000dp + 427.8806dp + 429.3611dp + 430.8417dp + 432.3222dp + 433.8028dp + 435.2833dp + 436.7639dp + 438.2444dp + 439.7250dp + 441.2056dp + 442.6861dp + 444.1667dp + 445.6472dp + 447.1278dp + 448.6083dp + 450.0889dp + 451.5694dp + 453.0500dp + 454.5306dp + 456.0111dp + 457.4917dp + 458.9722dp + 460.4528dp + 461.9333dp + 463.4139dp + 464.8944dp + 466.3750dp + 467.8556dp + 469.3361dp + 470.8167dp + 472.2972dp + 473.7778dp + 475.2583dp + 476.7389dp + 478.2194dp + 479.7000dp + 481.1806dp + 482.6611dp + 484.1417dp + 485.6222dp + 487.1028dp + 488.5833dp + 490.0639dp + 491.5444dp + 493.0250dp + 494.5056dp + 495.9861dp + 497.4667dp + 498.9472dp + 500.4278dp + 501.9083dp + 503.3889dp + 504.8694dp + 506.3500dp + 507.8306dp + 509.3111dp + 510.7917dp + 512.2722dp + 513.7528dp + 515.2333dp + 516.7139dp + 518.1944dp + 519.6750dp + 521.1556dp + 522.6361dp + 524.1167dp + 525.5972dp + 527.0778dp + 528.5583dp + 530.0389dp + 531.5194dp + 533.0000dp + 534.4806dp + 535.9611dp + 537.4417dp + 538.9222dp + 540.4028dp + 541.8833dp + 543.3639dp + 544.8444dp + 546.3250dp + 547.8056dp + 549.2861dp + 550.7667dp + 552.2472dp + 553.7278dp + 555.2083dp + 556.6889dp + 558.1694dp + 559.6500dp + 561.1306dp + 562.6111dp + 564.0917dp + 565.5722dp + 567.0528dp + 568.5333dp + 570.0139dp + 571.4944dp + 572.9750dp + 574.4556dp + 575.9361dp + 577.4167dp + 578.8972dp + 580.3778dp + 581.8583dp + 583.3389dp + 584.8194dp + 586.3000dp + 587.7806dp + 589.2611dp + 590.7417dp + 592.2222dp + 593.7028dp + 595.1833dp + 596.6639dp + 598.1444dp + 599.6250dp + 601.1056dp + 602.5861dp + 604.0667dp + 605.5472dp + 607.0278dp + 608.5083dp + 609.9889dp + 611.4694dp + 612.9500dp + 614.4306dp + 615.9111dp + 617.3917dp + 618.8722dp + 620.3528dp + 621.8333dp + 623.3139dp + 624.7944dp + 626.2750dp + 627.7556dp + 629.2361dp + 630.7167dp + 632.1972dp + 633.6778dp + 635.1583dp + 636.6389dp + 638.1194dp + 639.6000dp + 641.0806dp + 642.5611dp + 644.0417dp + 645.5222dp + 647.0028dp + 648.4833dp + 649.9639dp + 651.4444dp + 652.9250dp + 654.4056dp + 655.8861dp + 657.3667dp + 658.8472dp + 660.3278dp + 661.8083dp + 663.2889dp + 664.7694dp + 666.2500dp + 667.7306dp + 669.2111dp + 670.6917dp + 672.1722dp + 673.6528dp + 675.1333dp + 676.6139dp + 678.0944dp + 679.5750dp + 681.0556dp + 682.5361dp + 684.0167dp + 685.4972dp + 686.9778dp + 688.4583dp + 689.9389dp + 691.4194dp + 692.9000dp + 694.3806dp + 695.8611dp + 697.3417dp + 698.8222dp + 700.3028dp + 701.7833dp + 703.2639dp + 704.7444dp + 706.2250dp + 707.7056dp + 709.1861dp + 710.6667dp + 712.1472dp + 713.6278dp + 715.1083dp + 716.5889dp + 718.0694dp + 719.5500dp + 721.0306dp + 722.5111dp + 723.9917dp + 725.4722dp + 726.9528dp + 728.4333dp + 729.9139dp + 731.3944dp + 732.8750dp + 734.3556dp + 735.8361dp + 737.3167dp + 738.7972dp + 740.2778dp + 888.3333dp + 947.5556dp + 1066.0000dp + 1.4806sp + 2.9611sp + 4.4417sp + 5.9222sp + 7.4028sp + 8.8833sp + 10.3639sp + 11.8444sp + 13.3250sp + 14.8056sp + 16.2861sp + 17.7667sp + 19.2472sp + 20.7278sp + 22.2083sp + 23.6889sp + 25.1694sp + 26.6500sp + 28.1306sp + 29.6111sp + 31.0917sp + 32.5722sp + 34.0528sp + 35.5333sp + 37.0139sp + 38.4944sp + 39.9750sp + 41.4556sp + 42.9361sp + 44.4167sp + 45.8972sp + 47.3778sp + 48.8583sp + 50.3389sp + 51.8194sp + 53.3000sp + 54.7806sp + 56.2611sp + 57.7417sp + 59.2222sp + 60.7028sp + 62.1833sp + 63.6639sp + 65.1444sp + 66.6250sp + 68.1056sp + 69.5861sp + 71.0667sp + 72.5472sp + 74.0278sp + diff --git a/app/src/main/res/values-sw540dp/dimens.xml b/app/src/main/res/values-sw540dp/dimens.xml new file mode 100644 index 0000000..74b82a9 --- /dev/null +++ b/app/src/main/res/values-sw540dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.5000dp + 7.5000dp + 60.0000dp + -90.0000dp + -45.0000dp + -30.0000dp + -18.0000dp + -15.0000dp + -12.0000dp + -7.5000dp + -3.0000dp + -1.5000dp + 0.0000dp + 0.1500dp + 0.7500dp + 1.5000dp + 2.2500dp + 3.0000dp + 3.7500dp + 4.5000dp + 5.2500dp + 6.0000dp + 6.7500dp + 7.5000dp + 9.0000dp + 10.5000dp + 12.0000dp + 13.5000dp + 15.0000dp + 16.5000dp + 18.0000dp + 19.5000dp + 21.0000dp + 22.5000dp + 24.0000dp + 25.5000dp + 27.0000dp + 28.5000dp + 30.0000dp + 31.5000dp + 33.0000dp + 34.5000dp + 36.0000dp + 37.5000dp + 39.0000dp + 40.5000dp + 42.0000dp + 43.5000dp + 45.0000dp + 46.5000dp + 48.0000dp + 49.5000dp + 51.0000dp + 52.5000dp + 54.0000dp + 55.5000dp + 57.0000dp + 58.5000dp + 60.0000dp + 61.5000dp + 63.0000dp + 64.5000dp + 66.0000dp + 67.5000dp + 69.0000dp + 70.5000dp + 72.0000dp + 73.5000dp + 75.0000dp + 76.5000dp + 78.0000dp + 79.5000dp + 81.0000dp + 82.5000dp + 84.0000dp + 85.5000dp + 87.0000dp + 88.5000dp + 90.0000dp + 91.5000dp + 93.0000dp + 94.5000dp + 96.0000dp + 97.5000dp + 99.0000dp + 100.5000dp + 102.0000dp + 103.5000dp + 105.0000dp + 106.5000dp + 108.0000dp + 109.5000dp + 111.0000dp + 112.5000dp + 114.0000dp + 115.5000dp + 117.0000dp + 118.5000dp + 120.0000dp + 121.5000dp + 123.0000dp + 124.5000dp + 126.0000dp + 127.5000dp + 129.0000dp + 130.5000dp + 132.0000dp + 133.5000dp + 135.0000dp + 136.5000dp + 138.0000dp + 139.5000dp + 141.0000dp + 142.5000dp + 144.0000dp + 145.5000dp + 147.0000dp + 148.5000dp + 150.0000dp + 151.5000dp + 153.0000dp + 154.5000dp + 156.0000dp + 157.5000dp + 159.0000dp + 160.5000dp + 162.0000dp + 163.5000dp + 165.0000dp + 166.5000dp + 168.0000dp + 169.5000dp + 171.0000dp + 172.5000dp + 174.0000dp + 175.5000dp + 177.0000dp + 178.5000dp + 180.0000dp + 181.5000dp + 183.0000dp + 184.5000dp + 186.0000dp + 187.5000dp + 189.0000dp + 190.5000dp + 192.0000dp + 193.5000dp + 195.0000dp + 196.5000dp + 198.0000dp + 199.5000dp + 201.0000dp + 202.5000dp + 204.0000dp + 205.5000dp + 207.0000dp + 208.5000dp + 210.0000dp + 211.5000dp + 213.0000dp + 214.5000dp + 216.0000dp + 217.5000dp + 219.0000dp + 220.5000dp + 222.0000dp + 223.5000dp + 225.0000dp + 226.5000dp + 228.0000dp + 229.5000dp + 231.0000dp + 232.5000dp + 234.0000dp + 235.5000dp + 237.0000dp + 238.5000dp + 240.0000dp + 241.5000dp + 243.0000dp + 244.5000dp + 246.0000dp + 247.5000dp + 249.0000dp + 250.5000dp + 252.0000dp + 253.5000dp + 255.0000dp + 256.5000dp + 258.0000dp + 259.5000dp + 261.0000dp + 262.5000dp + 264.0000dp + 265.5000dp + 267.0000dp + 268.5000dp + 270.0000dp + 271.5000dp + 273.0000dp + 274.5000dp + 276.0000dp + 277.5000dp + 279.0000dp + 280.5000dp + 282.0000dp + 283.5000dp + 285.0000dp + 286.5000dp + 288.0000dp + 289.5000dp + 291.0000dp + 292.5000dp + 294.0000dp + 295.5000dp + 297.0000dp + 298.5000dp + 300.0000dp + 301.5000dp + 303.0000dp + 304.5000dp + 306.0000dp + 307.5000dp + 309.0000dp + 310.5000dp + 312.0000dp + 313.5000dp + 315.0000dp + 316.5000dp + 318.0000dp + 319.5000dp + 321.0000dp + 322.5000dp + 324.0000dp + 325.5000dp + 327.0000dp + 328.5000dp + 330.0000dp + 331.5000dp + 333.0000dp + 334.5000dp + 336.0000dp + 337.5000dp + 339.0000dp + 340.5000dp + 342.0000dp + 343.5000dp + 345.0000dp + 346.5000dp + 348.0000dp + 349.5000dp + 351.0000dp + 352.5000dp + 354.0000dp + 355.5000dp + 357.0000dp + 358.5000dp + 360.0000dp + 361.5000dp + 363.0000dp + 364.5000dp + 366.0000dp + 367.5000dp + 369.0000dp + 370.5000dp + 372.0000dp + 373.5000dp + 375.0000dp + 376.5000dp + 378.0000dp + 379.5000dp + 381.0000dp + 382.5000dp + 384.0000dp + 385.5000dp + 387.0000dp + 388.5000dp + 390.0000dp + 391.5000dp + 393.0000dp + 394.5000dp + 396.0000dp + 397.5000dp + 399.0000dp + 400.5000dp + 402.0000dp + 403.5000dp + 405.0000dp + 406.5000dp + 408.0000dp + 409.5000dp + 411.0000dp + 412.5000dp + 414.0000dp + 415.5000dp + 417.0000dp + 418.5000dp + 420.0000dp + 421.5000dp + 423.0000dp + 424.5000dp + 426.0000dp + 427.5000dp + 429.0000dp + 430.5000dp + 432.0000dp + 433.5000dp + 435.0000dp + 436.5000dp + 438.0000dp + 439.5000dp + 441.0000dp + 442.5000dp + 444.0000dp + 445.5000dp + 447.0000dp + 448.5000dp + 450.0000dp + 451.5000dp + 453.0000dp + 454.5000dp + 456.0000dp + 457.5000dp + 459.0000dp + 460.5000dp + 462.0000dp + 463.5000dp + 465.0000dp + 466.5000dp + 468.0000dp + 469.5000dp + 471.0000dp + 472.5000dp + 474.0000dp + 475.5000dp + 477.0000dp + 478.5000dp + 480.0000dp + 481.5000dp + 483.0000dp + 484.5000dp + 486.0000dp + 487.5000dp + 489.0000dp + 490.5000dp + 492.0000dp + 493.5000dp + 495.0000dp + 496.5000dp + 498.0000dp + 499.5000dp + 501.0000dp + 502.5000dp + 504.0000dp + 505.5000dp + 507.0000dp + 508.5000dp + 510.0000dp + 511.5000dp + 513.0000dp + 514.5000dp + 516.0000dp + 517.5000dp + 519.0000dp + 520.5000dp + 522.0000dp + 523.5000dp + 525.0000dp + 526.5000dp + 528.0000dp + 529.5000dp + 531.0000dp + 532.5000dp + 534.0000dp + 535.5000dp + 537.0000dp + 538.5000dp + 540.0000dp + 541.5000dp + 543.0000dp + 544.5000dp + 546.0000dp + 547.5000dp + 549.0000dp + 550.5000dp + 552.0000dp + 553.5000dp + 555.0000dp + 556.5000dp + 558.0000dp + 559.5000dp + 561.0000dp + 562.5000dp + 564.0000dp + 565.5000dp + 567.0000dp + 568.5000dp + 570.0000dp + 571.5000dp + 573.0000dp + 574.5000dp + 576.0000dp + 577.5000dp + 579.0000dp + 580.5000dp + 582.0000dp + 583.5000dp + 585.0000dp + 586.5000dp + 588.0000dp + 589.5000dp + 591.0000dp + 592.5000dp + 594.0000dp + 595.5000dp + 597.0000dp + 598.5000dp + 600.0000dp + 601.5000dp + 603.0000dp + 604.5000dp + 606.0000dp + 607.5000dp + 609.0000dp + 610.5000dp + 612.0000dp + 613.5000dp + 615.0000dp + 616.5000dp + 618.0000dp + 619.5000dp + 621.0000dp + 622.5000dp + 624.0000dp + 625.5000dp + 627.0000dp + 628.5000dp + 630.0000dp + 631.5000dp + 633.0000dp + 634.5000dp + 636.0000dp + 637.5000dp + 639.0000dp + 640.5000dp + 642.0000dp + 643.5000dp + 645.0000dp + 646.5000dp + 648.0000dp + 649.5000dp + 651.0000dp + 652.5000dp + 654.0000dp + 655.5000dp + 657.0000dp + 658.5000dp + 660.0000dp + 661.5000dp + 663.0000dp + 664.5000dp + 666.0000dp + 667.5000dp + 669.0000dp + 670.5000dp + 672.0000dp + 673.5000dp + 675.0000dp + 676.5000dp + 678.0000dp + 679.5000dp + 681.0000dp + 682.5000dp + 684.0000dp + 685.5000dp + 687.0000dp + 688.5000dp + 690.0000dp + 691.5000dp + 693.0000dp + 694.5000dp + 696.0000dp + 697.5000dp + 699.0000dp + 700.5000dp + 702.0000dp + 703.5000dp + 705.0000dp + 706.5000dp + 708.0000dp + 709.5000dp + 711.0000dp + 712.5000dp + 714.0000dp + 715.5000dp + 717.0000dp + 718.5000dp + 720.0000dp + 721.5000dp + 723.0000dp + 724.5000dp + 726.0000dp + 727.5000dp + 729.0000dp + 730.5000dp + 732.0000dp + 733.5000dp + 735.0000dp + 736.5000dp + 738.0000dp + 739.5000dp + 741.0000dp + 742.5000dp + 744.0000dp + 745.5000dp + 747.0000dp + 748.5000dp + 750.0000dp + 900.0000dp + 960.0000dp + 1080.0000dp + 1.5000sp + 3.0000sp + 4.5000sp + 6.0000sp + 7.5000sp + 9.0000sp + 10.5000sp + 12.0000sp + 13.5000sp + 15.0000sp + 16.5000sp + 18.0000sp + 19.5000sp + 21.0000sp + 22.5000sp + 24.0000sp + 25.5000sp + 27.0000sp + 28.5000sp + 30.0000sp + 31.5000sp + 33.0000sp + 34.5000sp + 36.0000sp + 37.5000sp + 39.0000sp + 40.5000sp + 42.0000sp + 43.5000sp + 45.0000sp + 46.5000sp + 48.0000sp + 49.5000sp + 51.0000sp + 52.5000sp + 54.0000sp + 55.5000sp + 57.0000sp + 58.5000sp + 60.0000sp + 61.5000sp + 63.0000sp + 64.5000sp + 66.0000sp + 67.5000sp + 69.0000sp + 70.5000sp + 72.0000sp + 73.5000sp + 75.0000sp + diff --git a/app/src/main/res/values-sw592dp/dimens.xml b/app/src/main/res/values-sw592dp/dimens.xml new file mode 100644 index 0000000..e188808 --- /dev/null +++ b/app/src/main/res/values-sw592dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.6444dp + 8.2222dp + 65.7778dp + -98.6667dp + -49.3333dp + -32.8889dp + -19.7333dp + -16.4444dp + -13.1556dp + -8.2222dp + -3.2889dp + -1.6444dp + 0.0000dp + 0.1644dp + 0.8222dp + 1.6444dp + 2.4667dp + 3.2889dp + 4.1111dp + 4.9333dp + 5.7556dp + 6.5778dp + 7.4000dp + 8.2222dp + 9.8667dp + 11.5111dp + 13.1556dp + 14.8000dp + 16.4444dp + 18.0889dp + 19.7333dp + 21.3778dp + 23.0222dp + 24.6667dp + 26.3111dp + 27.9556dp + 29.6000dp + 31.2444dp + 32.8889dp + 34.5333dp + 36.1778dp + 37.8222dp + 39.4667dp + 41.1111dp + 42.7556dp + 44.4000dp + 46.0444dp + 47.6889dp + 49.3333dp + 50.9778dp + 52.6222dp + 54.2667dp + 55.9111dp + 57.5556dp + 59.2000dp + 60.8444dp + 62.4889dp + 64.1333dp + 65.7778dp + 67.4222dp + 69.0667dp + 70.7111dp + 72.3556dp + 74.0000dp + 75.6444dp + 77.2889dp + 78.9333dp + 80.5778dp + 82.2222dp + 83.8667dp + 85.5111dp + 87.1556dp + 88.8000dp + 90.4444dp + 92.0889dp + 93.7333dp + 95.3778dp + 97.0222dp + 98.6667dp + 100.3111dp + 101.9556dp + 103.6000dp + 105.2444dp + 106.8889dp + 108.5333dp + 110.1778dp + 111.8222dp + 113.4667dp + 115.1111dp + 116.7556dp + 118.4000dp + 120.0444dp + 121.6889dp + 123.3333dp + 124.9778dp + 126.6222dp + 128.2667dp + 129.9111dp + 131.5556dp + 133.2000dp + 134.8444dp + 136.4889dp + 138.1333dp + 139.7778dp + 141.4222dp + 143.0667dp + 144.7111dp + 146.3556dp + 148.0000dp + 149.6444dp + 151.2889dp + 152.9333dp + 154.5778dp + 156.2222dp + 157.8667dp + 159.5111dp + 161.1556dp + 162.8000dp + 164.4444dp + 166.0889dp + 167.7333dp + 169.3778dp + 171.0222dp + 172.6667dp + 174.3111dp + 175.9556dp + 177.6000dp + 179.2444dp + 180.8889dp + 182.5333dp + 184.1778dp + 185.8222dp + 187.4667dp + 189.1111dp + 190.7556dp + 192.4000dp + 194.0444dp + 195.6889dp + 197.3333dp + 198.9778dp + 200.6222dp + 202.2667dp + 203.9111dp + 205.5556dp + 207.2000dp + 208.8444dp + 210.4889dp + 212.1333dp + 213.7778dp + 215.4222dp + 217.0667dp + 218.7111dp + 220.3556dp + 222.0000dp + 223.6444dp + 225.2889dp + 226.9333dp + 228.5778dp + 230.2222dp + 231.8667dp + 233.5111dp + 235.1556dp + 236.8000dp + 238.4444dp + 240.0889dp + 241.7333dp + 243.3778dp + 245.0222dp + 246.6667dp + 248.3111dp + 249.9556dp + 251.6000dp + 253.2444dp + 254.8889dp + 256.5333dp + 258.1778dp + 259.8222dp + 261.4667dp + 263.1111dp + 264.7556dp + 266.4000dp + 268.0444dp + 269.6889dp + 271.3333dp + 272.9778dp + 274.6222dp + 276.2667dp + 277.9111dp + 279.5556dp + 281.2000dp + 282.8444dp + 284.4889dp + 286.1333dp + 287.7778dp + 289.4222dp + 291.0667dp + 292.7111dp + 294.3556dp + 296.0000dp + 297.6444dp + 299.2889dp + 300.9333dp + 302.5778dp + 304.2222dp + 305.8667dp + 307.5111dp + 309.1556dp + 310.8000dp + 312.4444dp + 314.0889dp + 315.7333dp + 317.3778dp + 319.0222dp + 320.6667dp + 322.3111dp + 323.9556dp + 325.6000dp + 327.2444dp + 328.8889dp + 330.5333dp + 332.1778dp + 333.8222dp + 335.4667dp + 337.1111dp + 338.7556dp + 340.4000dp + 342.0444dp + 343.6889dp + 345.3333dp + 346.9778dp + 348.6222dp + 350.2667dp + 351.9111dp + 353.5556dp + 355.2000dp + 356.8444dp + 358.4889dp + 360.1333dp + 361.7778dp + 363.4222dp + 365.0667dp + 366.7111dp + 368.3556dp + 370.0000dp + 371.6444dp + 373.2889dp + 374.9333dp + 376.5778dp + 378.2222dp + 379.8667dp + 381.5111dp + 383.1556dp + 384.8000dp + 386.4444dp + 388.0889dp + 389.7333dp + 391.3778dp + 393.0222dp + 394.6667dp + 396.3111dp + 397.9556dp + 399.6000dp + 401.2444dp + 402.8889dp + 404.5333dp + 406.1778dp + 407.8222dp + 409.4667dp + 411.1111dp + 412.7556dp + 414.4000dp + 416.0444dp + 417.6889dp + 419.3333dp + 420.9778dp + 422.6222dp + 424.2667dp + 425.9111dp + 427.5556dp + 429.2000dp + 430.8444dp + 432.4889dp + 434.1333dp + 435.7778dp + 437.4222dp + 439.0667dp + 440.7111dp + 442.3556dp + 444.0000dp + 445.6444dp + 447.2889dp + 448.9333dp + 450.5778dp + 452.2222dp + 453.8667dp + 455.5111dp + 457.1556dp + 458.8000dp + 460.4444dp + 462.0889dp + 463.7333dp + 465.3778dp + 467.0222dp + 468.6667dp + 470.3111dp + 471.9556dp + 473.6000dp + 475.2444dp + 476.8889dp + 478.5333dp + 480.1778dp + 481.8222dp + 483.4667dp + 485.1111dp + 486.7556dp + 488.4000dp + 490.0444dp + 491.6889dp + 493.3333dp + 494.9778dp + 496.6222dp + 498.2667dp + 499.9111dp + 501.5556dp + 503.2000dp + 504.8444dp + 506.4889dp + 508.1333dp + 509.7778dp + 511.4222dp + 513.0667dp + 514.7111dp + 516.3556dp + 518.0000dp + 519.6444dp + 521.2889dp + 522.9333dp + 524.5778dp + 526.2222dp + 527.8667dp + 529.5111dp + 531.1556dp + 532.8000dp + 534.4444dp + 536.0889dp + 537.7333dp + 539.3778dp + 541.0222dp + 542.6667dp + 544.3111dp + 545.9556dp + 547.6000dp + 549.2444dp + 550.8889dp + 552.5333dp + 554.1778dp + 555.8222dp + 557.4667dp + 559.1111dp + 560.7556dp + 562.4000dp + 564.0444dp + 565.6889dp + 567.3333dp + 568.9778dp + 570.6222dp + 572.2667dp + 573.9111dp + 575.5556dp + 577.2000dp + 578.8444dp + 580.4889dp + 582.1333dp + 583.7778dp + 585.4222dp + 587.0667dp + 588.7111dp + 590.3556dp + 592.0000dp + 593.6444dp + 595.2889dp + 596.9333dp + 598.5778dp + 600.2222dp + 601.8667dp + 603.5111dp + 605.1556dp + 606.8000dp + 608.4444dp + 610.0889dp + 611.7333dp + 613.3778dp + 615.0222dp + 616.6667dp + 618.3111dp + 619.9556dp + 621.6000dp + 623.2444dp + 624.8889dp + 626.5333dp + 628.1778dp + 629.8222dp + 631.4667dp + 633.1111dp + 634.7556dp + 636.4000dp + 638.0444dp + 639.6889dp + 641.3333dp + 642.9778dp + 644.6222dp + 646.2667dp + 647.9111dp + 649.5556dp + 651.2000dp + 652.8444dp + 654.4889dp + 656.1333dp + 657.7778dp + 659.4222dp + 661.0667dp + 662.7111dp + 664.3556dp + 666.0000dp + 667.6444dp + 669.2889dp + 670.9333dp + 672.5778dp + 674.2222dp + 675.8667dp + 677.5111dp + 679.1556dp + 680.8000dp + 682.4444dp + 684.0889dp + 685.7333dp + 687.3778dp + 689.0222dp + 690.6667dp + 692.3111dp + 693.9556dp + 695.6000dp + 697.2444dp + 698.8889dp + 700.5333dp + 702.1778dp + 703.8222dp + 705.4667dp + 707.1111dp + 708.7556dp + 710.4000dp + 712.0444dp + 713.6889dp + 715.3333dp + 716.9778dp + 718.6222dp + 720.2667dp + 721.9111dp + 723.5556dp + 725.2000dp + 726.8444dp + 728.4889dp + 730.1333dp + 731.7778dp + 733.4222dp + 735.0667dp + 736.7111dp + 738.3556dp + 740.0000dp + 741.6444dp + 743.2889dp + 744.9333dp + 746.5778dp + 748.2222dp + 749.8667dp + 751.5111dp + 753.1556dp + 754.8000dp + 756.4444dp + 758.0889dp + 759.7333dp + 761.3778dp + 763.0222dp + 764.6667dp + 766.3111dp + 767.9556dp + 769.6000dp + 771.2444dp + 772.8889dp + 774.5333dp + 776.1778dp + 777.8222dp + 779.4667dp + 781.1111dp + 782.7556dp + 784.4000dp + 786.0444dp + 787.6889dp + 789.3333dp + 790.9778dp + 792.6222dp + 794.2667dp + 795.9111dp + 797.5556dp + 799.2000dp + 800.8444dp + 802.4889dp + 804.1333dp + 805.7778dp + 807.4222dp + 809.0667dp + 810.7111dp + 812.3556dp + 814.0000dp + 815.6444dp + 817.2889dp + 818.9333dp + 820.5778dp + 822.2222dp + 986.6667dp + 1052.4444dp + 1184.0000dp + 1.6444sp + 3.2889sp + 4.9333sp + 6.5778sp + 8.2222sp + 9.8667sp + 11.5111sp + 13.1556sp + 14.8000sp + 16.4444sp + 18.0889sp + 19.7333sp + 21.3778sp + 23.0222sp + 24.6667sp + 26.3111sp + 27.9556sp + 29.6000sp + 31.2444sp + 32.8889sp + 34.5333sp + 36.1778sp + 37.8222sp + 39.4667sp + 41.1111sp + 42.7556sp + 44.4000sp + 46.0444sp + 47.6889sp + 49.3333sp + 50.9778sp + 52.6222sp + 54.2667sp + 55.9111sp + 57.5556sp + 59.2000sp + 60.8444sp + 62.4889sp + 64.1333sp + 65.7778sp + 67.4222sp + 69.0667sp + 70.7111sp + 72.3556sp + 74.0000sp + 75.6444sp + 77.2889sp + 78.9333sp + 80.5778sp + 82.2222sp + diff --git a/app/src/main/res/values-sw600dp/dimens.xml b/app/src/main/res/values-sw600dp/dimens.xml new file mode 100644 index 0000000..9213665 --- /dev/null +++ b/app/src/main/res/values-sw600dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.6667dp + 8.3333dp + 66.6667dp + -100.0000dp + -50.0000dp + -33.3333dp + -20.0000dp + -16.6667dp + -13.3333dp + -8.3333dp + -3.3333dp + -1.6667dp + 0.0000dp + 0.1667dp + 0.8333dp + 1.6667dp + 2.5000dp + 3.3333dp + 4.1667dp + 5.0000dp + 5.8333dp + 6.6667dp + 7.5000dp + 8.3333dp + 10.0000dp + 11.6667dp + 13.3333dp + 15.0000dp + 16.6667dp + 18.3333dp + 20.0000dp + 21.6667dp + 23.3333dp + 25.0000dp + 26.6667dp + 28.3333dp + 30.0000dp + 31.6667dp + 33.3333dp + 35.0000dp + 36.6667dp + 38.3333dp + 40.0000dp + 41.6667dp + 43.3333dp + 45.0000dp + 46.6667dp + 48.3333dp + 50.0000dp + 51.6667dp + 53.3333dp + 55.0000dp + 56.6667dp + 58.3333dp + 60.0000dp + 61.6667dp + 63.3333dp + 65.0000dp + 66.6667dp + 68.3333dp + 70.0000dp + 71.6667dp + 73.3333dp + 75.0000dp + 76.6667dp + 78.3333dp + 80.0000dp + 81.6667dp + 83.3333dp + 85.0000dp + 86.6667dp + 88.3333dp + 90.0000dp + 91.6667dp + 93.3333dp + 95.0000dp + 96.6667dp + 98.3333dp + 100.0000dp + 101.6667dp + 103.3333dp + 105.0000dp + 106.6667dp + 108.3333dp + 110.0000dp + 111.6667dp + 113.3333dp + 115.0000dp + 116.6667dp + 118.3333dp + 120.0000dp + 121.6667dp + 123.3333dp + 125.0000dp + 126.6667dp + 128.3333dp + 130.0000dp + 131.6667dp + 133.3333dp + 135.0000dp + 136.6667dp + 138.3333dp + 140.0000dp + 141.6667dp + 143.3333dp + 145.0000dp + 146.6667dp + 148.3333dp + 150.0000dp + 151.6667dp + 153.3333dp + 155.0000dp + 156.6667dp + 158.3333dp + 160.0000dp + 161.6667dp + 163.3333dp + 165.0000dp + 166.6667dp + 168.3333dp + 170.0000dp + 171.6667dp + 173.3333dp + 175.0000dp + 176.6667dp + 178.3333dp + 180.0000dp + 181.6667dp + 183.3333dp + 185.0000dp + 186.6667dp + 188.3333dp + 190.0000dp + 191.6667dp + 193.3333dp + 195.0000dp + 196.6667dp + 198.3333dp + 200.0000dp + 201.6667dp + 203.3333dp + 205.0000dp + 206.6667dp + 208.3333dp + 210.0000dp + 211.6667dp + 213.3333dp + 215.0000dp + 216.6667dp + 218.3333dp + 220.0000dp + 221.6667dp + 223.3333dp + 225.0000dp + 226.6667dp + 228.3333dp + 230.0000dp + 231.6667dp + 233.3333dp + 235.0000dp + 236.6667dp + 238.3333dp + 240.0000dp + 241.6667dp + 243.3333dp + 245.0000dp + 246.6667dp + 248.3333dp + 250.0000dp + 251.6667dp + 253.3333dp + 255.0000dp + 256.6667dp + 258.3333dp + 260.0000dp + 261.6667dp + 263.3333dp + 265.0000dp + 266.6667dp + 268.3333dp + 270.0000dp + 271.6667dp + 273.3333dp + 275.0000dp + 276.6667dp + 278.3333dp + 280.0000dp + 281.6667dp + 283.3333dp + 285.0000dp + 286.6667dp + 288.3333dp + 290.0000dp + 291.6667dp + 293.3333dp + 295.0000dp + 296.6667dp + 298.3333dp + 300.0000dp + 301.6667dp + 303.3333dp + 305.0000dp + 306.6667dp + 308.3333dp + 310.0000dp + 311.6667dp + 313.3333dp + 315.0000dp + 316.6667dp + 318.3333dp + 320.0000dp + 321.6667dp + 323.3333dp + 325.0000dp + 326.6667dp + 328.3333dp + 330.0000dp + 331.6667dp + 333.3333dp + 335.0000dp + 336.6667dp + 338.3333dp + 340.0000dp + 341.6667dp + 343.3333dp + 345.0000dp + 346.6667dp + 348.3333dp + 350.0000dp + 351.6667dp + 353.3333dp + 355.0000dp + 356.6667dp + 358.3333dp + 360.0000dp + 361.6667dp + 363.3333dp + 365.0000dp + 366.6667dp + 368.3333dp + 370.0000dp + 371.6667dp + 373.3333dp + 375.0000dp + 376.6667dp + 378.3333dp + 380.0000dp + 381.6667dp + 383.3333dp + 385.0000dp + 386.6667dp + 388.3333dp + 390.0000dp + 391.6667dp + 393.3333dp + 395.0000dp + 396.6667dp + 398.3333dp + 400.0000dp + 401.6667dp + 403.3333dp + 405.0000dp + 406.6667dp + 408.3333dp + 410.0000dp + 411.6667dp + 413.3333dp + 415.0000dp + 416.6667dp + 418.3333dp + 420.0000dp + 421.6667dp + 423.3333dp + 425.0000dp + 426.6667dp + 428.3333dp + 430.0000dp + 431.6667dp + 433.3333dp + 435.0000dp + 436.6667dp + 438.3333dp + 440.0000dp + 441.6667dp + 443.3333dp + 445.0000dp + 446.6667dp + 448.3333dp + 450.0000dp + 451.6667dp + 453.3333dp + 455.0000dp + 456.6667dp + 458.3333dp + 460.0000dp + 461.6667dp + 463.3333dp + 465.0000dp + 466.6667dp + 468.3333dp + 470.0000dp + 471.6667dp + 473.3333dp + 475.0000dp + 476.6667dp + 478.3333dp + 480.0000dp + 481.6667dp + 483.3333dp + 485.0000dp + 486.6667dp + 488.3333dp + 490.0000dp + 491.6667dp + 493.3333dp + 495.0000dp + 496.6667dp + 498.3333dp + 500.0000dp + 501.6667dp + 503.3333dp + 505.0000dp + 506.6667dp + 508.3333dp + 510.0000dp + 511.6667dp + 513.3333dp + 515.0000dp + 516.6667dp + 518.3333dp + 520.0000dp + 521.6667dp + 523.3333dp + 525.0000dp + 526.6667dp + 528.3333dp + 530.0000dp + 531.6667dp + 533.3333dp + 535.0000dp + 536.6667dp + 538.3333dp + 540.0000dp + 541.6667dp + 543.3333dp + 545.0000dp + 546.6667dp + 548.3333dp + 550.0000dp + 551.6667dp + 553.3333dp + 555.0000dp + 556.6667dp + 558.3333dp + 560.0000dp + 561.6667dp + 563.3333dp + 565.0000dp + 566.6667dp + 568.3333dp + 570.0000dp + 571.6667dp + 573.3333dp + 575.0000dp + 576.6667dp + 578.3333dp + 580.0000dp + 581.6667dp + 583.3333dp + 585.0000dp + 586.6667dp + 588.3333dp + 590.0000dp + 591.6667dp + 593.3333dp + 595.0000dp + 596.6667dp + 598.3333dp + 600.0000dp + 601.6667dp + 603.3333dp + 605.0000dp + 606.6667dp + 608.3333dp + 610.0000dp + 611.6667dp + 613.3333dp + 615.0000dp + 616.6667dp + 618.3333dp + 620.0000dp + 621.6667dp + 623.3333dp + 625.0000dp + 626.6667dp + 628.3333dp + 630.0000dp + 631.6667dp + 633.3333dp + 635.0000dp + 636.6667dp + 638.3333dp + 640.0000dp + 641.6667dp + 643.3333dp + 645.0000dp + 646.6667dp + 648.3333dp + 650.0000dp + 651.6667dp + 653.3333dp + 655.0000dp + 656.6667dp + 658.3333dp + 660.0000dp + 661.6667dp + 663.3333dp + 665.0000dp + 666.6667dp + 668.3333dp + 670.0000dp + 671.6667dp + 673.3333dp + 675.0000dp + 676.6667dp + 678.3333dp + 680.0000dp + 681.6667dp + 683.3333dp + 685.0000dp + 686.6667dp + 688.3333dp + 690.0000dp + 691.6667dp + 693.3333dp + 695.0000dp + 696.6667dp + 698.3333dp + 700.0000dp + 701.6667dp + 703.3333dp + 705.0000dp + 706.6667dp + 708.3333dp + 710.0000dp + 711.6667dp + 713.3333dp + 715.0000dp + 716.6667dp + 718.3333dp + 720.0000dp + 721.6667dp + 723.3333dp + 725.0000dp + 726.6667dp + 728.3333dp + 730.0000dp + 731.6667dp + 733.3333dp + 735.0000dp + 736.6667dp + 738.3333dp + 740.0000dp + 741.6667dp + 743.3333dp + 745.0000dp + 746.6667dp + 748.3333dp + 750.0000dp + 751.6667dp + 753.3333dp + 755.0000dp + 756.6667dp + 758.3333dp + 760.0000dp + 761.6667dp + 763.3333dp + 765.0000dp + 766.6667dp + 768.3333dp + 770.0000dp + 771.6667dp + 773.3333dp + 775.0000dp + 776.6667dp + 778.3333dp + 780.0000dp + 781.6667dp + 783.3333dp + 785.0000dp + 786.6667dp + 788.3333dp + 790.0000dp + 791.6667dp + 793.3333dp + 795.0000dp + 796.6667dp + 798.3333dp + 800.0000dp + 801.6667dp + 803.3333dp + 805.0000dp + 806.6667dp + 808.3333dp + 810.0000dp + 811.6667dp + 813.3333dp + 815.0000dp + 816.6667dp + 818.3333dp + 820.0000dp + 821.6667dp + 823.3333dp + 825.0000dp + 826.6667dp + 828.3333dp + 830.0000dp + 831.6667dp + 833.3333dp + 1000.0000dp + 1066.6667dp + 1200.0000dp + 1.6667sp + 3.3333sp + 5.0000sp + 6.6667sp + 8.3333sp + 10.0000sp + 11.6667sp + 13.3333sp + 15.0000sp + 16.6667sp + 18.3333sp + 20.0000sp + 21.6667sp + 23.3333sp + 25.0000sp + 26.6667sp + 28.3333sp + 30.0000sp + 31.6667sp + 33.3333sp + 35.0000sp + 36.6667sp + 38.3333sp + 40.0000sp + 41.6667sp + 43.3333sp + 45.0000sp + 46.6667sp + 48.3333sp + 50.0000sp + 51.6667sp + 53.3333sp + 55.0000sp + 56.6667sp + 58.3333sp + 60.0000sp + 61.6667sp + 63.3333sp + 65.0000sp + 66.6667sp + 68.3333sp + 70.0000sp + 71.6667sp + 73.3333sp + 75.0000sp + 76.6667sp + 78.3333sp + 80.0000sp + 81.6667sp + 83.3333sp + diff --git a/app/src/main/res/values-sw640dp/dimens.xml b/app/src/main/res/values-sw640dp/dimens.xml new file mode 100644 index 0000000..d04d91b --- /dev/null +++ b/app/src/main/res/values-sw640dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.7778dp + 8.8889dp + 71.1111dp + -106.6667dp + -53.3333dp + -35.5556dp + -21.3333dp + -17.7778dp + -14.2222dp + -8.8889dp + -3.5556dp + -1.7778dp + 0.0000dp + 0.1778dp + 0.8889dp + 1.7778dp + 2.6667dp + 3.5556dp + 4.4444dp + 5.3333dp + 6.2222dp + 7.1111dp + 8.0000dp + 8.8889dp + 10.6667dp + 12.4444dp + 14.2222dp + 16.0000dp + 17.7778dp + 19.5556dp + 21.3333dp + 23.1111dp + 24.8889dp + 26.6667dp + 28.4444dp + 30.2222dp + 32.0000dp + 33.7778dp + 35.5556dp + 37.3333dp + 39.1111dp + 40.8889dp + 42.6667dp + 44.4444dp + 46.2222dp + 48.0000dp + 49.7778dp + 51.5556dp + 53.3333dp + 55.1111dp + 56.8889dp + 58.6667dp + 60.4444dp + 62.2222dp + 64.0000dp + 65.7778dp + 67.5556dp + 69.3333dp + 71.1111dp + 72.8889dp + 74.6667dp + 76.4444dp + 78.2222dp + 80.0000dp + 81.7778dp + 83.5556dp + 85.3333dp + 87.1111dp + 88.8889dp + 90.6667dp + 92.4444dp + 94.2222dp + 96.0000dp + 97.7778dp + 99.5556dp + 101.3333dp + 103.1111dp + 104.8889dp + 106.6667dp + 108.4444dp + 110.2222dp + 112.0000dp + 113.7778dp + 115.5556dp + 117.3333dp + 119.1111dp + 120.8889dp + 122.6667dp + 124.4444dp + 126.2222dp + 128.0000dp + 129.7778dp + 131.5556dp + 133.3333dp + 135.1111dp + 136.8889dp + 138.6667dp + 140.4444dp + 142.2222dp + 144.0000dp + 145.7778dp + 147.5556dp + 149.3333dp + 151.1111dp + 152.8889dp + 154.6667dp + 156.4444dp + 158.2222dp + 160.0000dp + 161.7778dp + 163.5556dp + 165.3333dp + 167.1111dp + 168.8889dp + 170.6667dp + 172.4444dp + 174.2222dp + 176.0000dp + 177.7778dp + 179.5556dp + 181.3333dp + 183.1111dp + 184.8889dp + 186.6667dp + 188.4444dp + 190.2222dp + 192.0000dp + 193.7778dp + 195.5556dp + 197.3333dp + 199.1111dp + 200.8889dp + 202.6667dp + 204.4444dp + 206.2222dp + 208.0000dp + 209.7778dp + 211.5556dp + 213.3333dp + 215.1111dp + 216.8889dp + 218.6667dp + 220.4444dp + 222.2222dp + 224.0000dp + 225.7778dp + 227.5556dp + 229.3333dp + 231.1111dp + 232.8889dp + 234.6667dp + 236.4444dp + 238.2222dp + 240.0000dp + 241.7778dp + 243.5556dp + 245.3333dp + 247.1111dp + 248.8889dp + 250.6667dp + 252.4444dp + 254.2222dp + 256.0000dp + 257.7778dp + 259.5556dp + 261.3333dp + 263.1111dp + 264.8889dp + 266.6667dp + 268.4444dp + 270.2222dp + 272.0000dp + 273.7778dp + 275.5556dp + 277.3333dp + 279.1111dp + 280.8889dp + 282.6667dp + 284.4444dp + 286.2222dp + 288.0000dp + 289.7778dp + 291.5556dp + 293.3333dp + 295.1111dp + 296.8889dp + 298.6667dp + 300.4444dp + 302.2222dp + 304.0000dp + 305.7778dp + 307.5556dp + 309.3333dp + 311.1111dp + 312.8889dp + 314.6667dp + 316.4444dp + 318.2222dp + 320.0000dp + 321.7778dp + 323.5556dp + 325.3333dp + 327.1111dp + 328.8889dp + 330.6667dp + 332.4444dp + 334.2222dp + 336.0000dp + 337.7778dp + 339.5556dp + 341.3333dp + 343.1111dp + 344.8889dp + 346.6667dp + 348.4444dp + 350.2222dp + 352.0000dp + 353.7778dp + 355.5556dp + 357.3333dp + 359.1111dp + 360.8889dp + 362.6667dp + 364.4444dp + 366.2222dp + 368.0000dp + 369.7778dp + 371.5556dp + 373.3333dp + 375.1111dp + 376.8889dp + 378.6667dp + 380.4444dp + 382.2222dp + 384.0000dp + 385.7778dp + 387.5556dp + 389.3333dp + 391.1111dp + 392.8889dp + 394.6667dp + 396.4444dp + 398.2222dp + 400.0000dp + 401.7778dp + 403.5556dp + 405.3333dp + 407.1111dp + 408.8889dp + 410.6667dp + 412.4444dp + 414.2222dp + 416.0000dp + 417.7778dp + 419.5556dp + 421.3333dp + 423.1111dp + 424.8889dp + 426.6667dp + 428.4444dp + 430.2222dp + 432.0000dp + 433.7778dp + 435.5556dp + 437.3333dp + 439.1111dp + 440.8889dp + 442.6667dp + 444.4444dp + 446.2222dp + 448.0000dp + 449.7778dp + 451.5556dp + 453.3333dp + 455.1111dp + 456.8889dp + 458.6667dp + 460.4444dp + 462.2222dp + 464.0000dp + 465.7778dp + 467.5556dp + 469.3333dp + 471.1111dp + 472.8889dp + 474.6667dp + 476.4444dp + 478.2222dp + 480.0000dp + 481.7778dp + 483.5556dp + 485.3333dp + 487.1111dp + 488.8889dp + 490.6667dp + 492.4444dp + 494.2222dp + 496.0000dp + 497.7778dp + 499.5556dp + 501.3333dp + 503.1111dp + 504.8889dp + 506.6667dp + 508.4444dp + 510.2222dp + 512.0000dp + 513.7778dp + 515.5556dp + 517.3333dp + 519.1111dp + 520.8889dp + 522.6667dp + 524.4444dp + 526.2222dp + 528.0000dp + 529.7778dp + 531.5556dp + 533.3333dp + 535.1111dp + 536.8889dp + 538.6667dp + 540.4444dp + 542.2222dp + 544.0000dp + 545.7778dp + 547.5556dp + 549.3333dp + 551.1111dp + 552.8889dp + 554.6667dp + 556.4444dp + 558.2222dp + 560.0000dp + 561.7778dp + 563.5556dp + 565.3333dp + 567.1111dp + 568.8889dp + 570.6667dp + 572.4444dp + 574.2222dp + 576.0000dp + 577.7778dp + 579.5556dp + 581.3333dp + 583.1111dp + 584.8889dp + 586.6667dp + 588.4444dp + 590.2222dp + 592.0000dp + 593.7778dp + 595.5556dp + 597.3333dp + 599.1111dp + 600.8889dp + 602.6667dp + 604.4444dp + 606.2222dp + 608.0000dp + 609.7778dp + 611.5556dp + 613.3333dp + 615.1111dp + 616.8889dp + 618.6667dp + 620.4444dp + 622.2222dp + 624.0000dp + 625.7778dp + 627.5556dp + 629.3333dp + 631.1111dp + 632.8889dp + 634.6667dp + 636.4444dp + 638.2222dp + 640.0000dp + 641.7778dp + 643.5556dp + 645.3333dp + 647.1111dp + 648.8889dp + 650.6667dp + 652.4444dp + 654.2222dp + 656.0000dp + 657.7778dp + 659.5556dp + 661.3333dp + 663.1111dp + 664.8889dp + 666.6667dp + 668.4444dp + 670.2222dp + 672.0000dp + 673.7778dp + 675.5556dp + 677.3333dp + 679.1111dp + 680.8889dp + 682.6667dp + 684.4444dp + 686.2222dp + 688.0000dp + 689.7778dp + 691.5556dp + 693.3333dp + 695.1111dp + 696.8889dp + 698.6667dp + 700.4444dp + 702.2222dp + 704.0000dp + 705.7778dp + 707.5556dp + 709.3333dp + 711.1111dp + 712.8889dp + 714.6667dp + 716.4444dp + 718.2222dp + 720.0000dp + 721.7778dp + 723.5556dp + 725.3333dp + 727.1111dp + 728.8889dp + 730.6667dp + 732.4444dp + 734.2222dp + 736.0000dp + 737.7778dp + 739.5556dp + 741.3333dp + 743.1111dp + 744.8889dp + 746.6667dp + 748.4444dp + 750.2222dp + 752.0000dp + 753.7778dp + 755.5556dp + 757.3333dp + 759.1111dp + 760.8889dp + 762.6667dp + 764.4444dp + 766.2222dp + 768.0000dp + 769.7778dp + 771.5556dp + 773.3333dp + 775.1111dp + 776.8889dp + 778.6667dp + 780.4444dp + 782.2222dp + 784.0000dp + 785.7778dp + 787.5556dp + 789.3333dp + 791.1111dp + 792.8889dp + 794.6667dp + 796.4444dp + 798.2222dp + 800.0000dp + 801.7778dp + 803.5556dp + 805.3333dp + 807.1111dp + 808.8889dp + 810.6667dp + 812.4444dp + 814.2222dp + 816.0000dp + 817.7778dp + 819.5556dp + 821.3333dp + 823.1111dp + 824.8889dp + 826.6667dp + 828.4444dp + 830.2222dp + 832.0000dp + 833.7778dp + 835.5556dp + 837.3333dp + 839.1111dp + 840.8889dp + 842.6667dp + 844.4444dp + 846.2222dp + 848.0000dp + 849.7778dp + 851.5556dp + 853.3333dp + 855.1111dp + 856.8889dp + 858.6667dp + 860.4444dp + 862.2222dp + 864.0000dp + 865.7778dp + 867.5556dp + 869.3333dp + 871.1111dp + 872.8889dp + 874.6667dp + 876.4444dp + 878.2222dp + 880.0000dp + 881.7778dp + 883.5556dp + 885.3333dp + 887.1111dp + 888.8889dp + 1066.6667dp + 1137.7778dp + 1280.0000dp + 1.7778sp + 3.5556sp + 5.3333sp + 7.1111sp + 8.8889sp + 10.6667sp + 12.4444sp + 14.2222sp + 16.0000sp + 17.7778sp + 19.5556sp + 21.3333sp + 23.1111sp + 24.8889sp + 26.6667sp + 28.4444sp + 30.2222sp + 32.0000sp + 33.7778sp + 35.5556sp + 37.3333sp + 39.1111sp + 40.8889sp + 42.6667sp + 44.4444sp + 46.2222sp + 48.0000sp + 49.7778sp + 51.5556sp + 53.3333sp + 55.1111sp + 56.8889sp + 58.6667sp + 60.4444sp + 62.2222sp + 64.0000sp + 65.7778sp + 67.5556sp + 69.3333sp + 71.1111sp + 72.8889sp + 74.6667sp + 76.4444sp + 78.2222sp + 80.0000sp + 81.7778sp + 83.5556sp + 85.3333sp + 87.1111sp + 88.8889sp + diff --git a/app/src/main/res/values-sw662dp/dimens.xml b/app/src/main/res/values-sw662dp/dimens.xml new file mode 100644 index 0000000..e69b8c2 --- /dev/null +++ b/app/src/main/res/values-sw662dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 1.8389dp + 9.1944dp + 73.5556dp + -110.3333dp + -55.1667dp + -36.7778dp + -22.0667dp + -18.3889dp + -14.7111dp + -9.1944dp + -3.6778dp + -1.8389dp + 0.0000dp + 0.1839dp + 0.9194dp + 1.8389dp + 2.7583dp + 3.6778dp + 4.5972dp + 5.5167dp + 6.4361dp + 7.3556dp + 8.2750dp + 9.1944dp + 11.0333dp + 12.8722dp + 14.7111dp + 16.5500dp + 18.3889dp + 20.2278dp + 22.0667dp + 23.9056dp + 25.7444dp + 27.5833dp + 29.4222dp + 31.2611dp + 33.1000dp + 34.9389dp + 36.7778dp + 38.6167dp + 40.4556dp + 42.2944dp + 44.1333dp + 45.9722dp + 47.8111dp + 49.6500dp + 51.4889dp + 53.3278dp + 55.1667dp + 57.0056dp + 58.8444dp + 60.6833dp + 62.5222dp + 64.3611dp + 66.2000dp + 68.0389dp + 69.8778dp + 71.7167dp + 73.5556dp + 75.3944dp + 77.2333dp + 79.0722dp + 80.9111dp + 82.7500dp + 84.5889dp + 86.4278dp + 88.2667dp + 90.1056dp + 91.9444dp + 93.7833dp + 95.6222dp + 97.4611dp + 99.3000dp + 101.1389dp + 102.9778dp + 104.8167dp + 106.6556dp + 108.4944dp + 110.3333dp + 112.1722dp + 114.0111dp + 115.8500dp + 117.6889dp + 119.5278dp + 121.3667dp + 123.2056dp + 125.0444dp + 126.8833dp + 128.7222dp + 130.5611dp + 132.4000dp + 134.2389dp + 136.0778dp + 137.9167dp + 139.7556dp + 141.5944dp + 143.4333dp + 145.2722dp + 147.1111dp + 148.9500dp + 150.7889dp + 152.6278dp + 154.4667dp + 156.3056dp + 158.1444dp + 159.9833dp + 161.8222dp + 163.6611dp + 165.5000dp + 167.3389dp + 169.1778dp + 171.0167dp + 172.8556dp + 174.6944dp + 176.5333dp + 178.3722dp + 180.2111dp + 182.0500dp + 183.8889dp + 185.7278dp + 187.5667dp + 189.4056dp + 191.2444dp + 193.0833dp + 194.9222dp + 196.7611dp + 198.6000dp + 200.4389dp + 202.2778dp + 204.1167dp + 205.9556dp + 207.7944dp + 209.6333dp + 211.4722dp + 213.3111dp + 215.1500dp + 216.9889dp + 218.8278dp + 220.6667dp + 222.5056dp + 224.3444dp + 226.1833dp + 228.0222dp + 229.8611dp + 231.7000dp + 233.5389dp + 235.3778dp + 237.2167dp + 239.0556dp + 240.8944dp + 242.7333dp + 244.5722dp + 246.4111dp + 248.2500dp + 250.0889dp + 251.9278dp + 253.7667dp + 255.6056dp + 257.4444dp + 259.2833dp + 261.1222dp + 262.9611dp + 264.8000dp + 266.6389dp + 268.4778dp + 270.3167dp + 272.1556dp + 273.9944dp + 275.8333dp + 277.6722dp + 279.5111dp + 281.3500dp + 283.1889dp + 285.0278dp + 286.8667dp + 288.7056dp + 290.5444dp + 292.3833dp + 294.2222dp + 296.0611dp + 297.9000dp + 299.7389dp + 301.5778dp + 303.4167dp + 305.2556dp + 307.0944dp + 308.9333dp + 310.7722dp + 312.6111dp + 314.4500dp + 316.2889dp + 318.1278dp + 319.9667dp + 321.8056dp + 323.6444dp + 325.4833dp + 327.3222dp + 329.1611dp + 331.0000dp + 332.8389dp + 334.6778dp + 336.5167dp + 338.3556dp + 340.1944dp + 342.0333dp + 343.8722dp + 345.7111dp + 347.5500dp + 349.3889dp + 351.2278dp + 353.0667dp + 354.9056dp + 356.7444dp + 358.5833dp + 360.4222dp + 362.2611dp + 364.1000dp + 365.9389dp + 367.7778dp + 369.6167dp + 371.4556dp + 373.2944dp + 375.1333dp + 376.9722dp + 378.8111dp + 380.6500dp + 382.4889dp + 384.3278dp + 386.1667dp + 388.0056dp + 389.8444dp + 391.6833dp + 393.5222dp + 395.3611dp + 397.2000dp + 399.0389dp + 400.8778dp + 402.7167dp + 404.5556dp + 406.3944dp + 408.2333dp + 410.0722dp + 411.9111dp + 413.7500dp + 415.5889dp + 417.4278dp + 419.2667dp + 421.1056dp + 422.9444dp + 424.7833dp + 426.6222dp + 428.4611dp + 430.3000dp + 432.1389dp + 433.9778dp + 435.8167dp + 437.6556dp + 439.4944dp + 441.3333dp + 443.1722dp + 445.0111dp + 446.8500dp + 448.6889dp + 450.5278dp + 452.3667dp + 454.2056dp + 456.0444dp + 457.8833dp + 459.7222dp + 461.5611dp + 463.4000dp + 465.2389dp + 467.0778dp + 468.9167dp + 470.7556dp + 472.5944dp + 474.4333dp + 476.2722dp + 478.1111dp + 479.9500dp + 481.7889dp + 483.6278dp + 485.4667dp + 487.3056dp + 489.1444dp + 490.9833dp + 492.8222dp + 494.6611dp + 496.5000dp + 498.3389dp + 500.1778dp + 502.0167dp + 503.8556dp + 505.6944dp + 507.5333dp + 509.3722dp + 511.2111dp + 513.0500dp + 514.8889dp + 516.7278dp + 518.5667dp + 520.4056dp + 522.2444dp + 524.0833dp + 525.9222dp + 527.7611dp + 529.6000dp + 531.4389dp + 533.2778dp + 535.1167dp + 536.9556dp + 538.7944dp + 540.6333dp + 542.4722dp + 544.3111dp + 546.1500dp + 547.9889dp + 549.8278dp + 551.6667dp + 553.5056dp + 555.3444dp + 557.1833dp + 559.0222dp + 560.8611dp + 562.7000dp + 564.5389dp + 566.3778dp + 568.2167dp + 570.0556dp + 571.8944dp + 573.7333dp + 575.5722dp + 577.4111dp + 579.2500dp + 581.0889dp + 582.9278dp + 584.7667dp + 586.6056dp + 588.4444dp + 590.2833dp + 592.1222dp + 593.9611dp + 595.8000dp + 597.6389dp + 599.4778dp + 601.3167dp + 603.1556dp + 604.9944dp + 606.8333dp + 608.6722dp + 610.5111dp + 612.3500dp + 614.1889dp + 616.0278dp + 617.8667dp + 619.7056dp + 621.5444dp + 623.3833dp + 625.2222dp + 627.0611dp + 628.9000dp + 630.7389dp + 632.5778dp + 634.4167dp + 636.2556dp + 638.0944dp + 639.9333dp + 641.7722dp + 643.6111dp + 645.4500dp + 647.2889dp + 649.1278dp + 650.9667dp + 652.8056dp + 654.6444dp + 656.4833dp + 658.3222dp + 660.1611dp + 662.0000dp + 663.8389dp + 665.6778dp + 667.5167dp + 669.3556dp + 671.1944dp + 673.0333dp + 674.8722dp + 676.7111dp + 678.5500dp + 680.3889dp + 682.2278dp + 684.0667dp + 685.9056dp + 687.7444dp + 689.5833dp + 691.4222dp + 693.2611dp + 695.1000dp + 696.9389dp + 698.7778dp + 700.6167dp + 702.4556dp + 704.2944dp + 706.1333dp + 707.9722dp + 709.8111dp + 711.6500dp + 713.4889dp + 715.3278dp + 717.1667dp + 719.0056dp + 720.8444dp + 722.6833dp + 724.5222dp + 726.3611dp + 728.2000dp + 730.0389dp + 731.8778dp + 733.7167dp + 735.5556dp + 737.3944dp + 739.2333dp + 741.0722dp + 742.9111dp + 744.7500dp + 746.5889dp + 748.4278dp + 750.2667dp + 752.1056dp + 753.9444dp + 755.7833dp + 757.6222dp + 759.4611dp + 761.3000dp + 763.1389dp + 764.9778dp + 766.8167dp + 768.6556dp + 770.4944dp + 772.3333dp + 774.1722dp + 776.0111dp + 777.8500dp + 779.6889dp + 781.5278dp + 783.3667dp + 785.2056dp + 787.0444dp + 788.8833dp + 790.7222dp + 792.5611dp + 794.4000dp + 796.2389dp + 798.0778dp + 799.9167dp + 801.7556dp + 803.5944dp + 805.4333dp + 807.2722dp + 809.1111dp + 810.9500dp + 812.7889dp + 814.6278dp + 816.4667dp + 818.3056dp + 820.1444dp + 821.9833dp + 823.8222dp + 825.6611dp + 827.5000dp + 829.3389dp + 831.1778dp + 833.0167dp + 834.8556dp + 836.6944dp + 838.5333dp + 840.3722dp + 842.2111dp + 844.0500dp + 845.8889dp + 847.7278dp + 849.5667dp + 851.4056dp + 853.2444dp + 855.0833dp + 856.9222dp + 858.7611dp + 860.6000dp + 862.4389dp + 864.2778dp + 866.1167dp + 867.9556dp + 869.7944dp + 871.6333dp + 873.4722dp + 875.3111dp + 877.1500dp + 878.9889dp + 880.8278dp + 882.6667dp + 884.5056dp + 886.3444dp + 888.1833dp + 890.0222dp + 891.8611dp + 893.7000dp + 895.5389dp + 897.3778dp + 899.2167dp + 901.0556dp + 902.8944dp + 904.7333dp + 906.5722dp + 908.4111dp + 910.2500dp + 912.0889dp + 913.9278dp + 915.7667dp + 917.6056dp + 919.4444dp + 1103.3333dp + 1176.8889dp + 1324.0000dp + 1.8389sp + 3.6778sp + 5.5167sp + 7.3556sp + 9.1944sp + 11.0333sp + 12.8722sp + 14.7111sp + 16.5500sp + 18.3889sp + 20.2278sp + 22.0667sp + 23.9056sp + 25.7444sp + 27.5833sp + 29.4222sp + 31.2611sp + 33.1000sp + 34.9389sp + 36.7778sp + 38.6167sp + 40.4556sp + 42.2944sp + 44.1333sp + 45.9722sp + 47.8111sp + 49.6500sp + 51.4889sp + 53.3278sp + 55.1667sp + 57.0056sp + 58.8444sp + 60.6833sp + 62.5222sp + 64.3611sp + 66.2000sp + 68.0389sp + 69.8778sp + 71.7167sp + 73.5556sp + 75.3944sp + 77.2333sp + 79.0722sp + 80.9111sp + 82.7500sp + 84.5889sp + 86.4278sp + 88.2667sp + 90.1056sp + 91.9444sp + diff --git a/app/src/main/res/values-sw720dp/dimens.xml b/app/src/main/res/values-sw720dp/dimens.xml new file mode 100644 index 0000000..4857e57 --- /dev/null +++ b/app/src/main/res/values-sw720dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 2.0000dp + 10.0000dp + 80.0000dp + -120.0000dp + -60.0000dp + -40.0000dp + -24.0000dp + -20.0000dp + -16.0000dp + -10.0000dp + -4.0000dp + -2.0000dp + 0.0000dp + 0.2000dp + 1.0000dp + 2.0000dp + 3.0000dp + 4.0000dp + 5.0000dp + 6.0000dp + 7.0000dp + 8.0000dp + 9.0000dp + 10.0000dp + 12.0000dp + 14.0000dp + 16.0000dp + 18.0000dp + 20.0000dp + 22.0000dp + 24.0000dp + 26.0000dp + 28.0000dp + 30.0000dp + 32.0000dp + 34.0000dp + 36.0000dp + 38.0000dp + 40.0000dp + 42.0000dp + 44.0000dp + 46.0000dp + 48.0000dp + 50.0000dp + 52.0000dp + 54.0000dp + 56.0000dp + 58.0000dp + 60.0000dp + 62.0000dp + 64.0000dp + 66.0000dp + 68.0000dp + 70.0000dp + 72.0000dp + 74.0000dp + 76.0000dp + 78.0000dp + 80.0000dp + 82.0000dp + 84.0000dp + 86.0000dp + 88.0000dp + 90.0000dp + 92.0000dp + 94.0000dp + 96.0000dp + 98.0000dp + 100.0000dp + 102.0000dp + 104.0000dp + 106.0000dp + 108.0000dp + 110.0000dp + 112.0000dp + 114.0000dp + 116.0000dp + 118.0000dp + 120.0000dp + 122.0000dp + 124.0000dp + 126.0000dp + 128.0000dp + 130.0000dp + 132.0000dp + 134.0000dp + 136.0000dp + 138.0000dp + 140.0000dp + 142.0000dp + 144.0000dp + 146.0000dp + 148.0000dp + 150.0000dp + 152.0000dp + 154.0000dp + 156.0000dp + 158.0000dp + 160.0000dp + 162.0000dp + 164.0000dp + 166.0000dp + 168.0000dp + 170.0000dp + 172.0000dp + 174.0000dp + 176.0000dp + 178.0000dp + 180.0000dp + 182.0000dp + 184.0000dp + 186.0000dp + 188.0000dp + 190.0000dp + 192.0000dp + 194.0000dp + 196.0000dp + 198.0000dp + 200.0000dp + 202.0000dp + 204.0000dp + 206.0000dp + 208.0000dp + 210.0000dp + 212.0000dp + 214.0000dp + 216.0000dp + 218.0000dp + 220.0000dp + 222.0000dp + 224.0000dp + 226.0000dp + 228.0000dp + 230.0000dp + 232.0000dp + 234.0000dp + 236.0000dp + 238.0000dp + 240.0000dp + 242.0000dp + 244.0000dp + 246.0000dp + 248.0000dp + 250.0000dp + 252.0000dp + 254.0000dp + 256.0000dp + 258.0000dp + 260.0000dp + 262.0000dp + 264.0000dp + 266.0000dp + 268.0000dp + 270.0000dp + 272.0000dp + 274.0000dp + 276.0000dp + 278.0000dp + 280.0000dp + 282.0000dp + 284.0000dp + 286.0000dp + 288.0000dp + 290.0000dp + 292.0000dp + 294.0000dp + 296.0000dp + 298.0000dp + 300.0000dp + 302.0000dp + 304.0000dp + 306.0000dp + 308.0000dp + 310.0000dp + 312.0000dp + 314.0000dp + 316.0000dp + 318.0000dp + 320.0000dp + 322.0000dp + 324.0000dp + 326.0000dp + 328.0000dp + 330.0000dp + 332.0000dp + 334.0000dp + 336.0000dp + 338.0000dp + 340.0000dp + 342.0000dp + 344.0000dp + 346.0000dp + 348.0000dp + 350.0000dp + 352.0000dp + 354.0000dp + 356.0000dp + 358.0000dp + 360.0000dp + 362.0000dp + 364.0000dp + 366.0000dp + 368.0000dp + 370.0000dp + 372.0000dp + 374.0000dp + 376.0000dp + 378.0000dp + 380.0000dp + 382.0000dp + 384.0000dp + 386.0000dp + 388.0000dp + 390.0000dp + 392.0000dp + 394.0000dp + 396.0000dp + 398.0000dp + 400.0000dp + 402.0000dp + 404.0000dp + 406.0000dp + 408.0000dp + 410.0000dp + 412.0000dp + 414.0000dp + 416.0000dp + 418.0000dp + 420.0000dp + 422.0000dp + 424.0000dp + 426.0000dp + 428.0000dp + 430.0000dp + 432.0000dp + 434.0000dp + 436.0000dp + 438.0000dp + 440.0000dp + 442.0000dp + 444.0000dp + 446.0000dp + 448.0000dp + 450.0000dp + 452.0000dp + 454.0000dp + 456.0000dp + 458.0000dp + 460.0000dp + 462.0000dp + 464.0000dp + 466.0000dp + 468.0000dp + 470.0000dp + 472.0000dp + 474.0000dp + 476.0000dp + 478.0000dp + 480.0000dp + 482.0000dp + 484.0000dp + 486.0000dp + 488.0000dp + 490.0000dp + 492.0000dp + 494.0000dp + 496.0000dp + 498.0000dp + 500.0000dp + 502.0000dp + 504.0000dp + 506.0000dp + 508.0000dp + 510.0000dp + 512.0000dp + 514.0000dp + 516.0000dp + 518.0000dp + 520.0000dp + 522.0000dp + 524.0000dp + 526.0000dp + 528.0000dp + 530.0000dp + 532.0000dp + 534.0000dp + 536.0000dp + 538.0000dp + 540.0000dp + 542.0000dp + 544.0000dp + 546.0000dp + 548.0000dp + 550.0000dp + 552.0000dp + 554.0000dp + 556.0000dp + 558.0000dp + 560.0000dp + 562.0000dp + 564.0000dp + 566.0000dp + 568.0000dp + 570.0000dp + 572.0000dp + 574.0000dp + 576.0000dp + 578.0000dp + 580.0000dp + 582.0000dp + 584.0000dp + 586.0000dp + 588.0000dp + 590.0000dp + 592.0000dp + 594.0000dp + 596.0000dp + 598.0000dp + 600.0000dp + 602.0000dp + 604.0000dp + 606.0000dp + 608.0000dp + 610.0000dp + 612.0000dp + 614.0000dp + 616.0000dp + 618.0000dp + 620.0000dp + 622.0000dp + 624.0000dp + 626.0000dp + 628.0000dp + 630.0000dp + 632.0000dp + 634.0000dp + 636.0000dp + 638.0000dp + 640.0000dp + 642.0000dp + 644.0000dp + 646.0000dp + 648.0000dp + 650.0000dp + 652.0000dp + 654.0000dp + 656.0000dp + 658.0000dp + 660.0000dp + 662.0000dp + 664.0000dp + 666.0000dp + 668.0000dp + 670.0000dp + 672.0000dp + 674.0000dp + 676.0000dp + 678.0000dp + 680.0000dp + 682.0000dp + 684.0000dp + 686.0000dp + 688.0000dp + 690.0000dp + 692.0000dp + 694.0000dp + 696.0000dp + 698.0000dp + 700.0000dp + 702.0000dp + 704.0000dp + 706.0000dp + 708.0000dp + 710.0000dp + 712.0000dp + 714.0000dp + 716.0000dp + 718.0000dp + 720.0000dp + 722.0000dp + 724.0000dp + 726.0000dp + 728.0000dp + 730.0000dp + 732.0000dp + 734.0000dp + 736.0000dp + 738.0000dp + 740.0000dp + 742.0000dp + 744.0000dp + 746.0000dp + 748.0000dp + 750.0000dp + 752.0000dp + 754.0000dp + 756.0000dp + 758.0000dp + 760.0000dp + 762.0000dp + 764.0000dp + 766.0000dp + 768.0000dp + 770.0000dp + 772.0000dp + 774.0000dp + 776.0000dp + 778.0000dp + 780.0000dp + 782.0000dp + 784.0000dp + 786.0000dp + 788.0000dp + 790.0000dp + 792.0000dp + 794.0000dp + 796.0000dp + 798.0000dp + 800.0000dp + 802.0000dp + 804.0000dp + 806.0000dp + 808.0000dp + 810.0000dp + 812.0000dp + 814.0000dp + 816.0000dp + 818.0000dp + 820.0000dp + 822.0000dp + 824.0000dp + 826.0000dp + 828.0000dp + 830.0000dp + 832.0000dp + 834.0000dp + 836.0000dp + 838.0000dp + 840.0000dp + 842.0000dp + 844.0000dp + 846.0000dp + 848.0000dp + 850.0000dp + 852.0000dp + 854.0000dp + 856.0000dp + 858.0000dp + 860.0000dp + 862.0000dp + 864.0000dp + 866.0000dp + 868.0000dp + 870.0000dp + 872.0000dp + 874.0000dp + 876.0000dp + 878.0000dp + 880.0000dp + 882.0000dp + 884.0000dp + 886.0000dp + 888.0000dp + 890.0000dp + 892.0000dp + 894.0000dp + 896.0000dp + 898.0000dp + 900.0000dp + 902.0000dp + 904.0000dp + 906.0000dp + 908.0000dp + 910.0000dp + 912.0000dp + 914.0000dp + 916.0000dp + 918.0000dp + 920.0000dp + 922.0000dp + 924.0000dp + 926.0000dp + 928.0000dp + 930.0000dp + 932.0000dp + 934.0000dp + 936.0000dp + 938.0000dp + 940.0000dp + 942.0000dp + 944.0000dp + 946.0000dp + 948.0000dp + 950.0000dp + 952.0000dp + 954.0000dp + 956.0000dp + 958.0000dp + 960.0000dp + 962.0000dp + 964.0000dp + 966.0000dp + 968.0000dp + 970.0000dp + 972.0000dp + 974.0000dp + 976.0000dp + 978.0000dp + 980.0000dp + 982.0000dp + 984.0000dp + 986.0000dp + 988.0000dp + 990.0000dp + 992.0000dp + 994.0000dp + 996.0000dp + 998.0000dp + 1000.0000dp + 1200.0000dp + 1280.0000dp + 1440.0000dp + 2.0000sp + 4.0000sp + 6.0000sp + 8.0000sp + 10.0000sp + 12.0000sp + 14.0000sp + 16.0000sp + 18.0000sp + 20.0000sp + 22.0000sp + 24.0000sp + 26.0000sp + 28.0000sp + 30.0000sp + 32.0000sp + 34.0000sp + 36.0000sp + 38.0000sp + 40.0000sp + 42.0000sp + 44.0000sp + 46.0000sp + 48.0000sp + 50.0000sp + 52.0000sp + 54.0000sp + 56.0000sp + 58.0000sp + 60.0000sp + 62.0000sp + 64.0000sp + 66.0000sp + 68.0000sp + 70.0000sp + 72.0000sp + 74.0000sp + 76.0000sp + 78.0000sp + 80.0000sp + 82.0000sp + 84.0000sp + 86.0000sp + 88.0000sp + 90.0000sp + 92.0000sp + 94.0000sp + 96.0000sp + 98.0000sp + 100.0000sp + diff --git a/app/src/main/res/values-sw768dp/dimens.xml b/app/src/main/res/values-sw768dp/dimens.xml new file mode 100644 index 0000000..c12d98b --- /dev/null +++ b/app/src/main/res/values-sw768dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 2.1333dp + 10.6667dp + 85.3333dp + -128.0000dp + -64.0000dp + -42.6667dp + -25.6000dp + -21.3333dp + -17.0667dp + -10.6667dp + -4.2667dp + -2.1333dp + 0.0000dp + 0.2133dp + 1.0667dp + 2.1333dp + 3.2000dp + 4.2667dp + 5.3333dp + 6.4000dp + 7.4667dp + 8.5333dp + 9.6000dp + 10.6667dp + 12.8000dp + 14.9333dp + 17.0667dp + 19.2000dp + 21.3333dp + 23.4667dp + 25.6000dp + 27.7333dp + 29.8667dp + 32.0000dp + 34.1333dp + 36.2667dp + 38.4000dp + 40.5333dp + 42.6667dp + 44.8000dp + 46.9333dp + 49.0667dp + 51.2000dp + 53.3333dp + 55.4667dp + 57.6000dp + 59.7333dp + 61.8667dp + 64.0000dp + 66.1333dp + 68.2667dp + 70.4000dp + 72.5333dp + 74.6667dp + 76.8000dp + 78.9333dp + 81.0667dp + 83.2000dp + 85.3333dp + 87.4667dp + 89.6000dp + 91.7333dp + 93.8667dp + 96.0000dp + 98.1333dp + 100.2667dp + 102.4000dp + 104.5333dp + 106.6667dp + 108.8000dp + 110.9333dp + 113.0667dp + 115.2000dp + 117.3333dp + 119.4667dp + 121.6000dp + 123.7333dp + 125.8667dp + 128.0000dp + 130.1333dp + 132.2667dp + 134.4000dp + 136.5333dp + 138.6667dp + 140.8000dp + 142.9333dp + 145.0667dp + 147.2000dp + 149.3333dp + 151.4667dp + 153.6000dp + 155.7333dp + 157.8667dp + 160.0000dp + 162.1333dp + 164.2667dp + 166.4000dp + 168.5333dp + 170.6667dp + 172.8000dp + 174.9333dp + 177.0667dp + 179.2000dp + 181.3333dp + 183.4667dp + 185.6000dp + 187.7333dp + 189.8667dp + 192.0000dp + 194.1333dp + 196.2667dp + 198.4000dp + 200.5333dp + 202.6667dp + 204.8000dp + 206.9333dp + 209.0667dp + 211.2000dp + 213.3333dp + 215.4667dp + 217.6000dp + 219.7333dp + 221.8667dp + 224.0000dp + 226.1333dp + 228.2667dp + 230.4000dp + 232.5333dp + 234.6667dp + 236.8000dp + 238.9333dp + 241.0667dp + 243.2000dp + 245.3333dp + 247.4667dp + 249.6000dp + 251.7333dp + 253.8667dp + 256.0000dp + 258.1333dp + 260.2667dp + 262.4000dp + 264.5333dp + 266.6667dp + 268.8000dp + 270.9333dp + 273.0667dp + 275.2000dp + 277.3333dp + 279.4667dp + 281.6000dp + 283.7333dp + 285.8667dp + 288.0000dp + 290.1333dp + 292.2667dp + 294.4000dp + 296.5333dp + 298.6667dp + 300.8000dp + 302.9333dp + 305.0667dp + 307.2000dp + 309.3333dp + 311.4667dp + 313.6000dp + 315.7333dp + 317.8667dp + 320.0000dp + 322.1333dp + 324.2667dp + 326.4000dp + 328.5333dp + 330.6667dp + 332.8000dp + 334.9333dp + 337.0667dp + 339.2000dp + 341.3333dp + 343.4667dp + 345.6000dp + 347.7333dp + 349.8667dp + 352.0000dp + 354.1333dp + 356.2667dp + 358.4000dp + 360.5333dp + 362.6667dp + 364.8000dp + 366.9333dp + 369.0667dp + 371.2000dp + 373.3333dp + 375.4667dp + 377.6000dp + 379.7333dp + 381.8667dp + 384.0000dp + 386.1333dp + 388.2667dp + 390.4000dp + 392.5333dp + 394.6667dp + 396.8000dp + 398.9333dp + 401.0667dp + 403.2000dp + 405.3333dp + 407.4667dp + 409.6000dp + 411.7333dp + 413.8667dp + 416.0000dp + 418.1333dp + 420.2667dp + 422.4000dp + 424.5333dp + 426.6667dp + 428.8000dp + 430.9333dp + 433.0667dp + 435.2000dp + 437.3333dp + 439.4667dp + 441.6000dp + 443.7333dp + 445.8667dp + 448.0000dp + 450.1333dp + 452.2667dp + 454.4000dp + 456.5333dp + 458.6667dp + 460.8000dp + 462.9333dp + 465.0667dp + 467.2000dp + 469.3333dp + 471.4667dp + 473.6000dp + 475.7333dp + 477.8667dp + 480.0000dp + 482.1333dp + 484.2667dp + 486.4000dp + 488.5333dp + 490.6667dp + 492.8000dp + 494.9333dp + 497.0667dp + 499.2000dp + 501.3333dp + 503.4667dp + 505.6000dp + 507.7333dp + 509.8667dp + 512.0000dp + 514.1333dp + 516.2667dp + 518.4000dp + 520.5333dp + 522.6667dp + 524.8000dp + 526.9333dp + 529.0667dp + 531.2000dp + 533.3333dp + 535.4667dp + 537.6000dp + 539.7333dp + 541.8667dp + 544.0000dp + 546.1333dp + 548.2667dp + 550.4000dp + 552.5333dp + 554.6667dp + 556.8000dp + 558.9333dp + 561.0667dp + 563.2000dp + 565.3333dp + 567.4667dp + 569.6000dp + 571.7333dp + 573.8667dp + 576.0000dp + 578.1333dp + 580.2667dp + 582.4000dp + 584.5333dp + 586.6667dp + 588.8000dp + 590.9333dp + 593.0667dp + 595.2000dp + 597.3333dp + 599.4667dp + 601.6000dp + 603.7333dp + 605.8667dp + 608.0000dp + 610.1333dp + 612.2667dp + 614.4000dp + 616.5333dp + 618.6667dp + 620.8000dp + 622.9333dp + 625.0667dp + 627.2000dp + 629.3333dp + 631.4667dp + 633.6000dp + 635.7333dp + 637.8667dp + 640.0000dp + 642.1333dp + 644.2667dp + 646.4000dp + 648.5333dp + 650.6667dp + 652.8000dp + 654.9333dp + 657.0667dp + 659.2000dp + 661.3333dp + 663.4667dp + 665.6000dp + 667.7333dp + 669.8667dp + 672.0000dp + 674.1333dp + 676.2667dp + 678.4000dp + 680.5333dp + 682.6667dp + 684.8000dp + 686.9333dp + 689.0667dp + 691.2000dp + 693.3333dp + 695.4667dp + 697.6000dp + 699.7333dp + 701.8667dp + 704.0000dp + 706.1333dp + 708.2667dp + 710.4000dp + 712.5333dp + 714.6667dp + 716.8000dp + 718.9333dp + 721.0667dp + 723.2000dp + 725.3333dp + 727.4667dp + 729.6000dp + 731.7333dp + 733.8667dp + 736.0000dp + 738.1333dp + 740.2667dp + 742.4000dp + 744.5333dp + 746.6667dp + 748.8000dp + 750.9333dp + 753.0667dp + 755.2000dp + 757.3333dp + 759.4667dp + 761.6000dp + 763.7333dp + 765.8667dp + 768.0000dp + 770.1333dp + 772.2667dp + 774.4000dp + 776.5333dp + 778.6667dp + 780.8000dp + 782.9333dp + 785.0667dp + 787.2000dp + 789.3333dp + 791.4667dp + 793.6000dp + 795.7333dp + 797.8667dp + 800.0000dp + 802.1333dp + 804.2667dp + 806.4000dp + 808.5333dp + 810.6667dp + 812.8000dp + 814.9333dp + 817.0667dp + 819.2000dp + 821.3333dp + 823.4667dp + 825.6000dp + 827.7333dp + 829.8667dp + 832.0000dp + 834.1333dp + 836.2667dp + 838.4000dp + 840.5333dp + 842.6667dp + 844.8000dp + 846.9333dp + 849.0667dp + 851.2000dp + 853.3333dp + 855.4667dp + 857.6000dp + 859.7333dp + 861.8667dp + 864.0000dp + 866.1333dp + 868.2667dp + 870.4000dp + 872.5333dp + 874.6667dp + 876.8000dp + 878.9333dp + 881.0667dp + 883.2000dp + 885.3333dp + 887.4667dp + 889.6000dp + 891.7333dp + 893.8667dp + 896.0000dp + 898.1333dp + 900.2667dp + 902.4000dp + 904.5333dp + 906.6667dp + 908.8000dp + 910.9333dp + 913.0667dp + 915.2000dp + 917.3333dp + 919.4667dp + 921.6000dp + 923.7333dp + 925.8667dp + 928.0000dp + 930.1333dp + 932.2667dp + 934.4000dp + 936.5333dp + 938.6667dp + 940.8000dp + 942.9333dp + 945.0667dp + 947.2000dp + 949.3333dp + 951.4667dp + 953.6000dp + 955.7333dp + 957.8667dp + 960.0000dp + 962.1333dp + 964.2667dp + 966.4000dp + 968.5333dp + 970.6667dp + 972.8000dp + 974.9333dp + 977.0667dp + 979.2000dp + 981.3333dp + 983.4667dp + 985.6000dp + 987.7333dp + 989.8667dp + 992.0000dp + 994.1333dp + 996.2667dp + 998.4000dp + 1000.5333dp + 1002.6667dp + 1004.8000dp + 1006.9333dp + 1009.0667dp + 1011.2000dp + 1013.3333dp + 1015.4667dp + 1017.6000dp + 1019.7333dp + 1021.8667dp + 1024.0000dp + 1026.1333dp + 1028.2667dp + 1030.4000dp + 1032.5333dp + 1034.6667dp + 1036.8000dp + 1038.9333dp + 1041.0667dp + 1043.2000dp + 1045.3333dp + 1047.4667dp + 1049.6000dp + 1051.7333dp + 1053.8667dp + 1056.0000dp + 1058.1333dp + 1060.2667dp + 1062.4000dp + 1064.5333dp + 1066.6667dp + 1280.0000dp + 1365.3333dp + 1536.0000dp + 2.1333sp + 4.2667sp + 6.4000sp + 8.5333sp + 10.6667sp + 12.8000sp + 14.9333sp + 17.0667sp + 19.2000sp + 21.3333sp + 23.4667sp + 25.6000sp + 27.7333sp + 29.8667sp + 32.0000sp + 34.1333sp + 36.2667sp + 38.4000sp + 40.5333sp + 42.6667sp + 44.8000sp + 46.9333sp + 49.0667sp + 51.2000sp + 53.3333sp + 55.4667sp + 57.6000sp + 59.7333sp + 61.8667sp + 64.0000sp + 66.1333sp + 68.2667sp + 70.4000sp + 72.5333sp + 74.6667sp + 76.8000sp + 78.9333sp + 81.0667sp + 83.2000sp + 85.3333sp + 87.4667sp + 89.6000sp + 91.7333sp + 93.8667sp + 96.0000sp + 98.1333sp + 100.2667sp + 102.4000sp + 104.5333sp + 106.6667sp + diff --git a/app/src/main/res/values-sw800dp/dimens.xml b/app/src/main/res/values-sw800dp/dimens.xml new file mode 100644 index 0000000..9f4b289 --- /dev/null +++ b/app/src/main/res/values-sw800dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 2.2222dp + 11.1111dp + 88.8889dp + -133.3333dp + -66.6667dp + -44.4444dp + -26.6667dp + -22.2222dp + -17.7778dp + -11.1111dp + -4.4444dp + -2.2222dp + 0.0000dp + 0.2222dp + 1.1111dp + 2.2222dp + 3.3333dp + 4.4444dp + 5.5556dp + 6.6667dp + 7.7778dp + 8.8889dp + 10.0000dp + 11.1111dp + 13.3333dp + 15.5556dp + 17.7778dp + 20.0000dp + 22.2222dp + 24.4444dp + 26.6667dp + 28.8889dp + 31.1111dp + 33.3333dp + 35.5556dp + 37.7778dp + 40.0000dp + 42.2222dp + 44.4444dp + 46.6667dp + 48.8889dp + 51.1111dp + 53.3333dp + 55.5556dp + 57.7778dp + 60.0000dp + 62.2222dp + 64.4444dp + 66.6667dp + 68.8889dp + 71.1111dp + 73.3333dp + 75.5556dp + 77.7778dp + 80.0000dp + 82.2222dp + 84.4444dp + 86.6667dp + 88.8889dp + 91.1111dp + 93.3333dp + 95.5556dp + 97.7778dp + 100.0000dp + 102.2222dp + 104.4444dp + 106.6667dp + 108.8889dp + 111.1111dp + 113.3333dp + 115.5556dp + 117.7778dp + 120.0000dp + 122.2222dp + 124.4444dp + 126.6667dp + 128.8889dp + 131.1111dp + 133.3333dp + 135.5556dp + 137.7778dp + 140.0000dp + 142.2222dp + 144.4444dp + 146.6667dp + 148.8889dp + 151.1111dp + 153.3333dp + 155.5556dp + 157.7778dp + 160.0000dp + 162.2222dp + 164.4444dp + 166.6667dp + 168.8889dp + 171.1111dp + 173.3333dp + 175.5556dp + 177.7778dp + 180.0000dp + 182.2222dp + 184.4444dp + 186.6667dp + 188.8889dp + 191.1111dp + 193.3333dp + 195.5556dp + 197.7778dp + 200.0000dp + 202.2222dp + 204.4444dp + 206.6667dp + 208.8889dp + 211.1111dp + 213.3333dp + 215.5556dp + 217.7778dp + 220.0000dp + 222.2222dp + 224.4444dp + 226.6667dp + 228.8889dp + 231.1111dp + 233.3333dp + 235.5556dp + 237.7778dp + 240.0000dp + 242.2222dp + 244.4444dp + 246.6667dp + 248.8889dp + 251.1111dp + 253.3333dp + 255.5556dp + 257.7778dp + 260.0000dp + 262.2222dp + 264.4444dp + 266.6667dp + 268.8889dp + 271.1111dp + 273.3333dp + 275.5556dp + 277.7778dp + 280.0000dp + 282.2222dp + 284.4444dp + 286.6667dp + 288.8889dp + 291.1111dp + 293.3333dp + 295.5556dp + 297.7778dp + 300.0000dp + 302.2222dp + 304.4444dp + 306.6667dp + 308.8889dp + 311.1111dp + 313.3333dp + 315.5556dp + 317.7778dp + 320.0000dp + 322.2222dp + 324.4444dp + 326.6667dp + 328.8889dp + 331.1111dp + 333.3333dp + 335.5556dp + 337.7778dp + 340.0000dp + 342.2222dp + 344.4444dp + 346.6667dp + 348.8889dp + 351.1111dp + 353.3333dp + 355.5556dp + 357.7778dp + 360.0000dp + 362.2222dp + 364.4444dp + 366.6667dp + 368.8889dp + 371.1111dp + 373.3333dp + 375.5556dp + 377.7778dp + 380.0000dp + 382.2222dp + 384.4444dp + 386.6667dp + 388.8889dp + 391.1111dp + 393.3333dp + 395.5556dp + 397.7778dp + 400.0000dp + 402.2222dp + 404.4444dp + 406.6667dp + 408.8889dp + 411.1111dp + 413.3333dp + 415.5556dp + 417.7778dp + 420.0000dp + 422.2222dp + 424.4444dp + 426.6667dp + 428.8889dp + 431.1111dp + 433.3333dp + 435.5556dp + 437.7778dp + 440.0000dp + 442.2222dp + 444.4444dp + 446.6667dp + 448.8889dp + 451.1111dp + 453.3333dp + 455.5556dp + 457.7778dp + 460.0000dp + 462.2222dp + 464.4444dp + 466.6667dp + 468.8889dp + 471.1111dp + 473.3333dp + 475.5556dp + 477.7778dp + 480.0000dp + 482.2222dp + 484.4444dp + 486.6667dp + 488.8889dp + 491.1111dp + 493.3333dp + 495.5556dp + 497.7778dp + 500.0000dp + 502.2222dp + 504.4444dp + 506.6667dp + 508.8889dp + 511.1111dp + 513.3333dp + 515.5556dp + 517.7778dp + 520.0000dp + 522.2222dp + 524.4444dp + 526.6667dp + 528.8889dp + 531.1111dp + 533.3333dp + 535.5556dp + 537.7778dp + 540.0000dp + 542.2222dp + 544.4444dp + 546.6667dp + 548.8889dp + 551.1111dp + 553.3333dp + 555.5556dp + 557.7778dp + 560.0000dp + 562.2222dp + 564.4444dp + 566.6667dp + 568.8889dp + 571.1111dp + 573.3333dp + 575.5556dp + 577.7778dp + 580.0000dp + 582.2222dp + 584.4444dp + 586.6667dp + 588.8889dp + 591.1111dp + 593.3333dp + 595.5556dp + 597.7778dp + 600.0000dp + 602.2222dp + 604.4444dp + 606.6667dp + 608.8889dp + 611.1111dp + 613.3333dp + 615.5556dp + 617.7778dp + 620.0000dp + 622.2222dp + 624.4444dp + 626.6667dp + 628.8889dp + 631.1111dp + 633.3333dp + 635.5556dp + 637.7778dp + 640.0000dp + 642.2222dp + 644.4444dp + 646.6667dp + 648.8889dp + 651.1111dp + 653.3333dp + 655.5556dp + 657.7778dp + 660.0000dp + 662.2222dp + 664.4444dp + 666.6667dp + 668.8889dp + 671.1111dp + 673.3333dp + 675.5556dp + 677.7778dp + 680.0000dp + 682.2222dp + 684.4444dp + 686.6667dp + 688.8889dp + 691.1111dp + 693.3333dp + 695.5556dp + 697.7778dp + 700.0000dp + 702.2222dp + 704.4444dp + 706.6667dp + 708.8889dp + 711.1111dp + 713.3333dp + 715.5556dp + 717.7778dp + 720.0000dp + 722.2222dp + 724.4444dp + 726.6667dp + 728.8889dp + 731.1111dp + 733.3333dp + 735.5556dp + 737.7778dp + 740.0000dp + 742.2222dp + 744.4444dp + 746.6667dp + 748.8889dp + 751.1111dp + 753.3333dp + 755.5556dp + 757.7778dp + 760.0000dp + 762.2222dp + 764.4444dp + 766.6667dp + 768.8889dp + 771.1111dp + 773.3333dp + 775.5556dp + 777.7778dp + 780.0000dp + 782.2222dp + 784.4444dp + 786.6667dp + 788.8889dp + 791.1111dp + 793.3333dp + 795.5556dp + 797.7778dp + 800.0000dp + 802.2222dp + 804.4444dp + 806.6667dp + 808.8889dp + 811.1111dp + 813.3333dp + 815.5556dp + 817.7778dp + 820.0000dp + 822.2222dp + 824.4444dp + 826.6667dp + 828.8889dp + 831.1111dp + 833.3333dp + 835.5556dp + 837.7778dp + 840.0000dp + 842.2222dp + 844.4444dp + 846.6667dp + 848.8889dp + 851.1111dp + 853.3333dp + 855.5556dp + 857.7778dp + 860.0000dp + 862.2222dp + 864.4444dp + 866.6667dp + 868.8889dp + 871.1111dp + 873.3333dp + 875.5556dp + 877.7778dp + 880.0000dp + 882.2222dp + 884.4444dp + 886.6667dp + 888.8889dp + 891.1111dp + 893.3333dp + 895.5556dp + 897.7778dp + 900.0000dp + 902.2222dp + 904.4444dp + 906.6667dp + 908.8889dp + 911.1111dp + 913.3333dp + 915.5556dp + 917.7778dp + 920.0000dp + 922.2222dp + 924.4444dp + 926.6667dp + 928.8889dp + 931.1111dp + 933.3333dp + 935.5556dp + 937.7778dp + 940.0000dp + 942.2222dp + 944.4444dp + 946.6667dp + 948.8889dp + 951.1111dp + 953.3333dp + 955.5556dp + 957.7778dp + 960.0000dp + 962.2222dp + 964.4444dp + 966.6667dp + 968.8889dp + 971.1111dp + 973.3333dp + 975.5556dp + 977.7778dp + 980.0000dp + 982.2222dp + 984.4444dp + 986.6667dp + 988.8889dp + 991.1111dp + 993.3333dp + 995.5556dp + 997.7778dp + 1000.0000dp + 1002.2222dp + 1004.4444dp + 1006.6667dp + 1008.8889dp + 1011.1111dp + 1013.3333dp + 1015.5556dp + 1017.7778dp + 1020.0000dp + 1022.2222dp + 1024.4444dp + 1026.6667dp + 1028.8889dp + 1031.1111dp + 1033.3333dp + 1035.5556dp + 1037.7778dp + 1040.0000dp + 1042.2222dp + 1044.4444dp + 1046.6667dp + 1048.8889dp + 1051.1111dp + 1053.3333dp + 1055.5556dp + 1057.7778dp + 1060.0000dp + 1062.2222dp + 1064.4444dp + 1066.6667dp + 1068.8889dp + 1071.1111dp + 1073.3333dp + 1075.5556dp + 1077.7778dp + 1080.0000dp + 1082.2222dp + 1084.4444dp + 1086.6667dp + 1088.8889dp + 1091.1111dp + 1093.3333dp + 1095.5556dp + 1097.7778dp + 1100.0000dp + 1102.2222dp + 1104.4444dp + 1106.6667dp + 1108.8889dp + 1111.1111dp + 1333.3333dp + 1422.2222dp + 1600.0000dp + 2.2222sp + 4.4444sp + 6.6667sp + 8.8889sp + 11.1111sp + 13.3333sp + 15.5556sp + 17.7778sp + 20.0000sp + 22.2222sp + 24.4444sp + 26.6667sp + 28.8889sp + 31.1111sp + 33.3333sp + 35.5556sp + 37.7778sp + 40.0000sp + 42.2222sp + 44.4444sp + 46.6667sp + 48.8889sp + 51.1111sp + 53.3333sp + 55.5556sp + 57.7778sp + 60.0000sp + 62.2222sp + 64.4444sp + 66.6667sp + 68.8889sp + 71.1111sp + 73.3333sp + 75.5556sp + 77.7778sp + 80.0000sp + 82.2222sp + 84.4444sp + 86.6667sp + 88.8889sp + 91.1111sp + 93.3333sp + 95.5556sp + 97.7778sp + 100.0000sp + 102.2222sp + 104.4444sp + 106.6667sp + 108.8889sp + 111.1111sp + diff --git a/app/src/main/res/values-sw811dp/dimens.xml b/app/src/main/res/values-sw811dp/dimens.xml new file mode 100644 index 0000000..f65ab86 --- /dev/null +++ b/app/src/main/res/values-sw811dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 2.2528dp + 11.2639dp + 90.1111dp + -135.1667dp + -67.5833dp + -45.0556dp + -27.0333dp + -22.5278dp + -18.0222dp + -11.2639dp + -4.5056dp + -2.2528dp + 0.0000dp + 0.2253dp + 1.1264dp + 2.2528dp + 3.3792dp + 4.5056dp + 5.6319dp + 6.7583dp + 7.8847dp + 9.0111dp + 10.1375dp + 11.2639dp + 13.5167dp + 15.7694dp + 18.0222dp + 20.2750dp + 22.5278dp + 24.7806dp + 27.0333dp + 29.2861dp + 31.5389dp + 33.7917dp + 36.0444dp + 38.2972dp + 40.5500dp + 42.8028dp + 45.0556dp + 47.3083dp + 49.5611dp + 51.8139dp + 54.0667dp + 56.3194dp + 58.5722dp + 60.8250dp + 63.0778dp + 65.3306dp + 67.5833dp + 69.8361dp + 72.0889dp + 74.3417dp + 76.5944dp + 78.8472dp + 81.1000dp + 83.3528dp + 85.6056dp + 87.8583dp + 90.1111dp + 92.3639dp + 94.6167dp + 96.8694dp + 99.1222dp + 101.3750dp + 103.6278dp + 105.8806dp + 108.1333dp + 110.3861dp + 112.6389dp + 114.8917dp + 117.1444dp + 119.3972dp + 121.6500dp + 123.9028dp + 126.1556dp + 128.4083dp + 130.6611dp + 132.9139dp + 135.1667dp + 137.4194dp + 139.6722dp + 141.9250dp + 144.1778dp + 146.4306dp + 148.6833dp + 150.9361dp + 153.1889dp + 155.4417dp + 157.6944dp + 159.9472dp + 162.2000dp + 164.4528dp + 166.7056dp + 168.9583dp + 171.2111dp + 173.4639dp + 175.7167dp + 177.9694dp + 180.2222dp + 182.4750dp + 184.7278dp + 186.9806dp + 189.2333dp + 191.4861dp + 193.7389dp + 195.9917dp + 198.2444dp + 200.4972dp + 202.7500dp + 205.0028dp + 207.2556dp + 209.5083dp + 211.7611dp + 214.0139dp + 216.2667dp + 218.5194dp + 220.7722dp + 223.0250dp + 225.2778dp + 227.5306dp + 229.7833dp + 232.0361dp + 234.2889dp + 236.5417dp + 238.7944dp + 241.0472dp + 243.3000dp + 245.5528dp + 247.8056dp + 250.0583dp + 252.3111dp + 254.5639dp + 256.8167dp + 259.0694dp + 261.3222dp + 263.5750dp + 265.8278dp + 268.0806dp + 270.3333dp + 272.5861dp + 274.8389dp + 277.0917dp + 279.3444dp + 281.5972dp + 283.8500dp + 286.1028dp + 288.3556dp + 290.6083dp + 292.8611dp + 295.1139dp + 297.3667dp + 299.6194dp + 301.8722dp + 304.1250dp + 306.3778dp + 308.6306dp + 310.8833dp + 313.1361dp + 315.3889dp + 317.6417dp + 319.8944dp + 322.1472dp + 324.4000dp + 326.6528dp + 328.9056dp + 331.1583dp + 333.4111dp + 335.6639dp + 337.9167dp + 340.1694dp + 342.4222dp + 344.6750dp + 346.9278dp + 349.1806dp + 351.4333dp + 353.6861dp + 355.9389dp + 358.1917dp + 360.4444dp + 362.6972dp + 364.9500dp + 367.2028dp + 369.4556dp + 371.7083dp + 373.9611dp + 376.2139dp + 378.4667dp + 380.7194dp + 382.9722dp + 385.2250dp + 387.4778dp + 389.7306dp + 391.9833dp + 394.2361dp + 396.4889dp + 398.7417dp + 400.9944dp + 403.2472dp + 405.5000dp + 407.7528dp + 410.0056dp + 412.2583dp + 414.5111dp + 416.7639dp + 419.0167dp + 421.2694dp + 423.5222dp + 425.7750dp + 428.0278dp + 430.2806dp + 432.5333dp + 434.7861dp + 437.0389dp + 439.2917dp + 441.5444dp + 443.7972dp + 446.0500dp + 448.3028dp + 450.5556dp + 452.8083dp + 455.0611dp + 457.3139dp + 459.5667dp + 461.8194dp + 464.0722dp + 466.3250dp + 468.5778dp + 470.8306dp + 473.0833dp + 475.3361dp + 477.5889dp + 479.8417dp + 482.0944dp + 484.3472dp + 486.6000dp + 488.8528dp + 491.1056dp + 493.3583dp + 495.6111dp + 497.8639dp + 500.1167dp + 502.3694dp + 504.6222dp + 506.8750dp + 509.1278dp + 511.3806dp + 513.6333dp + 515.8861dp + 518.1389dp + 520.3917dp + 522.6444dp + 524.8972dp + 527.1500dp + 529.4028dp + 531.6556dp + 533.9083dp + 536.1611dp + 538.4139dp + 540.6667dp + 542.9194dp + 545.1722dp + 547.4250dp + 549.6778dp + 551.9306dp + 554.1833dp + 556.4361dp + 558.6889dp + 560.9417dp + 563.1944dp + 565.4472dp + 567.7000dp + 569.9528dp + 572.2056dp + 574.4583dp + 576.7111dp + 578.9639dp + 581.2167dp + 583.4694dp + 585.7222dp + 587.9750dp + 590.2278dp + 592.4806dp + 594.7333dp + 596.9861dp + 599.2389dp + 601.4917dp + 603.7444dp + 605.9972dp + 608.2500dp + 610.5028dp + 612.7556dp + 615.0083dp + 617.2611dp + 619.5139dp + 621.7667dp + 624.0194dp + 626.2722dp + 628.5250dp + 630.7778dp + 633.0306dp + 635.2833dp + 637.5361dp + 639.7889dp + 642.0417dp + 644.2944dp + 646.5472dp + 648.8000dp + 651.0528dp + 653.3056dp + 655.5583dp + 657.8111dp + 660.0639dp + 662.3167dp + 664.5694dp + 666.8222dp + 669.0750dp + 671.3278dp + 673.5806dp + 675.8333dp + 678.0861dp + 680.3389dp + 682.5917dp + 684.8444dp + 687.0972dp + 689.3500dp + 691.6028dp + 693.8556dp + 696.1083dp + 698.3611dp + 700.6139dp + 702.8667dp + 705.1194dp + 707.3722dp + 709.6250dp + 711.8778dp + 714.1306dp + 716.3833dp + 718.6361dp + 720.8889dp + 723.1417dp + 725.3944dp + 727.6472dp + 729.9000dp + 732.1528dp + 734.4056dp + 736.6583dp + 738.9111dp + 741.1639dp + 743.4167dp + 745.6694dp + 747.9222dp + 750.1750dp + 752.4278dp + 754.6806dp + 756.9333dp + 759.1861dp + 761.4389dp + 763.6917dp + 765.9444dp + 768.1972dp + 770.4500dp + 772.7028dp + 774.9556dp + 777.2083dp + 779.4611dp + 781.7139dp + 783.9667dp + 786.2194dp + 788.4722dp + 790.7250dp + 792.9778dp + 795.2306dp + 797.4833dp + 799.7361dp + 801.9889dp + 804.2417dp + 806.4944dp + 808.7472dp + 811.0000dp + 813.2528dp + 815.5056dp + 817.7583dp + 820.0111dp + 822.2639dp + 824.5167dp + 826.7694dp + 829.0222dp + 831.2750dp + 833.5278dp + 835.7806dp + 838.0333dp + 840.2861dp + 842.5389dp + 844.7917dp + 847.0444dp + 849.2972dp + 851.5500dp + 853.8028dp + 856.0556dp + 858.3083dp + 860.5611dp + 862.8139dp + 865.0667dp + 867.3194dp + 869.5722dp + 871.8250dp + 874.0778dp + 876.3306dp + 878.5833dp + 880.8361dp + 883.0889dp + 885.3417dp + 887.5944dp + 889.8472dp + 892.1000dp + 894.3528dp + 896.6056dp + 898.8583dp + 901.1111dp + 903.3639dp + 905.6167dp + 907.8694dp + 910.1222dp + 912.3750dp + 914.6278dp + 916.8806dp + 919.1333dp + 921.3861dp + 923.6389dp + 925.8917dp + 928.1444dp + 930.3972dp + 932.6500dp + 934.9028dp + 937.1556dp + 939.4083dp + 941.6611dp + 943.9139dp + 946.1667dp + 948.4194dp + 950.6722dp + 952.9250dp + 955.1778dp + 957.4306dp + 959.6833dp + 961.9361dp + 964.1889dp + 966.4417dp + 968.6944dp + 970.9472dp + 973.2000dp + 975.4528dp + 977.7056dp + 979.9583dp + 982.2111dp + 984.4639dp + 986.7167dp + 988.9694dp + 991.2222dp + 993.4750dp + 995.7278dp + 997.9806dp + 1000.2333dp + 1002.4861dp + 1004.7389dp + 1006.9917dp + 1009.2444dp + 1011.4972dp + 1013.7500dp + 1016.0028dp + 1018.2556dp + 1020.5083dp + 1022.7611dp + 1025.0139dp + 1027.2667dp + 1029.5194dp + 1031.7722dp + 1034.0250dp + 1036.2778dp + 1038.5306dp + 1040.7833dp + 1043.0361dp + 1045.2889dp + 1047.5417dp + 1049.7944dp + 1052.0472dp + 1054.3000dp + 1056.5528dp + 1058.8056dp + 1061.0583dp + 1063.3111dp + 1065.5639dp + 1067.8167dp + 1070.0694dp + 1072.3222dp + 1074.5750dp + 1076.8278dp + 1079.0806dp + 1081.3333dp + 1083.5861dp + 1085.8389dp + 1088.0917dp + 1090.3444dp + 1092.5972dp + 1094.8500dp + 1097.1028dp + 1099.3556dp + 1101.6083dp + 1103.8611dp + 1106.1139dp + 1108.3667dp + 1110.6194dp + 1112.8722dp + 1115.1250dp + 1117.3778dp + 1119.6306dp + 1121.8833dp + 1124.1361dp + 1126.3889dp + 1351.6667dp + 1441.7778dp + 1622.0000dp + 2.2528sp + 4.5056sp + 6.7583sp + 9.0111sp + 11.2639sp + 13.5167sp + 15.7694sp + 18.0222sp + 20.2750sp + 22.5278sp + 24.7806sp + 27.0333sp + 29.2861sp + 31.5389sp + 33.7917sp + 36.0444sp + 38.2972sp + 40.5500sp + 42.8028sp + 45.0556sp + 47.3083sp + 49.5611sp + 51.8139sp + 54.0667sp + 56.3194sp + 58.5722sp + 60.8250sp + 63.0778sp + 65.3306sp + 67.5833sp + 69.8361sp + 72.0889sp + 74.3417sp + 76.5944sp + 78.8472sp + 81.1000sp + 83.3528sp + 85.6056sp + 87.8583sp + 90.1111sp + 92.3639sp + 94.6167sp + 96.8694sp + 99.1222sp + 101.3750sp + 103.6278sp + 105.8806sp + 108.1333sp + 110.3861sp + 112.6389sp + diff --git a/app/src/main/res/values-sw820dp/dimens.xml b/app/src/main/res/values-sw820dp/dimens.xml new file mode 100644 index 0000000..a9cee1f --- /dev/null +++ b/app/src/main/res/values-sw820dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 2.2778dp + 11.3889dp + 91.1111dp + -136.6667dp + -68.3333dp + -45.5556dp + -27.3333dp + -22.7778dp + -18.2222dp + -11.3889dp + -4.5556dp + -2.2778dp + 0.0000dp + 0.2278dp + 1.1389dp + 2.2778dp + 3.4167dp + 4.5556dp + 5.6944dp + 6.8333dp + 7.9722dp + 9.1111dp + 10.2500dp + 11.3889dp + 13.6667dp + 15.9444dp + 18.2222dp + 20.5000dp + 22.7778dp + 25.0556dp + 27.3333dp + 29.6111dp + 31.8889dp + 34.1667dp + 36.4444dp + 38.7222dp + 41.0000dp + 43.2778dp + 45.5556dp + 47.8333dp + 50.1111dp + 52.3889dp + 54.6667dp + 56.9444dp + 59.2222dp + 61.5000dp + 63.7778dp + 66.0556dp + 68.3333dp + 70.6111dp + 72.8889dp + 75.1667dp + 77.4444dp + 79.7222dp + 82.0000dp + 84.2778dp + 86.5556dp + 88.8333dp + 91.1111dp + 93.3889dp + 95.6667dp + 97.9444dp + 100.2222dp + 102.5000dp + 104.7778dp + 107.0556dp + 109.3333dp + 111.6111dp + 113.8889dp + 116.1667dp + 118.4444dp + 120.7222dp + 123.0000dp + 125.2778dp + 127.5556dp + 129.8333dp + 132.1111dp + 134.3889dp + 136.6667dp + 138.9444dp + 141.2222dp + 143.5000dp + 145.7778dp + 148.0556dp + 150.3333dp + 152.6111dp + 154.8889dp + 157.1667dp + 159.4444dp + 161.7222dp + 164.0000dp + 166.2778dp + 168.5556dp + 170.8333dp + 173.1111dp + 175.3889dp + 177.6667dp + 179.9444dp + 182.2222dp + 184.5000dp + 186.7778dp + 189.0556dp + 191.3333dp + 193.6111dp + 195.8889dp + 198.1667dp + 200.4444dp + 202.7222dp + 205.0000dp + 207.2778dp + 209.5556dp + 211.8333dp + 214.1111dp + 216.3889dp + 218.6667dp + 220.9444dp + 223.2222dp + 225.5000dp + 227.7778dp + 230.0556dp + 232.3333dp + 234.6111dp + 236.8889dp + 239.1667dp + 241.4444dp + 243.7222dp + 246.0000dp + 248.2778dp + 250.5556dp + 252.8333dp + 255.1111dp + 257.3889dp + 259.6667dp + 261.9444dp + 264.2222dp + 266.5000dp + 268.7778dp + 271.0556dp + 273.3333dp + 275.6111dp + 277.8889dp + 280.1667dp + 282.4444dp + 284.7222dp + 287.0000dp + 289.2778dp + 291.5556dp + 293.8333dp + 296.1111dp + 298.3889dp + 300.6667dp + 302.9444dp + 305.2222dp + 307.5000dp + 309.7778dp + 312.0556dp + 314.3333dp + 316.6111dp + 318.8889dp + 321.1667dp + 323.4444dp + 325.7222dp + 328.0000dp + 330.2778dp + 332.5556dp + 334.8333dp + 337.1111dp + 339.3889dp + 341.6667dp + 343.9444dp + 346.2222dp + 348.5000dp + 350.7778dp + 353.0556dp + 355.3333dp + 357.6111dp + 359.8889dp + 362.1667dp + 364.4444dp + 366.7222dp + 369.0000dp + 371.2778dp + 373.5556dp + 375.8333dp + 378.1111dp + 380.3889dp + 382.6667dp + 384.9444dp + 387.2222dp + 389.5000dp + 391.7778dp + 394.0556dp + 396.3333dp + 398.6111dp + 400.8889dp + 403.1667dp + 405.4444dp + 407.7222dp + 410.0000dp + 412.2778dp + 414.5556dp + 416.8333dp + 419.1111dp + 421.3889dp + 423.6667dp + 425.9444dp + 428.2222dp + 430.5000dp + 432.7778dp + 435.0556dp + 437.3333dp + 439.6111dp + 441.8889dp + 444.1667dp + 446.4444dp + 448.7222dp + 451.0000dp + 453.2778dp + 455.5556dp + 457.8333dp + 460.1111dp + 462.3889dp + 464.6667dp + 466.9444dp + 469.2222dp + 471.5000dp + 473.7778dp + 476.0556dp + 478.3333dp + 480.6111dp + 482.8889dp + 485.1667dp + 487.4444dp + 489.7222dp + 492.0000dp + 494.2778dp + 496.5556dp + 498.8333dp + 501.1111dp + 503.3889dp + 505.6667dp + 507.9444dp + 510.2222dp + 512.5000dp + 514.7778dp + 517.0556dp + 519.3333dp + 521.6111dp + 523.8889dp + 526.1667dp + 528.4444dp + 530.7222dp + 533.0000dp + 535.2778dp + 537.5556dp + 539.8333dp + 542.1111dp + 544.3889dp + 546.6667dp + 548.9444dp + 551.2222dp + 553.5000dp + 555.7778dp + 558.0556dp + 560.3333dp + 562.6111dp + 564.8889dp + 567.1667dp + 569.4444dp + 571.7222dp + 574.0000dp + 576.2778dp + 578.5556dp + 580.8333dp + 583.1111dp + 585.3889dp + 587.6667dp + 589.9444dp + 592.2222dp + 594.5000dp + 596.7778dp + 599.0556dp + 601.3333dp + 603.6111dp + 605.8889dp + 608.1667dp + 610.4444dp + 612.7222dp + 615.0000dp + 617.2778dp + 619.5556dp + 621.8333dp + 624.1111dp + 626.3889dp + 628.6667dp + 630.9444dp + 633.2222dp + 635.5000dp + 637.7778dp + 640.0556dp + 642.3333dp + 644.6111dp + 646.8889dp + 649.1667dp + 651.4444dp + 653.7222dp + 656.0000dp + 658.2778dp + 660.5556dp + 662.8333dp + 665.1111dp + 667.3889dp + 669.6667dp + 671.9444dp + 674.2222dp + 676.5000dp + 678.7778dp + 681.0556dp + 683.3333dp + 685.6111dp + 687.8889dp + 690.1667dp + 692.4444dp + 694.7222dp + 697.0000dp + 699.2778dp + 701.5556dp + 703.8333dp + 706.1111dp + 708.3889dp + 710.6667dp + 712.9444dp + 715.2222dp + 717.5000dp + 719.7778dp + 722.0556dp + 724.3333dp + 726.6111dp + 728.8889dp + 731.1667dp + 733.4444dp + 735.7222dp + 738.0000dp + 740.2778dp + 742.5556dp + 744.8333dp + 747.1111dp + 749.3889dp + 751.6667dp + 753.9444dp + 756.2222dp + 758.5000dp + 760.7778dp + 763.0556dp + 765.3333dp + 767.6111dp + 769.8889dp + 772.1667dp + 774.4444dp + 776.7222dp + 779.0000dp + 781.2778dp + 783.5556dp + 785.8333dp + 788.1111dp + 790.3889dp + 792.6667dp + 794.9444dp + 797.2222dp + 799.5000dp + 801.7778dp + 804.0556dp + 806.3333dp + 808.6111dp + 810.8889dp + 813.1667dp + 815.4444dp + 817.7222dp + 820.0000dp + 822.2778dp + 824.5556dp + 826.8333dp + 829.1111dp + 831.3889dp + 833.6667dp + 835.9444dp + 838.2222dp + 840.5000dp + 842.7778dp + 845.0556dp + 847.3333dp + 849.6111dp + 851.8889dp + 854.1667dp + 856.4444dp + 858.7222dp + 861.0000dp + 863.2778dp + 865.5556dp + 867.8333dp + 870.1111dp + 872.3889dp + 874.6667dp + 876.9444dp + 879.2222dp + 881.5000dp + 883.7778dp + 886.0556dp + 888.3333dp + 890.6111dp + 892.8889dp + 895.1667dp + 897.4444dp + 899.7222dp + 902.0000dp + 904.2778dp + 906.5556dp + 908.8333dp + 911.1111dp + 913.3889dp + 915.6667dp + 917.9444dp + 920.2222dp + 922.5000dp + 924.7778dp + 927.0556dp + 929.3333dp + 931.6111dp + 933.8889dp + 936.1667dp + 938.4444dp + 940.7222dp + 943.0000dp + 945.2778dp + 947.5556dp + 949.8333dp + 952.1111dp + 954.3889dp + 956.6667dp + 958.9444dp + 961.2222dp + 963.5000dp + 965.7778dp + 968.0556dp + 970.3333dp + 972.6111dp + 974.8889dp + 977.1667dp + 979.4444dp + 981.7222dp + 984.0000dp + 986.2778dp + 988.5556dp + 990.8333dp + 993.1111dp + 995.3889dp + 997.6667dp + 999.9444dp + 1002.2222dp + 1004.5000dp + 1006.7778dp + 1009.0556dp + 1011.3333dp + 1013.6111dp + 1015.8889dp + 1018.1667dp + 1020.4444dp + 1022.7222dp + 1025.0000dp + 1027.2778dp + 1029.5556dp + 1031.8333dp + 1034.1111dp + 1036.3889dp + 1038.6667dp + 1040.9444dp + 1043.2222dp + 1045.5000dp + 1047.7778dp + 1050.0556dp + 1052.3333dp + 1054.6111dp + 1056.8889dp + 1059.1667dp + 1061.4444dp + 1063.7222dp + 1066.0000dp + 1068.2778dp + 1070.5556dp + 1072.8333dp + 1075.1111dp + 1077.3889dp + 1079.6667dp + 1081.9444dp + 1084.2222dp + 1086.5000dp + 1088.7778dp + 1091.0556dp + 1093.3333dp + 1095.6111dp + 1097.8889dp + 1100.1667dp + 1102.4444dp + 1104.7222dp + 1107.0000dp + 1109.2778dp + 1111.5556dp + 1113.8333dp + 1116.1111dp + 1118.3889dp + 1120.6667dp + 1122.9444dp + 1125.2222dp + 1127.5000dp + 1129.7778dp + 1132.0556dp + 1134.3333dp + 1136.6111dp + 1138.8889dp + 1366.6667dp + 1457.7778dp + 1640.0000dp + 2.2778sp + 4.5556sp + 6.8333sp + 9.1111sp + 11.3889sp + 13.6667sp + 15.9444sp + 18.2222sp + 20.5000sp + 22.7778sp + 25.0556sp + 27.3333sp + 29.6111sp + 31.8889sp + 34.1667sp + 36.4444sp + 38.7222sp + 41.0000sp + 43.2778sp + 45.5556sp + 47.8333sp + 50.1111sp + 52.3889sp + 54.6667sp + 56.9444sp + 59.2222sp + 61.5000sp + 63.7778sp + 66.0556sp + 68.3333sp + 70.6111sp + 72.8889sp + 75.1667sp + 77.4444sp + 79.7222sp + 82.0000sp + 84.2778sp + 86.5556sp + 88.8333sp + 91.1111sp + 93.3889sp + 95.6667sp + 97.9444sp + 100.2222sp + 102.5000sp + 104.7778sp + 107.0556sp + 109.3333sp + 111.6111sp + 113.8889sp + diff --git a/app/src/main/res/values-sw960dp/dimens.xml b/app/src/main/res/values-sw960dp/dimens.xml new file mode 100644 index 0000000..798e4aa --- /dev/null +++ b/app/src/main/res/values-sw960dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 2.6667dp + 13.3333dp + 106.6667dp + -160.0000dp + -80.0000dp + -53.3333dp + -32.0000dp + -26.6667dp + -21.3333dp + -13.3333dp + -5.3333dp + -2.6667dp + 0.0000dp + 0.2667dp + 1.3333dp + 2.6667dp + 4.0000dp + 5.3333dp + 6.6667dp + 8.0000dp + 9.3333dp + 10.6667dp + 12.0000dp + 13.3333dp + 16.0000dp + 18.6667dp + 21.3333dp + 24.0000dp + 26.6667dp + 29.3333dp + 32.0000dp + 34.6667dp + 37.3333dp + 40.0000dp + 42.6667dp + 45.3333dp + 48.0000dp + 50.6667dp + 53.3333dp + 56.0000dp + 58.6667dp + 61.3333dp + 64.0000dp + 66.6667dp + 69.3333dp + 72.0000dp + 74.6667dp + 77.3333dp + 80.0000dp + 82.6667dp + 85.3333dp + 88.0000dp + 90.6667dp + 93.3333dp + 96.0000dp + 98.6667dp + 101.3333dp + 104.0000dp + 106.6667dp + 109.3333dp + 112.0000dp + 114.6667dp + 117.3333dp + 120.0000dp + 122.6667dp + 125.3333dp + 128.0000dp + 130.6667dp + 133.3333dp + 136.0000dp + 138.6667dp + 141.3333dp + 144.0000dp + 146.6667dp + 149.3333dp + 152.0000dp + 154.6667dp + 157.3333dp + 160.0000dp + 162.6667dp + 165.3333dp + 168.0000dp + 170.6667dp + 173.3333dp + 176.0000dp + 178.6667dp + 181.3333dp + 184.0000dp + 186.6667dp + 189.3333dp + 192.0000dp + 194.6667dp + 197.3333dp + 200.0000dp + 202.6667dp + 205.3333dp + 208.0000dp + 210.6667dp + 213.3333dp + 216.0000dp + 218.6667dp + 221.3333dp + 224.0000dp + 226.6667dp + 229.3333dp + 232.0000dp + 234.6667dp + 237.3333dp + 240.0000dp + 242.6667dp + 245.3333dp + 248.0000dp + 250.6667dp + 253.3333dp + 256.0000dp + 258.6667dp + 261.3333dp + 264.0000dp + 266.6667dp + 269.3333dp + 272.0000dp + 274.6667dp + 277.3333dp + 280.0000dp + 282.6667dp + 285.3333dp + 288.0000dp + 290.6667dp + 293.3333dp + 296.0000dp + 298.6667dp + 301.3333dp + 304.0000dp + 306.6667dp + 309.3333dp + 312.0000dp + 314.6667dp + 317.3333dp + 320.0000dp + 322.6667dp + 325.3333dp + 328.0000dp + 330.6667dp + 333.3333dp + 336.0000dp + 338.6667dp + 341.3333dp + 344.0000dp + 346.6667dp + 349.3333dp + 352.0000dp + 354.6667dp + 357.3333dp + 360.0000dp + 362.6667dp + 365.3333dp + 368.0000dp + 370.6667dp + 373.3333dp + 376.0000dp + 378.6667dp + 381.3333dp + 384.0000dp + 386.6667dp + 389.3333dp + 392.0000dp + 394.6667dp + 397.3333dp + 400.0000dp + 402.6667dp + 405.3333dp + 408.0000dp + 410.6667dp + 413.3333dp + 416.0000dp + 418.6667dp + 421.3333dp + 424.0000dp + 426.6667dp + 429.3333dp + 432.0000dp + 434.6667dp + 437.3333dp + 440.0000dp + 442.6667dp + 445.3333dp + 448.0000dp + 450.6667dp + 453.3333dp + 456.0000dp + 458.6667dp + 461.3333dp + 464.0000dp + 466.6667dp + 469.3333dp + 472.0000dp + 474.6667dp + 477.3333dp + 480.0000dp + 482.6667dp + 485.3333dp + 488.0000dp + 490.6667dp + 493.3333dp + 496.0000dp + 498.6667dp + 501.3333dp + 504.0000dp + 506.6667dp + 509.3333dp + 512.0000dp + 514.6667dp + 517.3333dp + 520.0000dp + 522.6667dp + 525.3333dp + 528.0000dp + 530.6667dp + 533.3333dp + 536.0000dp + 538.6667dp + 541.3333dp + 544.0000dp + 546.6667dp + 549.3333dp + 552.0000dp + 554.6667dp + 557.3333dp + 560.0000dp + 562.6667dp + 565.3333dp + 568.0000dp + 570.6667dp + 573.3333dp + 576.0000dp + 578.6667dp + 581.3333dp + 584.0000dp + 586.6667dp + 589.3333dp + 592.0000dp + 594.6667dp + 597.3333dp + 600.0000dp + 602.6667dp + 605.3333dp + 608.0000dp + 610.6667dp + 613.3333dp + 616.0000dp + 618.6667dp + 621.3333dp + 624.0000dp + 626.6667dp + 629.3333dp + 632.0000dp + 634.6667dp + 637.3333dp + 640.0000dp + 642.6667dp + 645.3333dp + 648.0000dp + 650.6667dp + 653.3333dp + 656.0000dp + 658.6667dp + 661.3333dp + 664.0000dp + 666.6667dp + 669.3333dp + 672.0000dp + 674.6667dp + 677.3333dp + 680.0000dp + 682.6667dp + 685.3333dp + 688.0000dp + 690.6667dp + 693.3333dp + 696.0000dp + 698.6667dp + 701.3333dp + 704.0000dp + 706.6667dp + 709.3333dp + 712.0000dp + 714.6667dp + 717.3333dp + 720.0000dp + 722.6667dp + 725.3333dp + 728.0000dp + 730.6667dp + 733.3333dp + 736.0000dp + 738.6667dp + 741.3333dp + 744.0000dp + 746.6667dp + 749.3333dp + 752.0000dp + 754.6667dp + 757.3333dp + 760.0000dp + 762.6667dp + 765.3333dp + 768.0000dp + 770.6667dp + 773.3333dp + 776.0000dp + 778.6667dp + 781.3333dp + 784.0000dp + 786.6667dp + 789.3333dp + 792.0000dp + 794.6667dp + 797.3333dp + 800.0000dp + 802.6667dp + 805.3333dp + 808.0000dp + 810.6667dp + 813.3333dp + 816.0000dp + 818.6667dp + 821.3333dp + 824.0000dp + 826.6667dp + 829.3333dp + 832.0000dp + 834.6667dp + 837.3333dp + 840.0000dp + 842.6667dp + 845.3333dp + 848.0000dp + 850.6667dp + 853.3333dp + 856.0000dp + 858.6667dp + 861.3333dp + 864.0000dp + 866.6667dp + 869.3333dp + 872.0000dp + 874.6667dp + 877.3333dp + 880.0000dp + 882.6667dp + 885.3333dp + 888.0000dp + 890.6667dp + 893.3333dp + 896.0000dp + 898.6667dp + 901.3333dp + 904.0000dp + 906.6667dp + 909.3333dp + 912.0000dp + 914.6667dp + 917.3333dp + 920.0000dp + 922.6667dp + 925.3333dp + 928.0000dp + 930.6667dp + 933.3333dp + 936.0000dp + 938.6667dp + 941.3333dp + 944.0000dp + 946.6667dp + 949.3333dp + 952.0000dp + 954.6667dp + 957.3333dp + 960.0000dp + 962.6667dp + 965.3333dp + 968.0000dp + 970.6667dp + 973.3333dp + 976.0000dp + 978.6667dp + 981.3333dp + 984.0000dp + 986.6667dp + 989.3333dp + 992.0000dp + 994.6667dp + 997.3333dp + 1000.0000dp + 1002.6667dp + 1005.3333dp + 1008.0000dp + 1010.6667dp + 1013.3333dp + 1016.0000dp + 1018.6667dp + 1021.3333dp + 1024.0000dp + 1026.6667dp + 1029.3333dp + 1032.0000dp + 1034.6667dp + 1037.3333dp + 1040.0000dp + 1042.6667dp + 1045.3333dp + 1048.0000dp + 1050.6667dp + 1053.3333dp + 1056.0000dp + 1058.6667dp + 1061.3333dp + 1064.0000dp + 1066.6667dp + 1069.3333dp + 1072.0000dp + 1074.6667dp + 1077.3333dp + 1080.0000dp + 1082.6667dp + 1085.3333dp + 1088.0000dp + 1090.6667dp + 1093.3333dp + 1096.0000dp + 1098.6667dp + 1101.3333dp + 1104.0000dp + 1106.6667dp + 1109.3333dp + 1112.0000dp + 1114.6667dp + 1117.3333dp + 1120.0000dp + 1122.6667dp + 1125.3333dp + 1128.0000dp + 1130.6667dp + 1133.3333dp + 1136.0000dp + 1138.6667dp + 1141.3333dp + 1144.0000dp + 1146.6667dp + 1149.3333dp + 1152.0000dp + 1154.6667dp + 1157.3333dp + 1160.0000dp + 1162.6667dp + 1165.3333dp + 1168.0000dp + 1170.6667dp + 1173.3333dp + 1176.0000dp + 1178.6667dp + 1181.3333dp + 1184.0000dp + 1186.6667dp + 1189.3333dp + 1192.0000dp + 1194.6667dp + 1197.3333dp + 1200.0000dp + 1202.6667dp + 1205.3333dp + 1208.0000dp + 1210.6667dp + 1213.3333dp + 1216.0000dp + 1218.6667dp + 1221.3333dp + 1224.0000dp + 1226.6667dp + 1229.3333dp + 1232.0000dp + 1234.6667dp + 1237.3333dp + 1240.0000dp + 1242.6667dp + 1245.3333dp + 1248.0000dp + 1250.6667dp + 1253.3333dp + 1256.0000dp + 1258.6667dp + 1261.3333dp + 1264.0000dp + 1266.6667dp + 1269.3333dp + 1272.0000dp + 1274.6667dp + 1277.3333dp + 1280.0000dp + 1282.6667dp + 1285.3333dp + 1288.0000dp + 1290.6667dp + 1293.3333dp + 1296.0000dp + 1298.6667dp + 1301.3333dp + 1304.0000dp + 1306.6667dp + 1309.3333dp + 1312.0000dp + 1314.6667dp + 1317.3333dp + 1320.0000dp + 1322.6667dp + 1325.3333dp + 1328.0000dp + 1330.6667dp + 1333.3333dp + 1600.0000dp + 1706.6667dp + 1920.0000dp + 2.6667sp + 5.3333sp + 8.0000sp + 10.6667sp + 13.3333sp + 16.0000sp + 18.6667sp + 21.3333sp + 24.0000sp + 26.6667sp + 29.3333sp + 32.0000sp + 34.6667sp + 37.3333sp + 40.0000sp + 42.6667sp + 45.3333sp + 48.0000sp + 50.6667sp + 53.3333sp + 56.0000sp + 58.6667sp + 61.3333sp + 64.0000sp + 66.6667sp + 69.3333sp + 72.0000sp + 74.6667sp + 77.3333sp + 80.0000sp + 82.6667sp + 85.3333sp + 88.0000sp + 90.6667sp + 93.3333sp + 96.0000sp + 98.6667sp + 101.3333sp + 104.0000sp + 106.6667sp + 109.3333sp + 112.0000sp + 114.6667sp + 117.3333sp + 120.0000sp + 122.6667sp + 125.3333sp + 128.0000sp + 130.6667sp + 133.3333sp + diff --git a/app/src/main/res/values-sw961dp/dimens.xml b/app/src/main/res/values-sw961dp/dimens.xml new file mode 100644 index 0000000..50e4846 --- /dev/null +++ b/app/src/main/res/values-sw961dp/dimens.xml @@ -0,0 +1,576 @@ + + + 0.0000dp + 2.6694dp + 13.3472dp + 106.7778dp + -160.1667dp + -80.0833dp + -53.3889dp + -32.0333dp + -26.6944dp + -21.3556dp + -13.3472dp + -5.3389dp + -2.6694dp + 0.0000dp + 0.2669dp + 1.3347dp + 2.6694dp + 4.0042dp + 5.3389dp + 6.6736dp + 8.0083dp + 9.3431dp + 10.6778dp + 12.0125dp + 13.3472dp + 16.0167dp + 18.6861dp + 21.3556dp + 24.0250dp + 26.6944dp + 29.3639dp + 32.0333dp + 34.7028dp + 37.3722dp + 40.0417dp + 42.7111dp + 45.3806dp + 48.0500dp + 50.7194dp + 53.3889dp + 56.0583dp + 58.7278dp + 61.3972dp + 64.0667dp + 66.7361dp + 69.4056dp + 72.0750dp + 74.7444dp + 77.4139dp + 80.0833dp + 82.7528dp + 85.4222dp + 88.0917dp + 90.7611dp + 93.4306dp + 96.1000dp + 98.7694dp + 101.4389dp + 104.1083dp + 106.7778dp + 109.4472dp + 112.1167dp + 114.7861dp + 117.4556dp + 120.1250dp + 122.7944dp + 125.4639dp + 128.1333dp + 130.8028dp + 133.4722dp + 136.1417dp + 138.8111dp + 141.4806dp + 144.1500dp + 146.8194dp + 149.4889dp + 152.1583dp + 154.8278dp + 157.4972dp + 160.1667dp + 162.8361dp + 165.5056dp + 168.1750dp + 170.8444dp + 173.5139dp + 176.1833dp + 178.8528dp + 181.5222dp + 184.1917dp + 186.8611dp + 189.5306dp + 192.2000dp + 194.8694dp + 197.5389dp + 200.2083dp + 202.8778dp + 205.5472dp + 208.2167dp + 210.8861dp + 213.5556dp + 216.2250dp + 218.8944dp + 221.5639dp + 224.2333dp + 226.9028dp + 229.5722dp + 232.2417dp + 234.9111dp + 237.5806dp + 240.2500dp + 242.9194dp + 245.5889dp + 248.2583dp + 250.9278dp + 253.5972dp + 256.2667dp + 258.9361dp + 261.6056dp + 264.2750dp + 266.9444dp + 269.6139dp + 272.2833dp + 274.9528dp + 277.6222dp + 280.2917dp + 282.9611dp + 285.6306dp + 288.3000dp + 290.9694dp + 293.6389dp + 296.3083dp + 298.9778dp + 301.6472dp + 304.3167dp + 306.9861dp + 309.6556dp + 312.3250dp + 314.9944dp + 317.6639dp + 320.3333dp + 323.0028dp + 325.6722dp + 328.3417dp + 331.0111dp + 333.6806dp + 336.3500dp + 339.0194dp + 341.6889dp + 344.3583dp + 347.0278dp + 349.6972dp + 352.3667dp + 355.0361dp + 357.7056dp + 360.3750dp + 363.0444dp + 365.7139dp + 368.3833dp + 371.0528dp + 373.7222dp + 376.3917dp + 379.0611dp + 381.7306dp + 384.4000dp + 387.0694dp + 389.7389dp + 392.4083dp + 395.0778dp + 397.7472dp + 400.4167dp + 403.0861dp + 405.7556dp + 408.4250dp + 411.0944dp + 413.7639dp + 416.4333dp + 419.1028dp + 421.7722dp + 424.4417dp + 427.1111dp + 429.7806dp + 432.4500dp + 435.1194dp + 437.7889dp + 440.4583dp + 443.1278dp + 445.7972dp + 448.4667dp + 451.1361dp + 453.8056dp + 456.4750dp + 459.1444dp + 461.8139dp + 464.4833dp + 467.1528dp + 469.8222dp + 472.4917dp + 475.1611dp + 477.8306dp + 480.5000dp + 483.1694dp + 485.8389dp + 488.5083dp + 491.1778dp + 493.8472dp + 496.5167dp + 499.1861dp + 501.8556dp + 504.5250dp + 507.1944dp + 509.8639dp + 512.5333dp + 515.2028dp + 517.8722dp + 520.5417dp + 523.2111dp + 525.8806dp + 528.5500dp + 531.2194dp + 533.8889dp + 536.5583dp + 539.2278dp + 541.8972dp + 544.5667dp + 547.2361dp + 549.9056dp + 552.5750dp + 555.2444dp + 557.9139dp + 560.5833dp + 563.2528dp + 565.9222dp + 568.5917dp + 571.2611dp + 573.9306dp + 576.6000dp + 579.2694dp + 581.9389dp + 584.6083dp + 587.2778dp + 589.9472dp + 592.6167dp + 595.2861dp + 597.9556dp + 600.6250dp + 603.2944dp + 605.9639dp + 608.6333dp + 611.3028dp + 613.9722dp + 616.6417dp + 619.3111dp + 621.9806dp + 624.6500dp + 627.3194dp + 629.9889dp + 632.6583dp + 635.3278dp + 637.9972dp + 640.6667dp + 643.3361dp + 646.0056dp + 648.6750dp + 651.3444dp + 654.0139dp + 656.6833dp + 659.3528dp + 662.0222dp + 664.6917dp + 667.3611dp + 670.0306dp + 672.7000dp + 675.3694dp + 678.0389dp + 680.7083dp + 683.3778dp + 686.0472dp + 688.7167dp + 691.3861dp + 694.0556dp + 696.7250dp + 699.3944dp + 702.0639dp + 704.7333dp + 707.4028dp + 710.0722dp + 712.7417dp + 715.4111dp + 718.0806dp + 720.7500dp + 723.4194dp + 726.0889dp + 728.7583dp + 731.4278dp + 734.0972dp + 736.7667dp + 739.4361dp + 742.1056dp + 744.7750dp + 747.4444dp + 750.1139dp + 752.7833dp + 755.4528dp + 758.1222dp + 760.7917dp + 763.4611dp + 766.1306dp + 768.8000dp + 771.4694dp + 774.1389dp + 776.8083dp + 779.4778dp + 782.1472dp + 784.8167dp + 787.4861dp + 790.1556dp + 792.8250dp + 795.4944dp + 798.1639dp + 800.8333dp + 803.5028dp + 806.1722dp + 808.8417dp + 811.5111dp + 814.1806dp + 816.8500dp + 819.5194dp + 822.1889dp + 824.8583dp + 827.5278dp + 830.1972dp + 832.8667dp + 835.5361dp + 838.2056dp + 840.8750dp + 843.5444dp + 846.2139dp + 848.8833dp + 851.5528dp + 854.2222dp + 856.8917dp + 859.5611dp + 862.2306dp + 864.9000dp + 867.5694dp + 870.2389dp + 872.9083dp + 875.5778dp + 878.2472dp + 880.9167dp + 883.5861dp + 886.2556dp + 888.9250dp + 891.5944dp + 894.2639dp + 896.9333dp + 899.6028dp + 902.2722dp + 904.9417dp + 907.6111dp + 910.2806dp + 912.9500dp + 915.6194dp + 918.2889dp + 920.9583dp + 923.6278dp + 926.2972dp + 928.9667dp + 931.6361dp + 934.3056dp + 936.9750dp + 939.6444dp + 942.3139dp + 944.9833dp + 947.6528dp + 950.3222dp + 952.9917dp + 955.6611dp + 958.3306dp + 961.0000dp + 963.6694dp + 966.3389dp + 969.0083dp + 971.6778dp + 974.3472dp + 977.0167dp + 979.6861dp + 982.3556dp + 985.0250dp + 987.6944dp + 990.3639dp + 993.0333dp + 995.7028dp + 998.3722dp + 1001.0417dp + 1003.7111dp + 1006.3806dp + 1009.0500dp + 1011.7194dp + 1014.3889dp + 1017.0583dp + 1019.7278dp + 1022.3972dp + 1025.0667dp + 1027.7361dp + 1030.4056dp + 1033.0750dp + 1035.7444dp + 1038.4139dp + 1041.0833dp + 1043.7528dp + 1046.4222dp + 1049.0917dp + 1051.7611dp + 1054.4306dp + 1057.1000dp + 1059.7694dp + 1062.4389dp + 1065.1083dp + 1067.7778dp + 1070.4472dp + 1073.1167dp + 1075.7861dp + 1078.4556dp + 1081.1250dp + 1083.7944dp + 1086.4639dp + 1089.1333dp + 1091.8028dp + 1094.4722dp + 1097.1417dp + 1099.8111dp + 1102.4806dp + 1105.1500dp + 1107.8194dp + 1110.4889dp + 1113.1583dp + 1115.8278dp + 1118.4972dp + 1121.1667dp + 1123.8361dp + 1126.5056dp + 1129.1750dp + 1131.8444dp + 1134.5139dp + 1137.1833dp + 1139.8528dp + 1142.5222dp + 1145.1917dp + 1147.8611dp + 1150.5306dp + 1153.2000dp + 1155.8694dp + 1158.5389dp + 1161.2083dp + 1163.8778dp + 1166.5472dp + 1169.2167dp + 1171.8861dp + 1174.5556dp + 1177.2250dp + 1179.8944dp + 1182.5639dp + 1185.2333dp + 1187.9028dp + 1190.5722dp + 1193.2417dp + 1195.9111dp + 1198.5806dp + 1201.2500dp + 1203.9194dp + 1206.5889dp + 1209.2583dp + 1211.9278dp + 1214.5972dp + 1217.2667dp + 1219.9361dp + 1222.6056dp + 1225.2750dp + 1227.9444dp + 1230.6139dp + 1233.2833dp + 1235.9528dp + 1238.6222dp + 1241.2917dp + 1243.9611dp + 1246.6306dp + 1249.3000dp + 1251.9694dp + 1254.6389dp + 1257.3083dp + 1259.9778dp + 1262.6472dp + 1265.3167dp + 1267.9861dp + 1270.6556dp + 1273.3250dp + 1275.9944dp + 1278.6639dp + 1281.3333dp + 1284.0028dp + 1286.6722dp + 1289.3417dp + 1292.0111dp + 1294.6806dp + 1297.3500dp + 1300.0194dp + 1302.6889dp + 1305.3583dp + 1308.0278dp + 1310.6972dp + 1313.3667dp + 1316.0361dp + 1318.7056dp + 1321.3750dp + 1324.0444dp + 1326.7139dp + 1329.3833dp + 1332.0528dp + 1334.7222dp + 1601.6667dp + 1708.4444dp + 1922.0000dp + 2.6694sp + 5.3389sp + 8.0083sp + 10.6778sp + 13.3472sp + 16.0167sp + 18.6861sp + 21.3556sp + 24.0250sp + 26.6944sp + 29.3639sp + 32.0333sp + 34.7028sp + 37.3722sp + 40.0417sp + 42.7111sp + 45.3806sp + 48.0500sp + 50.7194sp + 53.3889sp + 56.0583sp + 58.7278sp + 61.3972sp + 64.0667sp + 66.7361sp + 69.4056sp + 72.0750sp + 74.7444sp + 77.4139sp + 80.0833sp + 82.7528sp + 85.4222sp + 88.0917sp + 90.7611sp + 93.4306sp + 96.1000sp + 98.7694sp + 101.4389sp + 104.1083sp + 106.7778sp + 109.4472sp + 112.1167sp + 114.7861sp + 117.4556sp + 120.1250sp + 122.7944sp + 125.4639sp + 128.1333sp + 130.8028sp + 133.4722sp + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 2635c6d..77ea7f0 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -4,6 +4,579 @@ 5dp 40dp + + + -60dp + -30dp + -20dp + -12dp + -10dp + -8dp + -5dp + -2dp + -1dp + 0dp + 0.1dp + 0.5dp + 1dp + 1.5dp + 2dp + 2.5dp + 3dp + 3.5dp + 4dp + 4.5dp + 5dp + 6dp + 7dp + 8dp + 9dp + 10dp + 11dp + 12dp + 13dp + 14dp + 15dp + 16dp + 17dp + 18dp + 19dp + 20dp + 21dp + 22dp + 23dp + 24dp + 25dp + 26dp + 27dp + 28dp + 29dp + 30dp + 31dp + 32dp + 33dp + 34dp + 35dp + 36dp + 37dp + 38dp + 39dp + 40dp + 41dp + 42dp + 43dp + 44dp + 45dp + 46dp + 47dp + 48dp + 49dp + 50dp + 51dp + 52dp + 53dp + 54dp + 55dp + 56dp + 57dp + 58dp + 59dp + 60dp + 61dp + 62dp + 63dp + 64dp + 65dp + 66dp + 67dp + 68dp + 69dp + 70dp + 71dp + 72dp + 73dp + 74dp + 75dp + 76dp + 77dp + 78dp + 79dp + 80dp + 81dp + 82dp + 83dp + 84dp + 85dp + 86dp + 87dp + 88dp + 89dp + 90dp + 91dp + 92dp + 93dp + 94dp + 95dp + 96dp + 97dp + 98dp + 99dp + 100dp + 101dp + 102dp + 103dp + 104dp + 105dp + 106dp + 107dp + 108dp + 109dp + 110dp + 111dp + 112dp + 113dp + 114dp + 115dp + 116dp + 117dp + 118dp + 119dp + 120dp + 121dp + 122dp + 123dp + 124dp + 125dp + 126dp + 127dp + 128dp + 129dp + 130dp + 131dp + 132dp + 133dp + 134dp + 135dp + 136dp + 137dp + 138dp + 139dp + 140dp + 141dp + 142dp + 143dp + 144dp + 145dp + 146dp + 147dp + 148dp + 149dp + 150dp + 151dp + 152dp + 153dp + 154dp + 155dp + 156dp + 157dp + 158dp + 159dp + 160dp + 161dp + 162dp + 163dp + 164dp + 165dp + 166dp + 167dp + 168dp + 169dp + 170dp + 171dp + 172dp + 173dp + 174dp + 175dp + 176dp + 177dp + 178dp + 179dp + 180dp + 181dp + 182dp + 183dp + 184dp + 185dp + 186dp + 187dp + 188dp + 189dp + 190dp + 191dp + 192dp + 193dp + 194dp + 195dp + 196dp + 197dp + 198dp + 199dp + 200dp + 201dp + 202dp + 203dp + 204dp + 205dp + 206dp + 207dp + 208dp + 209dp + 210dp + 211dp + 212dp + 213dp + 214dp + 215dp + 216dp + 217dp + 218dp + 219dp + 220dp + 221dp + 222dp + 223dp + 224dp + 225dp + 226dp + 227dp + 228dp + 229dp + 230dp + 231dp + 232dp + 233dp + 234dp + 235dp + 236dp + 237dp + 238dp + 239dp + 240dp + 241dp + 242dp + 243dp + 244dp + 245dp + 246dp + 247dp + 248dp + 249dp + 250dp + 251dp + 252dp + 253dp + 254dp + 255dp + 256dp + 257dp + 258dp + 259dp + 260dp + 261dp + 262dp + 263dp + 264dp + 265dp + 266dp + 267dp + 268dp + 269dp + 270dp + 271dp + 272dp + 273dp + 274dp + 275dp + 276dp + 277dp + 278dp + 279dp + 280dp + 281dp + 282dp + 283dp + 284dp + 285dp + 286dp + 287dp + 288dp + 289dp + 290dp + 291dp + 292dp + 293dp + 294dp + 295dp + 296dp + 297dp + 298dp + 299dp + 300dp + 301dp + 302dp + 303dp + 304dp + 305dp + 306dp + 307dp + 308dp + 309dp + 310dp + 311dp + 312dp + 313dp + 314dp + 315dp + 316dp + 317dp + 318dp + 319dp + 320dp + 321dp + 322dp + 323dp + 324dp + 325dp + 326dp + 327dp + 328dp + 329dp + 330dp + 331dp + 332dp + 333dp + 334dp + 335dp + 336dp + 337dp + 338dp + 339dp + 340dp + 341dp + 342dp + 343dp + 344dp + 345dp + 346dp + 347dp + 348dp + 349dp + 350dp + 351dp + 352dp + 353dp + 354dp + 355dp + 356dp + 357dp + 358dp + 359dp + 360dp + 361dp + 362dp + 363dp + 364dp + 365dp + 366dp + 367dp + 368dp + 369dp + 370dp + 371dp + 372dp + 373dp + 374dp + 375dp + 376dp + 377dp + 378dp + 379dp + 380dp + 381dp + 382dp + 383dp + 384dp + 385dp + 386dp + 387dp + 388dp + 389dp + 390dp + 391dp + 392dp + 393dp + 394dp + 395dp + 396dp + 397dp + 398dp + 399dp + 400dp + 401dp + 402dp + 403dp + 404dp + 405dp + 406dp + 407dp + 408dp + 409dp + 410dp + 411dp + 412dp + 413dp + 414dp + 415dp + 416dp + 417dp + 418dp + 419dp + 420dp + 421dp + 422dp + 423dp + 424dp + 425dp + 426dp + 427dp + 428dp + 429dp + 430dp + 431dp + 432dp + 433dp + 434dp + 435dp + 436dp + 437dp + 438dp + 439dp + 440dp + 441dp + 442dp + 443dp + 444dp + 445dp + 446dp + 447dp + 448dp + 449dp + 450dp + 451dp + 452dp + 453dp + 454dp + 455dp + 456dp + 457dp + 458dp + 459dp + 460dp + 461dp + 462dp + 463dp + 464dp + 465dp + 466dp + 467dp + 468dp + 469dp + 470dp + 471dp + 472dp + 473dp + 474dp + 475dp + 476dp + 477dp + 478dp + 479dp + 480dp + 481dp + 482dp + 483dp + 484dp + 485dp + 486dp + 487dp + 488dp + 489dp + 490dp + 491dp + 492dp + 493dp + 494dp + 495dp + 496dp + 497dp + 498dp + 499dp + 500dp + 600dp + 640dp + 720dp + + + 1sp + 2sp + 3sp + 4sp + 5sp + 6sp + 7sp + 8sp + 9sp + 10sp + 11sp + 12sp + 13sp + 14sp + 15sp + 16sp + 17sp + 18sp + 19sp + 20sp + 21sp + 22sp + 23sp + 24sp + 25sp + 26sp + 27sp + 28sp + 29sp + 30sp + 31sp + 32sp + 33sp + 34sp + 35sp + 36sp + 37sp + 38sp + 39sp + 40sp + 41sp + 42sp + 43sp + 44sp + 45sp + 46sp + 47sp + 48sp + 49sp + 50sp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index da065c6..77fcc17 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,4 @@ - Ao播放器 + 我的视频 + 正在下载%s diff --git a/screenMatch.properties b/screenMatch.properties new file mode 100644 index 0000000..72e2196 --- /dev/null +++ b/screenMatch.properties @@ -0,0 +1,55 @@ +############################################################################ +# Start with '#' is annotate. # +# In front of '=' is key, cannot be modified. # +# More information to visit: +# Latest usage:https://github.com/wildma/ScreenAdaptation +# http://blog.csdn.net/fesdgasdgasdg/article/details/52325590 # +# http://download.csdn.net/detail/fesdgasdgasdg/9913744 # +# https://github.com/mengzhinan/PhoneScreenMatch # +############################################################################ +# +# You need to refresh or reopen the project every time you modify the configuration, +# or you can't get the latest configuration parameters. +# +############################################################################# +# +# Base dp value for screen match. Cut the screen into [base_dp] parts. +# Data type is double. System default value is 360. +# I advise you not to modify the value, be careful !!!!!!!!! _^_ *_* +base_dp=360 +# Also need to match the phone screen of [match_dp]. +# If you have another dp values. +# System default values is 320,360,362.2641,384,392.7272,400,410,411.4285,432,451.7647,480,533,540,592,600,640,662,720,768,800,811,820,960,961,1024,1280,1365 +match_dp= +# If you not wanna to match dp values above. Write some above values here, append value with "," . +# For example: 811,961,1365 +ignore_dp= +# They're not android module name. If has more��split with , Symbol. +# If you set, it will not show in SelectDialog. +# If you have, write here and append value with "," . +# For example: testLibrary,commonModule +# System default values is .gradle, gradle, .idea, build, .git +ignore_module_name= +# Use which module under the values/dimen.xml file to do the base file, +# and generated dimen.xml file store in this module? +# Default value is 'app'. +match_module=app +# Don't show select dialog again when use this plugin. +# System screen match will use the last selected module name or default module name. +# You can give value true or false. Default value is false. +not_show_dialog=false +# Do you want to generate the default example dimens.xml file? +# In path of .../projectName/screenMatch_example_dimens.xml, It does not affect your project code. +# You can give value true or false. Default value is false. +not_create_default_dimens=false +# Does the font scale the same size as the DP? May not be accuracy. +# You can give value true or false. Default value is true. Also need scaled. +is_match_font_sp=true +# Do you want to create values-wXXXdp folder or values-swXXXdp folder ? +# I suggest you create values-swXXXdp folder, +# because I had a problem when I was working on the horizontal screen adapter. +# values-swXXXdp folder can solve my problem. +# If you want create values-swXXXdp folder, set "create_values_sw_folder=true", +# otherwise set "create_values_sw_folder=true". +# Default values is true. +create_values_sw_folder=true diff --git a/screenMatch_example_dimens.xml b/screenMatch_example_dimens.xml new file mode 100644 index 0000000..026f490 --- /dev/null +++ b/screenMatch_example_dimens.xml @@ -0,0 +1,431 @@ + + + + + @dimen/dp_15 + + + + -60dp + -30dp + -20dp + -12dp + -10dp + -8dp + -5dp + -2dp + -1dp + 0dp + 0.1dp + 0.5dp + 1dp + 1.5dp + 2dp + 2.5dp + 3dp + 3.5dp + 4dp + 4.5dp + 5dp + 6dp + 7dp + 7.5dp + 8dp + 9dp + 10dp + 11dp + 12dp + 13dp + 14dp + 15dp + 16dp + 17dp + 18dp + 19dp + 20dp + 21dp + 22dp + 23dp + 24dp + 25dp + 26dp + 27dp + 28dp + 29dp + 30dp + 31dp + 32dp + 33dp + 34dp + 35dp + 36dp + 37dp + 38dp + 39dp + 40dp + 41dp + 42dp + 43dp + 44dp + 45dp + 46dp + 47dp + 48dp + 49dp + 50dp + 51dp + 52dp + 53dp + 54dp + 55dp + 56dp + 57dp + 58dp + 59dp + 60dp + 61dp + 62dp + 63dp + 64dp + 65dp + 66dp + 67dp + 68dp + 69dp + 70dp + 71dp + 72dp + 73dp + 74dp + 75dp + 76dp + 77dp + 78dp + 79dp + 80dp + 81dp + 82dp + 83dp + 84dp + 85dp + 86dp + 87dp + 88dp + 89dp + 90dp + 91dp + 92dp + 93dp + 94dp + 95dp + 96dp + 97dp + 98dp + 99dp + 100dp + 101dp + 102dp + 103dp + 104dp + 104.5dp + 105dp + 106dp + 107dp + 108dp + 109dp + 110dp + 111dp + 112dp + 113dp + 114dp + 115dp + 116dp + 117dp + 118dp + 119dp + 120dp + 121dp + 122dp + 123dp + 124dp + 125dp + 126dp + 127dp + 128dp + 129dp + 130dp + 131dp + 132dp + 133dp + 134dp + 134.5dp + 135dp + 136dp + 137dp + 138dp + 139dp + 140dp + 141dp + 142dp + 143dp + 144dp + 145dp + 146dp + 147dp + 148dp + 149dp + 150dp + 151dp + 152dp + 153dp + 154dp + 155dp + 156dp + 157dp + 158dp + 159dp + 160dp + 161dp + 162dp + 163dp + 164dp + 165dp + 166dp + 167dp + 168dp + 169dp + 170dp + 171dp + 172dp + 173dp + 174dp + 175dp + 176dp + 177dp + 178dp + 179dp + 180dp + 181dp + 182dp + 183dp + 184dp + 185dp + 186dp + 187dp + 188dp + 189dp + 190dp + 191dp + 191.25dp + 192dp + 193dp + 194dp + 195dp + 196dp + 197dp + 198dp + 199dp + 200dp + 201dp + 202dp + 203dp + 204dp + 205dp + 206dp + 207dp + 208dp + 209dp + 210dp + 211dp + 212dp + 213dp + 214dp + 215dp + 216dp + 217dp + 218dp + 219dp + 220dp + 221dp + 222dp + 223dp + 224dp + 225dp + 226dp + 227dp + 228dp + 229dp + 230dp + 231dp + 232dp + 233dp + 234dp + 235dp + 236dp + 237dp + 238dp + 239dp + 240dp + 241dp + 242dp + 243dp + 244dp + 245dp + 246dp + 247dp + 248dp + 249dp + 250dp + 251dp + 252dp + 253dp + 254dp + 255dp + 256dp + 257dp + 258dp + 259dp + 260dp + 261dp + 262dp + 263dp + 264dp + 265dp + 266dp + 267dp + 268dp + 269dp + 270dp + 271dp + 272dp + 273dp + 274dp + 275dp + 276dp + 277dp + 278dp + 279dp + 280dp + 281dp + 282dp + 283dp + 284dp + 285dp + 286dp + 287dp + 288dp + 289dp + 290dp + 291dp + 292dp + 293dp + 294dp + 295dp + 296dp + 297dp + 298dp + 299dp + 300dp + 301dp + 302dp + 303dp + 304dp + 305dp + 306dp + 307dp + 308dp + 309dp + 310dp + 311dp + 312dp + 313dp + 314dp + 315dp + 316dp + 317dp + 318dp + 319dp + 320dp + 321dp + 322dp + 323dp + 324dp + 325dp + 326dp + 327dp + 328dp + 329dp + 330dp + 331dp + 332dp + 333dp + 334dp + 335dp + 336dp + 337dp + 338dp + 339dp + 340dp + 341dp + 342dp + 343dp + 344dp + 345dp + 346dp + 347dp + 348dp + 349dp + 350dp + 351dp + 352dp + 353dp + 354dp + 355dp + 356dp + 357dp + 358dp + 359dp + 360dp + 365dp + 370dp + 400dp + 410dp + 422dp + 472dp + 500dp + 600dp + 640dp + 720dp + + + 6sp + 7sp + 8sp + 9sp + 10sp + 11sp + 12sp + 13sp + 14sp + 15sp + 16sp + 17sp + 18sp + 19sp + 20sp + 21sp + 22sp + 23sp + 24sp + 25sp + 28sp + 30sp + 32sp + 34sp + 36sp + 38sp + 40sp + 42sp + 48sp + +