A powerful Android Develop Framework.
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
For Phone And Pad (Support) .
implementation 'com.github.zhouzhuo810.Magpie:magpie:1.4.4'
If you use this. That means you added dependencies below:
//v7
api 'com.android.support:appcompat-v7:28.0.0'
//RecyclerView
api 'com.android.support:recyclerview-v7:28.0.0'
//BaseRecyclerViewAdapterHelper
api 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.46'
//EventBus
api 'org.greenrobot:eventbus:3.1.1'
//Glide
api 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
//RxJava2
api "io.reactivex.rxjava2:rxjava:2.2.10"
//RxAndroid2
api 'io.reactivex.rxjava2:rxandroid:2.1.1'
//Retrofit2
api 'com.squareup.retrofit2:retrofit:2.5.0'
//Retrofit2+RxJava2
api 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'
//Retrofit2+Gson
api 'com.squareup.retrofit2:converter-gson:2.5.0'
//OkHttp打印请求数据
api 'com.squareup.okhttp3:logging-interceptor:3.12.0'
//OkHttp进度监听progressmanager
api 'me.jessyan:progressmanager:1.5.0'
//AndPermission
api 'com.yanzhenjie.permission:support:2.0.1'
//ToastUtils
api 'com.hjq:toast:8.0'
For Phone And Pad (AndroidX) .
For Android TV(Support).
implementation 'com.github.zhouzhuo810.Magpie:magpie-tv:1.4.4'
If you use this. That means you added dependencies below:
//v7
api 'com.android.support:appcompat-v7:28.0.0'
//RecyclerView
api 'com.android.support:recyclerview-v7:28.0.0'
//EventBus
api 'org.greenrobot:eventbus:3.1.1'
//RxJava2
api "io.reactivex.rxjava2:rxjava:2.2.10"
//RxAndroid2
api 'io.reactivex.rxjava2:rxandroid:2.1.1'
//zz-horizontal-progressbar
api 'me.zhouzhuo.zzhorizontalprogressbar:zz-horizontal-progressbar:1.1.0'
//AndPermission
api 'com.yanzhenjie.permission:support:2.0.1'
//ToastUtils
api 'com.hjq:toast:8.0'
- Add UI Design size in your AndroidManifest.xml.
<!--设计图的宽,单位是像素,推荐用markman测量-->
<meta-data
android:name="design_width"
android:value="1080" />
<!--设计图的高,单位是像素,推荐用markman测量,(可选配置项,配置了design_height则按宽高缩放,否则只按design_width缩放)-->
<meta-data
android:name="design_height"
android:value="1920"/>
<!--设计图对应的标准dpi,根据下面的那张图找到对应的dpi,比如1080就对应480dpi,如果拿到的是其他宽度的设计图,那么选择一个相近的dpi就好了-->
<!--
宽 240 320 480 720 1080 1440
DPI等级 LDPI MDPI HDPI XHDPI XXHDPI XXXHDPI
DPI数值 120 160 240 320 480 640
-->
<meta-data
android:name="design_dpi"
android:value="480" />
<!--全局字体的大小倍数,有时候老板会觉得你的所有的字小了或者大了,你总不能一个一个去改吧-->
<meta-data
android:name="font_size"
android:value="1.0" />
<!--你的布局里面用的是px这就写px,你的布局里面用的是dp这就写dp,要统一,不要一会儿px一会儿dp,字体也用px或者dp,不要用sp,微信qq用的肯定不是sp.-->
<meta-data
android:name="unit"
android:value="px" />
- init Magpie Context in your custom Application.
//方式1 (推荐)
public class MyApplication extends BaseApplication {
@Override
public void onCreate() {
super.onCreate();
//初始化8.0通知渠道
NoticeUtil.initNoticeChannel("您的渠道id", "您的渠道名称", "您的渠道描述", 0, true);
}
}
Or
//方式2
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
BaseUtil.init(this);
}
@Override
protected void attachBaseContext(Context base) {
if (shouldSupportMultiLanguage()) {
int language = SpUtil.getInt(base, Cons.SP_KEY_OF_CHOOSED_LANGUAGE);
switch (language) {
case LanguageUtil.SIMPLE_CHINESE:
super.attachBaseContext(LanguageUtil.attachBaseContext(base, Cons.SIMPLIFIED_CHINESE));
break;
case LanguageUtil.TRADITIONAL_CHINESE:
super.attachBaseContext(LanguageUtil.attachBaseContext(base, Cons.TRADITIONAL_CHINESE));
break;
case LanguageUtil.ENGLISH:
super.attachBaseContext(LanguageUtil.attachBaseContext(base, Cons.ENGLISH));
break;
case LanguageUtil.VI:
super.attachBaseContext(LanguageUtil.attachBaseContext(base, Cons.VI));
break;
}
} else {
super.attachBaseContext(base);
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (shouldSupportMultiLanguage()) {
LanguageUtil.updateApplicationLanguage();
}
SimpleUtil.resetScale(this);
}
}
-
ok, Just use
px
unit in your layout. -
If you do not use BaseActivity, Then you should invoke the method
ScreenAdapterUtil.getInstance().loadView(getWindow().getDecorView());
inActivity#onCreate()
method aftersetContentView()
. -
If you do not use BaseFragment, Then you should invoke the method
ScreenAdapterUtil.getInstance().loadView(view);
inFragment#onCreateView()
method afterinflate()
. -
If you do not use LvBaseAdapter or RvBaseAdapter, Then you should invoke the method
ScreenAdapterUtil.getInstance().loadView(view);
when you create ViewHolder. -
If you want to use in custom View, you should invoke the method
ScreenAdapterUtil.getInstance().getScaledValue(int);
when you what to scale the dynamic value. -
If you don't want to use
ScreenAdapterUtil.getInstance()
, just replace it withSimpleUtil
.
it supports:
- Multi-Language.
it supports:
- Multi-Style Dialog.
- Multi-Language support.
- Replace Fragment easily.
it supports:
- Multi-Style Dialog.
- Load data lazily.
- BaseUtil
This is the key util.
- ScreenAdapterUtil
It's use for screen Adapter.
- ApiUtil
It's for RxJava2+Retrofit2+OkHttp3 Api Creation.
- LanguageUtil
It's for Language Setting.
- KeyboardUtil
It's for Software Keyboard operating.
- ApkUtil
It's for Apk Installation.
- BarUtils
It's for StatusBar Setting.
- SpUtil
It's use for SharedPreferences.
- StrUtil
It's use for String operating.
- FileUtil
It's use for File operating.
- DateUtil
It's use for Date operating.
- RxHelper
It's use for RxJava.
- CrashUtil
It's for UncaughtExceptionHandler.
- CopyUtil
It's for ClipboardManager.
- ImageUtil
It's for bitmap operating.
- ToastUtil
It's for simple Toast.
- NoticeUtil
It's for Notification.
- Indicator
It's for viewpager indicator.
- TabBar
It's for bottom navigation.
- TitleBar
It's same as ToolBar.
- MarkView
It's for bandage.
- SimpleSpinner
It's for using Spinner simply.
( These utils is added in v1.0.1.)
- ColorUtil
It's for color operating.
- EditUtil
It's for EditText operating.
- SimpleSpinner
It's for Spinner operating.
- FontUtil
It's for setting custom typeface in TextView.
- AssetsUtil
It's for converting file's content to String in Assets.
- SimpleUtil
It's for converting file's content to String in Assets.
- ShellUtil
It's for running shell command.
- NetworkUtil
It's for network status monitoring.
- CRC16
It's for CRC16 encryption.
- ByteUtil
It's for Byte operating.
- RandomUtil
It's for generate a random number.
- PackageUtil
It's for checking if app is installed.
- ShareUtil
It's for sharing Text or File to other app.
1.4.4 (Published)
- RxHelper参数int改成long;
1.4.3 (Published)
- 添加俄文和葡萄牙文支持;
1.4.2 (Published)
- 修复RvBaseAdapter数组越界问题;
1.4.1 (Published)
- 修复TV滚动控件滚动到底部减速问题;
- TitleBar添加
setOnLeftClickListener
方法。
1.4.0 (Published)
- 修复Application Context多语言获取strings不正确问题;
1.3.9 (Published)
- Change the max line of ListDialog to 2.
1.3.8 (Published)
- Fix showing
TwoBtnEditDialog
bugs in BaseActivity .
1.3.5 (Published)
- Fix
Toast
not show when Notification Permission closed.
1.3.4 (Published)
- Add vertical
GapLine
support forIndicator
.
1.3.3 (Published) 1.3.2 (Published)
- Fix
Indicator
several bugs. - Fix
MarkView
several bugs.
1.3.1 (Published)
- Add
icon_bg_selector.xml
. - Add
getFileToByteArrayFromAssets()
method toAssetsUtil
. - Upgrade support version to 28.0.0.
1.3.0 (Published)
- Add
AutoIconColor
attr inTabBar
.
1.2.9 (Published)
- Add
AutoIconColor
attr inTabBar
.
1.2.8 (Published)
- Fix
BaseActivity
several bugs. - Add
setEnable
inLvBaseAdapter
AndRvBaseAdapter
. - Add
FileChooser
util. - Add
OSUtils
util. - Add
PhotoUtil
util. - Add
StatusBarUtil
util.
1.2.7 (Published)
- Add
Indicator#updateText()
method inIndicator
.
1.2.6 (Published)
- Fix
CopyUrlActivity
's bugs in TV framework.
1.2.5 (Published)
- Add
NoticeUtil.initNoticeChannel()
method inNoticeUtil
; - Add
NoticeUtil.showNormalNoticeWithCopyAction()
method inNoticeUtil
; - Add
NoticeUtil.showNormalNoticeWithShareAction()
method inNoticeUtil
; - Add
PackageUtil
for checking if app is installed; - Add
ShareUtil
for sharing to other app; - Add
createApiWithCopyNotice
method inApiUtil
; - Add
createApiWithShareNotice
method inApiUtil
;
1.2.4 (Published)
- Add
UriUtil
; - Add
copyStream
method toIOUtil
; - Add
showNormalNoticeWithCopyAction
method inNoticeUtil
; - Add
CopyUrlActivity
for copy Notification.
1.2.3 (Published)
- Fix several bugs;
1.2.2 (Published)
- Add
BaseUtil#init(this)
toBaseApplication
;
1.2.1 (Published)
- Add
BaseApplication
; - Fix Application Context multiple language.
1.2.0 (Published)
- Add
vi
language support.
1.1.9 (Published)
- Add
design_height
meta-data option. - Fix
TabBar
several bugs.
1.1.8 (Published)
- Fix
findViewById
method inBaseFragment
of TV framework.
1.1.7 (Published)
- Add
cancelDisposable
method inBaseFragment
.
1.1.6 (Published)
- Add
RandomUtil
. - Fix several bugs of
ShineTextView
.
1.1.5 (Published)
- Add
cancelDisposable
method inBaseActivity
. - Add
timer
method inRxHelper
. - Add
interval
method inRxHelper
. - Add several methods in
ShineTextView
. - Fix several bugs in TV framework.
1.1.4 (Published)
- Remove
Retrofit2
in TV framework. - Add
Rxjava2
to TV framework.
1.1.3 (Published)
- Fix several Bugs.
- Add several methods in
DateUtil
. - Add
CRC16
. - Add
ByteUtil
.
1.1.2 (Published)
- Fix several Bugs.
1.1.1 (Published)
- Add
NetworkUtils
. - Add
ShellUtils
. - Add
getFontFromAssets
andgetFileContentFromAssets
methods inSimpleUtil
.
1.1.0 (Published)
- Add
SimpleUtil
. - Add
startAct
andstartActForResult
methods in BaseFragment and BaseActivity. - Add several methods in
FileUtil
.
1.0.9 (Published)
- Add
isLoading
andgetLoadingDialog
methods in BaseActivity.
1.0.8 (Published)
- Fix
Indicator
several bugs. - Fix
BaseFragment
several bugs.
1.0.7 (Published)
- Fix
LoadingDialog
several bugs.
1.0.6 (Published)
- Upgrade the version of
ZzHorizontalProgressBar
to1.0.9
for TV framework. - Fix
BaseActivity#lazyLoadData
bugs.
1.0.5 (Published)
- Fix
BaseActivity#addOrShowFragment
several bugs. - Add
BaseActivity#addOrShowFragmentCustomTag
methods.
1.0.4 (Published)
- Add
ScrollListRecyclerView
andScrollGridRecyclerView
widgets for TV framework. - Add
MapRecyclerView
andShineTextView
widgets for TV framework. - Add
FontUtil
andAssetsUtil
in Phone and TV. - Fixed several bugs.
1.0.3 (Published)
- Add
addOrShowFragment
andhideFragment
methods in BaseActivity.
1.0.2 (Published)
- TitleBar add
ttb_iconSize
attribute. - Add
shouldNotInvokeInitMethods
method to skip invokinginitView、initData、initEvent
in BaseActivity and BaseFragment.
1.0.1 (Published)
- Add ColorUtil.
- Add EditUtil.
- Add SimpleSpinner.
1.0.0 (Published)
- 2018/9/2 initial commit.
For magpie, see app/proguard-rules.pro
For magpie-tv, see app-tv/proguard-rules.pro
Copyright © zhouzhuo810
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.