Skip to content

Commit

Permalink
🎨 ✨ 💄
Browse files Browse the repository at this point in the history
[Add]
- 添加多种内置主题,一行代码可以切换
- 为默认布局添加百分比 TextView,适配各种屏幕
  • Loading branch information
rosuH committed Nov 26, 2018
1 parent d9e9881 commit 45d66fb
Show file tree
Hide file tree
Showing 15 changed files with 307 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class FilePickerActivity : AppCompatActivity(), BaseQuickAdapter.OnItemClickList
val mFilesIsChecked: AtomicBoolean? = AtomicBoolean(false)

override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.FilePickerTheme)
setTheme(FilePickerManager.themeId)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_file_picker)
// 获取权限
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package me.rosuh.filepicker.config

import me.rosuh.filepicker.R
import me.rosuh.filepicker.config.StorageMediaTypeEnum.EXTERNAL_STORAGE

/**
Expand Down Expand Up @@ -36,4 +37,6 @@ object FilePickerManager {
var mediaStorageType: StorageMediaTypeEnum = EXTERNAL_STORAGE

var selfFilter: FileFilter?= null

var themeId:Int = R.style.FilePickerThemeRail
}
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;
}

}
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);
}

}
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);
}

}
2 changes: 1 addition & 1 deletion filepicker/src/main/res/drawable/btn_style.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<solid android:color="#5D58FF" />
<solid android:color="?attr/colorAccent" />

<corners
android:bottomLeftRadius="8dp"
Expand Down
2 changes: 1 addition & 1 deletion filepicker/src/main/res/drawable/ic_back.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<path
android:pathData="M60,33.013l-37.6463,0l15.8354,-15.8312l-4.1829,-4.1818l-23.0061,23l23.0061,23l4.1829,-4.1818l-15.8354,-15.8312l37.6463,0z"
android:strokeWidth="1"
android:fillColor="#fff"
android:fillColor="?android:attr/textColor"
android:fillType="nonZero"
android:strokeColor="#00000000"/>
</vector>
19 changes: 10 additions & 9 deletions filepicker/src/main/res/layout/activity_file_picker.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,33 +13,34 @@
android:id="@+id/cl_tool_bar_file_picker"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="#212121"
android:elevation="14dp"
android:elevation="7dp"
android:background="?attr/colorPrimary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.0875"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">

<android.support.v7.widget.AppCompatImageButton
android:id="@+id/btn_go_back_file_picker"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="0dp"
android:layout_height="0dp"
android:src="@drawable/ic_back"
style="@style/Widget.AppCompat.Button.Borderless"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="W, 1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0476"
app:layout_constraintHorizontal_bias="@dimen/layout_constraintHorizontal_bias"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.0667" />

<android.support.v7.widget.AppCompatTextView
<me.rosuh.filepicker.utils.PercentTextView
android:id="@+id/tv_toolbar_title_file_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回"
android:textColor="#fff"
android:textSize="34px"
android:textColor="?android:attr/textColor"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0571"
Expand All @@ -52,7 +53,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="图片全选"
android:textColor="#fff"
android:textColor="?android:attr/textColor"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/btn_confirm_file_picker"
app:layout_constraintHeight_percent="0.381"
Expand All @@ -66,9 +67,9 @@
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/btn_style"
android:text="确认"
android:textColor="#fff"
android:gravity="center"
android:text="确认"
android:textColor="?android:attr/textColorPrimary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.5238"
Expand Down
7 changes: 4 additions & 3 deletions filepicker/src/main/res/layout/item_list_file_picker.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,15 @@
app:layout_constraintHeight_percent="0.2857"
app:layout_constraintStart_toStartOf="parent" />

<TextView
<me.rosuh.filepicker.utils.PercentTextView
android:id="@+id/tv_list_file_picker"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:scrollHorizontally="true"
android:text="48sp"
android:textColor="@color/shrine_text_color"
android:textSize="34px"
app:layout_constraintBottom_toTopOf="@+id/space_bottom_file_picker"
app:layout_constraintEnd_toStartOf="@+id/guideline_file_picker"
app:layout_constraintHorizontal_bias="0.0691"
Expand All @@ -47,7 +48,7 @@
app:layout_constraintBottom_toTopOf="@+id/space_bottom_file_picker"
app:layout_constraintDimensionRatio="W, 1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0444"
app:layout_constraintHorizontal_bias="@dimen/layout_constraintHorizontal_bias"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/space_top_file_picker_file_picker"
app:layout_constraintWidth_percent="0.0667" />
Expand Down
1 change: 1 addition & 0 deletions filepicker/src/main/res/layout/item_nav_file_picker.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
android:ellipsize="middle"
android:singleLine="true"
android:textAllCaps="false"
android:textColor="@color/shrine_text_color"
app:layout_constraintBottom_toTopOf="@+id/space_bottom_file_picker"
app:layout_constraintHeight_percent="0.3681"
app:layout_constraintHorizontal_bias="0.0444"
Expand Down
13 changes: 13 additions & 0 deletions filepicker/src/main/res/values/attrs.xml
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>
26 changes: 26 additions & 0 deletions filepicker/src/main/res/values/colors.xml
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>
4 changes: 4 additions & 0 deletions filepicker/src/main/res/values/dimens.xml
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>
Loading

0 comments on commit 45d66fb

Please sign in to comment.