AdaptScreen
AdaptScreen copied to clipboard
屏幕适配工具,增加了适配较长/较短边功能。修改自 https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/README-CN.md#adaptscreen-%E7%9B%B8%E5%85%B3---adaptscreenutilsjava---demo
AdaptScreen 
屏幕适配工具,增加了适配较长/较短边功能。 修改自
https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/README-CN.md#adaptscreen-%E7%9B%B8%E5%85%B3---adaptscreenutilsjava---demo
原文章《Android 屏幕适配终结者》
https://blankj.com/2018/12/18/android-adapt-screen-killer/
添加依赖
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.licheedev:AdaptScreen:1.0.0'
}
如何在Android Studio
正确预览布局,请参考这里(点击图片查看)
使用参考
public class BaseActivity extends RxAppCompatActivity {
@Override
public Resources getResources() {
Resources resources = super.getResources();
return toModifyResource(resources);
}
/**
* 修改Resources
*
* @param originalResources 没动过手脚的Resources
* @return
*/
protected Resources toModifyResource(Resources originalResources) {
// 建议先在Application里面初始化 AdaptScreenEx.init(context);
return AdaptScreenEx.adaptShorter(originalResources, 1080); // 假如设计图短边为1080像素
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="540pt"
android:layout_height="match_parent"
android:background="#ff8585"
android:text="540pt" />
<TextView
android:layout_width="540pt"
android:layout_height="match_parent"
android:background="#8cf1ae"
android:text="540pt" />
</LinearLayout>
<TextView
android:layout_width="1080pt"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#9facec"
android:text="1080pt" />
</LinearLayout>
修改部分默认字体大小,参考 adapt_screen_style.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textAppearance">@style/MyTextAppearance</item>
<item name="android:textAppearanceInverse">@style/MyTextAppearanceInverse</item>
<item name="android:textAppearanceSmall">@style/MyTextAppearanceSmall</item>
<item name="android:textAppearanceMedium">@style/MyTextAppearanceMedium</item>
<item name="android:textAppearanceLarge">@style/MyTextAppearanceLarge</item>
<item name="android:textAppearanceSmallInverse">@style/MyTextAppearanceSmallInverse</item>
<item name="android:textAppearanceMediumInverse">@style/MyTextAppearanceMediumInverse</item>
<item name="android:textAppearanceLargeInverse">@style/MyTextAppearanceLargeInverse</item>
<item name="android:textAppearanceButton">@style/MyTextAppearanceButton</item>
<item name="android:editTextStyle">@style/MyTextAppearanceEditText</item>
</style>
<!--Android默认的字体大小-->
<!--<dimen name="text_size_small_material">14sp</dimen>-->
<!--<dimen name="text_size_medium_material">18sp</dimen>-->
<!--<dimen name="text_size_large_material">22sp</dimen>-->
<!--对普通5英寸1080P手机一般是xxhdpi,对比mdpi是3倍,所以这里的字体对应的弄成3倍的数值-->
<!--如果是适配ios的750P分辨的话,对应Android的就是xhdpi,那么就要改下面的数值改成2倍的-->
<!--往App的主题加入下面属性-->
<!--<item name="android:textAppearance">@style/MyTextAppearance</item>-->
<!--<item name="android:textAppearanceInverse">@style/MyTextAppearanceInverse</item>-->
<!--<item name="android:textAppearanceSmall">@style/MyTextAppearanceSmall</item>-->
<!--<item name="android:textAppearanceMedium">@style/MyTextAppearanceMedium</item>-->
<!--<item name="android:textAppearanceLarge">@style/MyTextAppearanceLarge</item>-->
<!--<item name="android:textAppearanceSmallInverse">@style/MyTextAppearanceSmallInverse</item>-->
<!--<item name="android:textAppearanceMediumInverse">@style/MyTextAppearanceMediumInverse</item>-->
<!--<item name="android:textAppearanceLargeInverse">@style/MyTextAppearanceLargeInverse</item>-->
<!--<item name="android:textAppearanceButton">@style/MyTextAppearanceButton</item>-->
<!--<item name="android:editTextStyle">@style/MyTextAppearanceEditText</item>-->
<dimen name="small_text_size">42pt</dimen>
<dimen name="medium_text_size">54pt</dimen>
<dimen name="large_text_size">66pt</dimen>
<style name="MyTextAppearance" parent="TextAppearance.AppCompat">
<item name="android:textSize">@dimen/small_text_size</item>
</style>
<style name="MyTextAppearanceInverse" parent="TextAppearance.AppCompat.Inverse">
<item name="android:textSize">@dimen/small_text_size</item>
</style>
<style name="MyTextAppearanceSmall" parent="TextAppearance.AppCompat.Small">
<item name="android:textSize">@dimen/small_text_size</item>
</style>
<style name="MyTextAppearanceSmallInverse" parent="TextAppearance.AppCompat.Small.Inverse">
<item name="android:textSize">@dimen/small_text_size</item>
</style>
<style name="MyTextAppearanceMedium" parent="TextAppearance.AppCompat.Medium">
<item name="android:textSize">@dimen/medium_text_size</item>
</style>
<style name="MyTextAppearanceMediumInverse" parent="TextAppearance.AppCompat.Medium.Inverse">
<item name="android:textSize">@dimen/medium_text_size</item>
</style>
<style name="MyTextAppearanceLarge" parent="TextAppearance.AppCompat.Large">
<item name="android:textSize">@dimen/large_text_size</item>
</style>
<style name="MyTextAppearanceLargeInverse" parent="TextAppearance.AppCompat.Large.Inverse">
<item name="android:textSize">@dimen/large_text_size</item>
</style>
<style name="MyTextAppearanceButton" parent="TextAppearance.AppCompat.Button">
<item name="android:textSize">@dimen/small_text_size</item>
</style>
<style name="MyTextAppearanceEditText" parent="Widget.AppCompat.EditText">
<item name="android:textSize">@dimen/small_text_size</item>
</style>