CoD*_*oDe 7 android view screen-orientation
我实现了onConfigurationChnage(..)来读取方向配置chnage上的视图高度和宽度值
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
Log.i(TAG, "onConfigurationChanged: "+newConfig.orientation+", "+height+", "+width + ", "+mTempeFrameLayout.getWidth());
}
Run Code Online (Sandbox Code Playgroud)
但它总是回复旧值,如果方向得到改变,它给出了最后的方向(可能)值.
使用displaymetrics的屏幕宽度/高度正确,但对于任何视图都不起作用.
任何人都有想法..如何在方向变化上得到正确的价值?
nit*_*oel 15
getWidth()在View布局时返回宽度,这意味着您需要等到它被绘制到屏幕上.在重新绘制新配置的视图之前调用onConfigurationChanged,因此我认为您不能在以后获得新的宽度.
@Override
public void onConfigurationChanged(Configuration newConfiguration) {
super.onConfigurationChanged(newConfiguration);
final View view = findViewById(R.id.scrollview);
ViewTreeObserver observer = view.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Log.v(TAG,
String.format("new width=%d; new height=%d", view.getWidth(),
view.getHeight()));
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5003 次 |
| 最近记录: |