Skip to content

Commit

Permalink
v1.1.4
Browse files Browse the repository at this point in the history
  • Loading branch information
SiberiaDante committed Aug 11, 2018
1 parent 5dbe410 commit dcd87d0
Show file tree
Hide file tree
Showing 7 changed files with 207 additions and 81 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@ SDTitleLayout 常规的能够满足开发需求的标题栏的封装,并


## [版本更新说明]
* v1.1.4(未发布)
* v1.1.4
* 增加屏幕适配方案,几行代码轻松实现屏幕适配
* SDLineEditText:增加下划线高度、下划线paddingTop
* SDTitleLayout:修复设置左右图片Padding造成的问题
* SDBottomItemDialog:支持Item颜色、字体大小设置;支持底部取消按钮隐藏;支持Item超过7条时滚动显示或者全部显示
Expand Down
4 changes: 2 additions & 2 deletions androidutil/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ android {
defaultConfig {
minSdkVersion rootProject.ext.midSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 113
versionName "1.1.3"
versionCode 114
versionName "1.1.4"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Build;
Expand Down Expand Up @@ -327,5 +328,51 @@ public static void setSleepDuration(int duration) {
Settings.System.putInt(SDAndroidLib.getContext().getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, duration);
}

public static void adaptScreenPortrait(final Activity activity,
final int designWidthInPx) {
adaptScreen(activity, designWidthInPx, true);
}

private static void adaptScreen(final Activity activity,
final int sizeInPx,
final boolean isVerticalSlide) {
final DisplayMetrics systemDm = Resources.getSystem().getDisplayMetrics();
final DisplayMetrics appDm = SDAndroidLib.getContext().getResources().getDisplayMetrics();
final DisplayMetrics activityDm = activity.getResources().getDisplayMetrics();
if (isVerticalSlide) {
activityDm.density = activityDm.widthPixels / (float) sizeInPx;
} else {
activityDm.density = activityDm.heightPixels / (float) sizeInPx;
}
activityDm.scaledDensity = activityDm.density * (systemDm.scaledDensity / systemDm.density);
activityDm.densityDpi = (int) (160 * activityDm.density);

appDm.density = activityDm.density;
appDm.scaledDensity = activityDm.scaledDensity;
appDm.densityDpi = activityDm.densityDpi;
}

public static void adaptScreenLandscape(final Activity activity,
final int designHeightInPx) {
adaptScreen(activity, designHeightInPx, false);
}

public static void cancelAdaptScreen(final Activity activity) {
final DisplayMetrics systemDm = Resources.getSystem().getDisplayMetrics();
final DisplayMetrics appDm = SDAndroidLib.getContext().getResources().getDisplayMetrics();
final DisplayMetrics activityDm = activity.getResources().getDisplayMetrics();
activityDm.density = systemDm.density;
activityDm.scaledDensity = systemDm.scaledDensity;
activityDm.densityDpi = systemDm.densityDpi;

appDm.density = systemDm.density;
appDm.scaledDensity = systemDm.scaledDensity;
appDm.densityDpi = systemDm.densityDpi;
}

public static boolean isAdaptScreen() {
final DisplayMetrics systemDm = Resources.getSystem().getDisplayMetrics();
final DisplayMetrics appDm = SDAndroidLib.getContext().getResources().getDisplayMetrics();
return systemDm.density != appDm.density;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@
import android.view.View;
import android.widget.RadioGroup;

import com.siberiadante.androidutil.util.SDScreenUtil;
import com.siberiadante.androidutil.widget.radiobutton.SDNotifyRadioButton;
import com.siberiadante.androidutil.widget.radiobutton.SDDrawableRadioButton;
import com.siberiadante.utilsample.R;
import com.siberiadante.utilsample.activity.base.BaseActivity;
import com.siberiadante.utilsample.adapter.MainActivityAdapter;
import com.siberiadante.utilsample.fragment.SDUtilFragment;
import com.siberiadante.utilsample.fragment.SDWidgetFragment;
Expand All @@ -31,8 +33,8 @@
import butterknife.BindView;
import butterknife.ButterKnife;

public class HomeMainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener , ViewPager.OnPageChangeListener, RadioGroup.OnCheckedChangeListener {
public class HomeMainActivity extends BaseActivity
implements NavigationView.OnNavigationItemSelectedListener, ViewPager.OnPageChangeListener, RadioGroup.OnCheckedChangeListener {

@BindView(R.id.toolbar)
Toolbar toolbar;
Expand All @@ -54,19 +56,34 @@ public class HomeMainActivity extends AppCompatActivity
NavigationView navigationView;
@BindView(R.id.drawer_layout)
DrawerLayout drawerLayout;
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_home_main);
// ButterKnife.bind(this);
// initView();
// initData();
// }


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_main);
ButterKnife.bind(this);
initView();
initData();
public void beforeSetContentView() {
super.beforeSetContentView();
if (SDScreenUtil.isPortrait()) {
SDScreenUtil.adaptScreenPortrait(this, 360);
} else {
SDScreenUtil.adaptScreenLandscape(this, 360);
}
}

@Override
public int setLayoutId() {
return R.layout.activity_home_main;
}

@Override
public void initView(Bundle savedInstanceState) {

private void initView() {
setSupportActionBar(toolbar);
fab.setOnClickListener(new View.OnClickListener() {
@Override
Expand All @@ -84,7 +101,24 @@ public void onClick(View view) {
navigationView.setNavigationItemSelectedListener(this);
}

private void initData() {
// private void initData() {
// List<Fragment> fragments = new ArrayList<>();
// fragments.add(SDUtilFragment.getInstance());
// fragments.add(SDViewFragment.getInstance());
// fragments.add(SDWidgetFragment.getInstance());
// fragments.add(PracticeFragment.getInstance());
// viewPager.setAdapter(new MainActivityAdapter(getSupportFragmentManager(), fragments));
// viewPager.setCurrentItem(0);
// viewPager.setOffscreenPageLimit(4);
// viewPager.addOnPageChangeListener(this);
// rgMain.setOnCheckedChangeListener(this);
// rbOne.setChecked(true);
// }


@Override
public void initData() {
super.initData();
List<Fragment> fragments = new ArrayList<>();
fragments.add(SDUtilFragment.getInstance());
fragments.add(SDViewFragment.getInstance());
Expand All @@ -98,6 +132,12 @@ private void initData() {
rbOne.setChecked(true);
}

@Override
protected void onDestroy() {
super.onDestroy();
SDScreenUtil.cancelAdaptScreen(this);
}

@Override
public void onBackPressed() {
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,15 @@

import com.jude.swipbackhelper.SwipeBackHelper;
import com.siberiadante.androidutil.util.SDKeyBoardUtil;
import com.siberiadante.androidutil.util.SDScreenUtil;
import com.siberiadante.utilsample.listener.RequestPermissionCallBack;

import butterknife.ButterKnife;

public abstract class BaseActivity extends AppCompatActivity {
private final int mRequestCode = 1024;
public ActionBar actionBar;
private RequestPermissionCallBack mRequestPermissionCallBack;
private final int mRequestCode = 1024;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
Expand Down Expand Up @@ -61,7 +62,11 @@ public void beforeSetContentView() {
.setSwipeEdge(200)
.setSwipeRelateEnable(true)
.setSwipeRelateOffset(300);

// if (SDScreenUtil.isPortrait()) {
// SDScreenUtil.adaptScreenPortrait(this, 360);
// } else {
// SDScreenUtil.adaptScreenLandscape(this, 360);
// }
}

public abstract int setLayoutId();
Expand All @@ -82,25 +87,66 @@ public void onPostCreate(@Nullable Bundle savedInstanceState) {
protected void onDestroy() {
super.onDestroy();
SwipeBackHelper.onDestroy(this);
// SDScreenUtil.cancelAdaptScreen(this);
}

//软键盘的处理——Start

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if (isTouchView(filterViewByIds(), ev)) return super.dispatchTouchEvent(ev);
if (hideSoftByEditViewIds() == null || hideSoftByEditViewIds().length == 0)
return super.dispatchTouchEvent(ev);
View v = getCurrentFocus();
if (isFocusEditText(v, hideSoftByEditViewIds())) {
if (isTouchView(hideSoftByEditViewIds(), ev))
return super.dispatchTouchEvent(ev);
//隐藏键盘
SDKeyBoardUtil.hideInputForce(this);
clearViewFocus(v, hideSoftByEditViewIds());

}
}
return super.dispatchTouchEvent(ev);
}

/**
* 清除editText的焦点
*
* @param v 焦点所在View
* @param ids 输入框
* 是否触摸在指定view上面,对某个控件过滤
*/
public void clearViewFocus(View v, int... ids) {
if (null != v && null != ids && ids.length > 0) {
for (int id : ids) {
if (v.getId() == id) {
v.clearFocus();
break;
}
public boolean isTouchView(View[] views, MotionEvent ev) {
if (views == null || views.length == 0) return false;
int[] location = new int[2];
for (View view : views) {
view.getLocationOnScreen(location);
int x = location[0];
int y = location[1];
if (ev.getX() > x && ev.getX() < (x + view.getWidth())
&& ev.getY() > y && ev.getY() < (y + view.getHeight())) {
return true;
}
}
return false;
}

/**
* 传入要过滤的View
* 过滤之后点击将不会有隐藏软键盘的操作
*
* @return id 数组
*/
public View[] filterViewByIds() {
return null;
}

/**
* 传入EditText的Id
* 没有传入的EditText不做处理
*
* @return id 数组
*/
public int[] hideSoftByEditViewIds() {
return null;
}

/**
Expand All @@ -122,24 +168,6 @@ public boolean isFocusEditText(View v, int... ids) {
return false;
}

/**
* 是否触摸在指定view上面,对某个控件过滤
*/
public boolean isTouchView(View[] views, MotionEvent ev) {
if (views == null || views.length == 0) return false;
int[] location = new int[2];
for (View view : views) {
view.getLocationOnScreen(location);
int x = location[0];
int y = location[1];
if (ev.getX() > x && ev.getX() < (x + view.getWidth())
&& ev.getY() > y && ev.getY() < (y + view.getHeight())) {
return true;
}
}
return false;
}

/**
* 是否触摸在指定view上面,对某个控件过滤
*/
Expand All @@ -159,48 +187,25 @@ public boolean isTouchView(int[] ids, MotionEvent ev) {
return false;
}

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if (isTouchView(filterViewByIds(), ev)) return super.dispatchTouchEvent(ev);
if (hideSoftByEditViewIds() == null || hideSoftByEditViewIds().length == 0)
return super.dispatchTouchEvent(ev);
View v = getCurrentFocus();
if (isFocusEditText(v, hideSoftByEditViewIds())) {
if (isTouchView(hideSoftByEditViewIds(), ev))
return super.dispatchTouchEvent(ev);
//隐藏键盘
SDKeyBoardUtil.hideInputForce(this);
clearViewFocus(v, hideSoftByEditViewIds());

}
}
return super.dispatchTouchEvent(ev);
}

/**
* 传入EditText的Id
* 没有传入的EditText不做处理
*
* @return id 数组
*/
public int[] hideSoftByEditViewIds() {
return null;
}

/**
* 传入要过滤的View
* 过滤之后点击将不会有隐藏软键盘的操作
* 清除editText的焦点
*
* @return id 数组
* @param v 焦点所在View
* @param ids 输入框
*/
public View[] filterViewByIds() {
return null;
public void clearViewFocus(View v, int... ids) {
if (null != v && null != ids && ids.length > 0) {
for (int id : ids) {
if (v.getId() == id) {
v.clearFocus();
break;
}
}
}
}

//软键盘的处理——End


/**
* 权限请求结果回调
*
Expand Down
Loading

0 comments on commit dcd87d0

Please sign in to comment.