Skip to content

Commit ff2d74b

Browse files
author
hongyangAndroid
committed
fix dialog 内部view的context强转异常
1 parent d9ad7cb commit ff2d74b

File tree

5 files changed

+38
-27
lines changed

5 files changed

+38
-27
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ dependencies {
5555

5656
```
5757
dependencies {
58-
compile 'com.zhy:autolayout:1.2.0'
58+
compile 'com.zhy:autolayout:1.2.1'
5959
}
6060
```
6161

autolayout/autolayout.iml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<module external.linked.project.id=":autolayout" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="com.zhy" external.system.module.version="1.2.0" type="JAVA_MODULE" version="4">
2+
<module external.linked.project.id=":autolayout" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="com.zhy" external.system.module.version="1.2.1" type="JAVA_MODULE" version="4">
33
<component name="FacetManager">
44
<facet type="android-gradle" name="Android-Gradle">
55
<configuration>

autolayout/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
22
apply plugin: 'com.github.dcendents.android-maven'
33
apply plugin: 'com.jfrog.bintray'
44

5-
version = "1.2.0"
5+
version = "1.2.1"
66

77
android {
88
compileSdkVersion 23

autolayout/src/main/java/com/zhy/autolayout/AutoLayoutConifg.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import android.content.res.TypedArray;
99
import android.os.Build;
1010
import android.util.DisplayMetrics;
11-
import android.view.ViewGroup;
1211
import android.view.Window;
1312
import android.view.WindowManager;
1413

@@ -17,14 +16,15 @@
1716
*/
1817
public class AutoLayoutConifg
1918
{
19+
2020
private boolean mStatusBarAvailable;
2121
private static final String STATUS_BAR_HEIGHT_RES_NAME = "status_bar_height";
2222

2323

2424
DisplayMetrics outMetrics = new DisplayMetrics();
2525

2626
private int mAvailableWidth;
27-
private int mAvailaleHegiht;
27+
private int mAvailableHeight;
2828

2929

3030
private static final String KEY_DESIGN_WIDTH = "design_width";
@@ -39,9 +39,9 @@ public int getAvailableWidth()
3939
return mAvailableWidth;
4040
}
4141

42-
public int getAvailaleHeight()
42+
public int getAvailableHeight()
4343
{
44-
return mAvailaleHegiht;
44+
return mAvailableHeight;
4545
}
4646

4747
public int getDesignWidth()
@@ -54,33 +54,35 @@ public int getDesignHeight()
5454
return mDesignHeight;
5555
}
5656

57-
public void auto(Activity activity)
57+
public void auto(Context context)
5858
{
59-
auto(activity, true);
59+
auto(context, true);
6060
}
6161

6262

63-
public void auto(Activity activity, boolean ignoreStatusBar)
63+
public void auto(Context context, boolean ignoreStatusBar)
6464
{
65-
getMetaData(activity);
65+
getMetaData(context);
6666

67-
WindowManager wm = (WindowManager) activity.getSystemService(Context.WINDOW_SERVICE);
67+
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
6868
wm.getDefaultDisplay().getMetrics(outMetrics);
6969
mAvailableWidth = outMetrics.widthPixels;
70-
mAvailaleHegiht = outMetrics.heightPixels;
71-
mAvailaleHegiht -= getStatusHeight(activity.getResources());
70+
mAvailableHeight = outMetrics.heightPixels;
71+
mAvailableHeight -= getStatusHeight(context.getResources());
7272

7373
if (ignoreStatusBar)
7474
return;
7575

76-
checkStatusBar(activity);
76+
if (!(context instanceof Activity))
77+
return;
78+
checkStatusBar((Activity) context);
7779

7880
if (mStatusBarAvailable)
7981
{
80-
mAvailaleHegiht += getStatusHeight(activity.getResources());
82+
mAvailableHeight += getStatusHeight(context.getResources());
8183
}
8284

83-
L.e("mAvailableWidth =" + mAvailableWidth + " , mAvailaleHegiht = " + mAvailaleHegiht);
85+
L.e("mAvailableWidth =" + mAvailableWidth + " , mAvailableHeight = " + mAvailableHeight);
8486
}
8587

8688
private void getMetaData(Context context)
@@ -109,7 +111,6 @@ private void getMetaData(Context context)
109111
private void checkStatusBar(Activity activity)
110112
{
111113
Window win = activity.getWindow();
112-
ViewGroup decorViewGroup = (ViewGroup) win.getDecorView();
113114

114115
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
115116
{
@@ -150,5 +151,4 @@ private int getStatusHeight(Resources res)
150151

151152

152153

153-
154154
}

autolayout/src/main/java/com/zhy/autolayout/AutoLayoutHelper.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.zhy.autolayout;
1818

19-
import android.app.Activity;
2019
import android.content.Context;
2120
import android.content.res.TypedArray;
2221
import android.util.AttributeSet;
@@ -64,22 +63,34 @@ public class AutoLayoutHelper
6463
private static final String VAL_WRAP_CONTENT = "-2";
6564
private static final String VAL_MATCH_PARENT = "-1";
6665

66+
6767
/**
6868
* TODO move to other place
6969
*/
70-
private AutoLayoutConifg mAutoLayout;
70+
private static AutoLayoutConifg mAutoLayoutConifg;
7171

7272
public AutoLayoutHelper(ViewGroup host)
7373
{
7474
mHost = host;
75-
mAutoLayout = new AutoLayoutConifg();
75+
76+
if (mAutoLayoutConifg == null)
77+
{
78+
initAutoLayoutConfig(host);
79+
}
80+
81+
82+
}
83+
84+
private void initAutoLayoutConfig(ViewGroup host)
85+
{
86+
mAutoLayoutConifg = new AutoLayoutConifg();
7687

7788
boolean ignoreStatusBar = true;
7889
if (host.getContext() instanceof UseStatusBar)
7990
{
8091
ignoreStatusBar = false;
8192
}
82-
mAutoLayout.auto((Activity) host.getContext(), ignoreStatusBar);
93+
mAutoLayoutConifg.auto(host.getContext(), ignoreStatusBar);
8394
}
8495

8596

@@ -193,23 +204,23 @@ private void supportPadding(View view, AutoLayoutInfo info)
193204

194205
private int getAvailableWidth()
195206
{
196-
return mAutoLayout.getAvailableWidth();
207+
return mAutoLayoutConifg.getAvailableWidth();
197208
}
198209

199210
private int getAvailableHeight()
200211
{
201-
return mAutoLayout.getAvailaleHeight();
212+
return mAutoLayoutConifg.getAvailableHeight();
202213

203214
}
204215

205216
private int getDesignWidth()
206217
{
207-
return mAutoLayout.getDesignWidth();
218+
return mAutoLayoutConifg.getDesignWidth();
208219
}
209220

210221
private int getDesignHeight()
211222
{
212-
return mAutoLayout.getDesignHeight();
223+
return mAutoLayoutConifg.getDesignHeight();
213224
}
214225

215226

0 commit comments

Comments
 (0)