2011-06-17 5 views
3

私はこれを理解しようとしている私の知恵の終わりにあり、解決策を持っている人がいることを願っています。Androidのカスタムレイアウトの作成に関するチュートリアル?

Android Appのカ​​スタムレイアウトを作成したいと考えています。これは理論的にはまっすぐに進むはずですが、その方法についての有益な情報はありません。

私が探しているもの: 1)ViewGroupをサブクラス化してカスタムレイアウトを作成する方法に関する簡単なステップバイステップのチュートリアル。 2)子ビューにアクセスする方法、子ビューに自分自身を描画する方法と時期、カスタムレイアウト用のXMLを定義する方法、カスタムxml属性にアクセスする方法などの内部メカニズムの基本的な理解

私はインターネット上を見渡しましたが、小さなチーフビットしか見つけられず、サブクラスを作成することもできませんでした。

私は見つけました 1)話はhttp://parleys.com/#id=2191&sl=3&st=5にありますが、購読を求める数分後に切断されます。 2)APIリファレンスはhttp://developer.android.com/reference/android/view/ViewGroup.htmlですが、実際にサブクラスを実装する方法については何の手がかりも与えていません。

+0

あなたが本のために解決するならば、私はこの記事を_Body Coderの高度なAndroid開発ガイド_でカバーしたことを知っています。それは他の書籍にも載っていると思います。 – CommonsWare

+0

よろしくお願いいたします。ありがとうございます。 –

答えて

2

これが見つかりました。それは何のためにも複雑です。

Tutorial

アンドロイドのサポートには多くの絶対的なレイアウトはありません。 私はちょうどXメソッドを設定したいです。 FrameLayoutは最適なオプションです。 もご覧ください: stackoverflow answer

FrameLayoutでは、絶対位置に似た位置と寸法を設定できます。使用後の // POSTメソッドがあることを意味 -

// X用とyあなたは

//ベストな方法セットアップの幅と高さのためのonCreateを使用することができます:あなたはより深い行きたい場合は、次のメソッドを使用する必要がありますUIは準備ができている

VEIW_MAIN = (ViewGroup) findViewById(R.id.activity_main); 

    VEIW_MAIN.post(new Runnable() { 
      @Override 
      public void run() { 

       LayoutParams paraBigText = BigText.getLayoutParams(); 
       Double d24 = 200.0; 
       paraBigText.width = d24.intValue(); 
       BigText.setLayoutParams(paraBigText); 
       BigText.setGravity(Gravity.CENTER_HORIZONTAL); 

      } 
     }); 

...

ViewTreeObserver vto = SOME_ELEMENT.getViewTreeObserver(); 
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener()  
{ 
    public boolean onPreDraw() { 

     // changes here 
     return true; 
    } 
}); 

...

このいくつかの修正を使用する必要がある場合:本当に場合 Set position by percent - Android DisplayMetrics

他の方法で:

if (EKRAN.WIDTH() <= 480) 
      { 
       FIX_FOR_480_WIDTH(); 
      } 
      else if (EKRAN.WIDTH() == 540) { 
       FIX_FOR_540_WIDTH(); 
      } 
      else if (EKRAN.WIDTH() == 720) { 
       FIX_FOR_720_WIDTH(); 
      } 
      else if (EKRAN.WIDTH() == 1080) { 
       FIX_FOR_1080_WIDTH(); 
      } 

...

void FIX_FOR_540_WIDTH() 
    { 
     System.out.println("FIX FUNCTION FOR 540 low width !!!!!!!"); 
     SOMEELEMENT.setY(0.865f * EKRAN.HEIGHT()); 
    } 

...

コピー画面クラスから完全なカスタム注文をしたい場合は、canvas2dを使用して独自のUIを作成してください。

+0

笑............ –

関連する問題