-
Notifications
You must be signed in to change notification settings - Fork 85
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Add] - 添加多种内置主题,一行代码可以切换 - 为默认布局添加百分比 TextView,适配各种屏幕
- Loading branch information
Showing
15 changed files
with
307 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
15 changes: 15 additions & 0 deletions
15
filepicker/src/main/java/me/rosuh/filepicker/utils/PercentLayoutUtils.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package me.rosuh.filepicker.utils; | ||
|
||
/** | ||
* created by wuzhiming on 2018/10/26 | ||
*/ | ||
public class PercentLayoutUtils { | ||
|
||
|
||
public static int DESIGN_SCREEN_HEIGHT = 1920; | ||
|
||
public static void setDesignScreenHeight(int baseScreenHeight) { | ||
DESIGN_SCREEN_HEIGHT = baseScreenHeight; | ||
} | ||
|
||
} |
88 changes: 88 additions & 0 deletions
88
filepicker/src/main/java/me/rosuh/filepicker/utils/PercentTextView.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
package me.rosuh.filepicker.utils; | ||
|
||
import android.content.Context; | ||
import android.content.res.TypedArray; | ||
import android.support.v7.widget.AppCompatTextView; | ||
import android.util.AttributeSet; | ||
import android.util.TypedValue; | ||
import android.view.ViewGroup; | ||
import me.rosuh.filepicker.R; | ||
|
||
/** | ||
* created by wuzhiming on 2018/10/24 | ||
* | ||
* 设置字体大小时,直接使用px,会自动转换 | ||
*/ | ||
public class PercentTextView extends AppCompatTextView { | ||
|
||
private float mHRatio = 1f; | ||
|
||
public PercentTextView(Context context) { | ||
super(context); | ||
init(context); | ||
} | ||
|
||
public PercentTextView(Context context, AttributeSet attrs) { | ||
super(context, attrs); | ||
init(context, attrs); | ||
} | ||
|
||
public PercentTextView(Context context, AttributeSet attrs, int defStyleAttr) { | ||
super(context, attrs, defStyleAttr); | ||
init(context, attrs); | ||
} | ||
|
||
private void init(Context context) { | ||
float screenHeight = ScreenUtils.getScreenHeightInPixel(context); | ||
mHRatio = screenHeight / PercentLayoutUtils.DESIGN_SCREEN_HEIGHT; | ||
setTextSize(getTextSize()); | ||
} | ||
|
||
private void init(Context context, AttributeSet attrs) { | ||
init(context); | ||
TypedArray arr = context.obtainStyledAttributes(attrs, R.styleable.PercentTextView); | ||
int paddingStart = arr.getDimensionPixelOffset(R.styleable.PercentTextView_android_paddingStart, 0); | ||
int paddingTop = arr.getDimensionPixelOffset(R.styleable.PercentTextView_android_paddingTop, 0); | ||
int paddingBottom = arr.getDimensionPixelOffset(R.styleable.PercentTextView_android_paddingBottom, 0); | ||
int paddingEnd = arr.getDimensionPixelOffset(R.styleable.PercentTextView_android_paddingEnd, 0); | ||
arr.recycle(); | ||
setPadding(paddingStart, paddingTop, paddingEnd, paddingBottom); | ||
} | ||
|
||
@Override | ||
public void setTextSize(int unit, float size) { | ||
size = (int)(size * mHRatio); | ||
super.setTextSize(unit, size); | ||
} | ||
|
||
@Override | ||
public void setTextSize(float size) { | ||
setTextSize(TypedValue.COMPLEX_UNIT_PX, size); | ||
} | ||
|
||
@Override | ||
public void setPadding(int left, int top, int right, int bottom) { | ||
left = (int) (left * mHRatio); | ||
top = (int) (top * mHRatio); | ||
right = (int) (right * mHRatio); | ||
bottom = (int) (bottom * mHRatio); | ||
super.setPadding(left, top, right, bottom); | ||
} | ||
|
||
@Override | ||
public void setLayoutParams(ViewGroup.LayoutParams params) { | ||
if (params instanceof ViewGroup.MarginLayoutParams) { | ||
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) params; | ||
layoutParams.leftMargin = (int) (layoutParams.leftMargin * mHRatio); | ||
layoutParams.topMargin = (int) (layoutParams.topMargin * mHRatio); | ||
layoutParams.rightMargin = (int) (layoutParams.rightMargin * mHRatio); | ||
layoutParams.bottomMargin = (int) (layoutParams.bottomMargin * mHRatio); | ||
layoutParams.setMarginStart((int) (layoutParams.getMarginStart() * mHRatio)); | ||
layoutParams.setMarginEnd((int) (layoutParams.getMarginEnd() * mHRatio)); | ||
super.setLayoutParams(layoutParams); | ||
return; | ||
} | ||
super.setLayoutParams(params); | ||
} | ||
|
||
} |
99 changes: 99 additions & 0 deletions
99
filepicker/src/main/java/me/rosuh/filepicker/utils/ScreenUtils.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
package me.rosuh.filepicker.utils; | ||
|
||
import android.app.Activity; | ||
import android.content.Context; | ||
import android.util.DisplayMetrics; | ||
import android.view.View; | ||
import android.view.WindowManager; | ||
|
||
/** | ||
* created by wuzhiming on 2018/10/24 | ||
*/ | ||
public class ScreenUtils { | ||
/** | ||
* dp 转 px | ||
* @param context | ||
* @param dipValue | ||
* @return | ||
*/ | ||
public static int dipToPx(Context context, float dipValue) { | ||
float m = context.getResources().getDisplayMetrics().density; | ||
return (int) (dipValue * m + 0.5f); | ||
} | ||
|
||
|
||
/** | ||
* px 转 dp | ||
* @param context | ||
* @param px | ||
* @return | ||
*/ | ||
public static float pxToDip(Context context, float px) { | ||
if (context == null) { | ||
return -1; | ||
} | ||
return px / context.getResources().getDisplayMetrics().density; | ||
} | ||
|
||
|
||
/** | ||
* sp 转 px | ||
* @param context | ||
* @param spValue | ||
* @return | ||
*/ | ||
public static int spToPx(Context context, float spValue) { | ||
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; | ||
return (int) (spValue * fontScale + 0.5f); | ||
} | ||
|
||
|
||
/** | ||
* 获得屏幕宽度像素 | ||
* @param context | ||
* @return | ||
*/ | ||
public static int getScreenWidthInPixel(Context context) | ||
{ | ||
WindowManager wm = (WindowManager) context | ||
.getSystemService(Context.WINDOW_SERVICE); | ||
DisplayMetrics outMetrics = new DisplayMetrics(); | ||
wm.getDefaultDisplay().getMetrics(outMetrics); | ||
int screenW = outMetrics.widthPixels; | ||
wm = null; | ||
return screenW; | ||
} | ||
|
||
/** | ||
* 获得屏幕高度像素 | ||
* @param context | ||
* @return | ||
*/ | ||
public static int getScreenHeightInPixel(Context context) { | ||
WindowManager wm = (WindowManager) context | ||
.getSystemService(Context.WINDOW_SERVICE); | ||
DisplayMetrics outMetrics = new DisplayMetrics(); | ||
wm.getDefaultDisplay().getMetrics(outMetrics); | ||
int screenH = outMetrics.heightPixels; | ||
wm = null; | ||
return screenH; | ||
} | ||
|
||
/** | ||
* 是否横屏 | ||
*/ | ||
public static boolean isLandScape(Context context) { | ||
return getScreenWidthInPixel(context) > getScreenHeightInPixel(context); | ||
} | ||
|
||
/** | ||
* 将像素转为 dp | ||
* @param context | ||
* @param pxValue 像素 | ||
* @return | ||
*/ | ||
public static int px2dp(Context context, float pxValue){ | ||
return (int)(pxValue / context.getResources().getDisplayMetrics().density); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<resources> | ||
|
||
<declare-styleable name="PercentTextView"> | ||
<attr name="android:paddingLeft"/> | ||
<attr name="android:paddingRight"/> | ||
<attr name="android:paddingTop"/> | ||
<attr name="android:paddingBottom"/> | ||
<attr name="android:paddingStart"/> | ||
<attr name="android:paddingEnd"/> | ||
</declare-styleable> | ||
|
||
</resources> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<resources> | ||
<color name="rail_color_primary">#434150</color> | ||
<color name="rail_color_primary_dark">#27262f</color> | ||
<color name="rail_color_accent">#00c381</color> | ||
<color name="rail_text_color">#fff</color> | ||
<color name="rail_textColor_Primary">#fff</color> | ||
|
||
<color name="reply_color_primary">#304956</color> | ||
<color name="reply_color_primary_dark">#d1dbe1</color> | ||
<color name="reply_color_accent">#ffa900</color> | ||
<color name="reply_text_color">#fff</color> | ||
<color name="reply_textColor_Primary">#fff</color> | ||
|
||
<color name="crane_color_primary">#7d005c</color> | ||
<color name="crane_color_primary_dark">#57003a</color> | ||
<color name="crane_color_accent">#f60000</color> | ||
<color name="crane_text_color">#fff</color> | ||
<color name="crane_textColor_Primary">#fff</color> | ||
|
||
<color name="shrine_color_primary">#ffd9cd</color> | ||
<color name="shrine_color_primary_dark">#f3d5d4</color> | ||
<color name="shrine_color_accent">#48282c</color> | ||
<color name="shrine_text_color">#48282c</color> | ||
<color name="shrine_textColor_Primary">#fff</color> | ||
</resources> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<resources> | ||
<dimen name="layout_constraintHorizontal_bias">0.0444</dimen> | ||
</resources> |
Oops, something went wrong.