Skip to content

Commit 99daf21

Browse files
committed
update forceGetViewSize
1 parent 4dd5681 commit 99daf21

File tree

4 files changed

+60
-27
lines changed

4 files changed

+60
-27
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
#### 2016/08/01 新增获取SD卡路径,手机和设备进行分类,代码bug修改部分,小修排版,正在封装类
7373
#### 2016/08/02 wifi设置界面bug修复,注释排版还在修改,获取mac地址增加判空,新增QQ群:74721490,欢迎加入
7474
#### 2016/08/02 新增隐藏状态栏,注释更加全面,工具类已封装,写的时候真的是一个一个测试过去的,宝宝心里苦
75+
#### 2016/08/03 修复在onCreate中获取view尺寸的bug,MD5和SHA的Bug修复完成(在此感谢ssyijiu)
7576

7677

7778
##[关于Blankj](http://blankj.com/about)

about_log.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
#### 2016/08/01 新增获取SD卡路径,手机和设备进行分类,代码bug修改部分,小修排版,正在封装类
77
#### 2016/08/02 wifi设置界面bug修复,注释排版还在修改,获取mac地址增加判空,新增QQ群:74721490,欢迎加入
88
#### 2016/08/02 新增隐藏状态栏,注释更加全面,工具类已封装,写的时候真的是一个一个测试过去的,宝宝心里苦
9+
#### 2016/08/03 修复在onCreate中获取view尺寸的bug,MD5和SHA的Bug修复完成(在此感谢ssyijiu)

about_size.md

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,40 @@ public static float applyDimension(int unit, float value, DisplayMetrics metrics
6565
### 在onCreate()即可强行获取View的尺寸
6666
``` java
6767
/**
68-
* 在onCreate()即可获取View的尺寸
69-
*
70-
* @return 返回数组的第0个是宽,第1个是高,不要越界哦
71-
*/
72-
public static int[] forceGetViewSize(View view) {
73-
int widthMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
74-
int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
75-
view.measure(widthMeasureSpec, heightMeasureSpec);
76-
return new int[]{view.getMeasuredWidth(), view.getMeasuredHeight()};
68+
* 在onCreate()即可强行获取View的尺寸
69+
* 需回调onGetSizeListener接口,在onGetSize中获取view宽高
70+
* 用法示例如下所示
71+
* SizeUtils.forceGetViewSize(view);
72+
* SizeUtils.setListener(new SizeUtils.onGetSizeListener() {
73+
* @Override
74+
* public void onGetSize(View view) {
75+
* Log.d("tag", view.getWidth() + " " + view.getHeight());
76+
* }
77+
* });
78+
*/
79+
public static void forceGetViewSize(final View view) {
80+
view.post(new Runnable() {
81+
@Override
82+
public void run() {
83+
if (mListener != null) {
84+
mListener.onGetSize(view);
85+
}
86+
}
87+
});
7788
}
89+
90+
/**
91+
* 获取到View尺寸的监听
92+
*/
93+
public interface onGetSizeListener {
94+
void onGetSize(View view);
95+
}
96+
97+
public static void setListener(onGetSizeListener listener) {
98+
mListener = listener;
99+
}
100+
101+
private static onGetSizeListener mListener;
78102
```
79103

80104
### ListView中提前测量View尺寸

androidframework/src/main/java/com/blankj/androidframework/utils/SizeUtils.java

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ private SizeUtils() {
1717
throw new UnsupportedOperationException("u can't fuck me...");
1818
}
1919

20-
private static int[] size;
21-
2220
/**
2321
* dp转px
2422
*/
@@ -73,31 +71,40 @@ public static float applyDimension(int unit, float value, DisplayMetrics metrics
7371
return 0;
7472
}
7573

76-
public interface OnGetSizeListener {
77-
int[] onGetSize();
78-
}
79-
80-
public static OnGetSizeListener mListener;
8174
/**
82-
* 在onCreate()即可获取View的尺寸
83-
*
84-
* @return 返回数组的第0个是宽,第1个是高,不要越界哦
75+
* 在onCreate()即可强行获取View的尺寸
76+
* 需回调onGetSizeListener接口,在onGetSize中获取view宽高
77+
* 用法示例如下所示
78+
* SizeUtils.forceGetViewSize(view);
79+
* SizeUtils.setListener(new SizeUtils.onGetSizeListener() {
80+
* @Override
81+
* public void onGetSize(View view) {
82+
* Log.d("tag", view.getWidth() + " " + view.getHeight());
83+
* }
84+
* });
8585
*/
86-
public static int[] forceGetViewSize(final View view) {
87-
size = new int[2];
86+
public static void forceGetViewSize(final View view) {
8887
view.post(new Runnable() {
8988
@Override
9089
public void run() {
91-
size[0] = view.getWidth();
92-
size[1] = view.getHeight();
93-
mListener.onGetSize();
94-
Log.d("cmj", size[0] + " " + size[1]);
90+
if (mListener != null) {
91+
mListener.onGetSize(view);
92+
}
9593
}
9694
});
97-
Log.d("cmj", size[0] + " " + size[1]);
98-
return size;
9995
}
10096

97+
/**
98+
* 获取到View尺寸的监听
99+
*/
100+
public interface onGetSizeListener {
101+
void onGetSize(View view);
102+
}
103+
public static void setListener(onGetSizeListener listener) {
104+
mListener = listener;
105+
}
106+
private static onGetSizeListener mListener;
107+
101108
/**
102109
* ListView中提前测量View尺寸,如headerView
103110
* 用的时候去掉注释拷贝到ListView中即可

0 commit comments

Comments
 (0)