懸浮的view在橫豎屏切換時如何改變大小?
阿新 • • 發佈:2019-01-07
1.通過註冊G-sensor獲得旋轉資料。
但是G-sensor傳上來的資料會快於Activity和view改變的時間。
2.Activity和view都能獲得橫豎屏切換的訊息,在onConfigurationChanged方法中處理。
一般懸浮的view跟Activity無法關聯,所以可以通過View的onConfigurationChanged方法來獲知橫豎屏轉換。
實現方法:1.自定義view,並且重寫onConfigurationChanged方法。
2.在View中實現監聽,在onConfigurationChanged中返回給監聽者處理。
3.在呼叫類中,向View註冊監聽,當方向豎屏切換時,呼叫mWm.updateViewLayout方法改變view的大小。
public class FloatFrameLayout extends FrameLayout {
private OnConfigurationChangedListener mConfigurationChangedListener;
public FloatFrameLayout(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public FloatFrameLayout(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public FloatFrameLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
protected void onConfigurationChanged(Configuration newConfig) {
if (mConfigurationChangedListener != null) {
mConfigurationChangedListener.onConfigurationChanged(newConfig);
}
super.onConfigurationChanged(newConfig);
}
public void setOnConfigurationChangedListener(OnConfigurationChangedListener listener) {
mConfigurationChangedListener = listener;
}
public interface OnConfigurationChangedListener {
boolean onConfigurationChanged(Configuration newConfig);
}
}
但是G-sensor傳上來的資料會快於Activity和view改變的時間。
2.Activity和view都能獲得橫豎屏切換的訊息,在onConfigurationChanged方法中處理。
一般懸浮的view跟Activity無法關聯,所以可以通過View的onConfigurationChanged方法來獲知橫豎屏轉換。
實現方法:1.自定義view,並且重寫onConfigurationChanged方法。
2.在View中實現監聽,在onConfigurationChanged中返回給監聽者處理。
3.在呼叫類中,向View註冊監聽,當方向豎屏切換時,呼叫mWm.updateViewLayout方法改變view的大小。
public class FloatFrameLayout extends FrameLayout {
private OnConfigurationChangedListener mConfigurationChangedListener;
public FloatFrameLayout(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public FloatFrameLayout(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public FloatFrameLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
protected void onConfigurationChanged(Configuration newConfig) {
if (mConfigurationChangedListener != null) {
mConfigurationChangedListener.onConfigurationChanged(newConfig);
}
super.onConfigurationChanged(newConfig);
}
public void setOnConfigurationChangedListener(OnConfigurationChangedListener listener) {
mConfigurationChangedListener = listener;
}
public interface OnConfigurationChangedListener {
boolean onConfigurationChanged(Configuration newConfig);
}
}