2016-07-01 2 views
-1

は基本的に私の目標は、landscapeは常に信頼性の高い方向性を持っている

私の心に来て最初に考えたためportraitオリエンテーションと1/6画面の1/3に正確にいくつかのカスタムViewサイズを設定することです単にいくつかのmSize変数を計算し、このようOnMeasureViewにそれを設定することです:

mSize = (AContext.getScreenSize().x/(orientation == Configuration.ORIENTATION_PORTRAIT ? 3 : 6) 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     super.onMeasure(mSize|MeasureSpec.EXACTLY, mSize|MeasureSpec.EXACTLY); 
    } 

と私は回転までは、うまく働いています画面。事は、画面がView初期化を回転させ、サイジングされたときに前orientation値が実際に変更されますと呼ばれているということなので、その結果は、それが最初にportrait向きで開かれた場合、それは、1/3 landscapeも行くことであり、他の道の周りに。

私は私のような何かを行うことができますことを知っている:私のActivityためAndroidManifest

android:configChanges="orientation|screenSize" 

を回転を処理し、そこmSize値を変更するonConfigurationChangedをオーバーライドし、しかし、それはportrait間の自動選んを無効にし、 landscapeレイアウト.xmlファイルからinflatingに)。だから私は両方の方向のために同じxmlファイルで終わるよ。

orientationの値をcontext.getResources().getConfiguration().orientationから一貫して維持する方法はありますか?

またはIは、レイアウトが選んを有効にするためにonConfigurationChangeと、いくつかの回避策を行う必要がありますか?(私はあなたのコードでmauallyそれを行うにはしたくない)

それとも私の目標を達成するためのより良い方法があり、私は最初から間違っていますか?

私を助けてください。

+0

@MaximG、返信用のおかげで視野サイズの割合をASSINGが、私はかなりそれが私を助けることができる方法を見ることができないスロー導入を行くことができます。いくつかの性格確認のためには、私は、向きを変えたときの1/3と1/6のビューが必要です。ここでできるの?私が画面に表示されるのは、サイズのdp値です。 –

+0

treeviewobserverで試しましたか? – Memme

答えて

関連する問題