1. 程式人生 > >懸浮的view在橫豎屏切換時如何改變大小?

懸浮的view在橫豎屏切換時如何改變大小?

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);
    }

}