2010-11-30 11 views
4

私はいくつかのAndroidの開発者は、宣言型レイアウトのこのフォームを促進することを見てきました:(IDを含む)ほとんどすべての属性は、スタイル定義に入るすべてのAndroidビューの属性をスタイルに入れる必要がありますか?

<TextView style="@style/my_textview_style" /> 

すなわち。それは確かに短いレイアウトファイルを作成しますが、それはあまりにも一歩先ですか?

スタイル定義には何がおすすめされていますか、レイアウトには何が残っていますか、その理由は何ですか?

私は今年Androidデベロッパーを始めましたが、以前の開発経験があります。このような問題は非常に重要です。私たちがツールや習慣をより効率的に使う「方法」です。わかりやすさ、効率性、保守性、アプリケーションの信頼性について、あなたの意見を共有していただきありがとうございます。

+1

あなたが何度も何度もコピー/貼り付けをすると、スタイルに入るはずです:) – schwiz

答えて

3

私はこの非常に疑問を熟考しており、複数のデバイスサイズと密度を扱うときは、はるかに適切です。

スタイルに情報をあまりにも多く入れすぎると、特に横向きと縦向きのレイアウトを扱うときに、その使用が制限される可能性があります。例えば、ランドスケープレイアウトは、実際には組成が全く異なるが、非常に似たスタイルを必要とする。

このような場合は、を使用すると便利です。例えば、スタイルの相違を告げる表記法。

<MyPage> 
<MyPage.portrait> 
<MyPage.landscape> 

上記のスタイル作成方法については、以下を参照してください。

MyPageはレイアウトの共通プロパティを定義し、これらの値をポートレイトとランドスケープ拡張でオーバーライドします。

I..eよりも、左右のパディングが似ているかもしれません。

私が見つけた問題は、テーマやスタイルxmlファイルが巨大になるということです。特に私のように多くのアクティビティがある場合は、多くの創造的な変更に取り組むと、多くの混乱した定義に終わる可能性があります。

この時点で在庫を取り、整頓して再調整する必要があります。

私の唯一のアドバイスは、本当にうまく前もって計画することです。プロジェクトに対応した命名システムを定義し、書き留めてそれに固執する。

テーマに、同様のアプローチを採用しなければならない

<section>_<componentName>_<componentType>_<orientation> 

home_leftPanel_btn_horizontal 
home_leftPanel_listview 
home_leftPanel_listview_horizontal 

可能なスタイルの命名規則。

私はまだこれを実行していますので、完全な例はありません。

+0

レイアウトを試してみると、レイアウトをすべてのプロパティで直接編集する方がはるかに簡単です。私はその後、プロパティのグループを再利用できる、明確に定義されたスタイルにリファクタリングするかもしれません。たとえば、私はcommon.wrap_contentスタイルを持っていて、幅と高さのためにwrap_contentが設定されています。 – Emile

1

アプリケーションのスキニングを異なる方法を計画する場合は、これらのことをスタイルに適用することをお勧めします。異なる外観の2つのバージョンをリリースする予定がある場合は、それらをスタイルにプッシュしてください。あなたが言うように、あなたのレイアウトファイルをきれいに整理します。

IDをスタイルにプッシュする必要があります。いいえIDはあなたがコードでこれらのオブジェクトへの参照を取得するフックです。私はあなたのプログラムがIDを外部化することを常に指摘することはほとんどできません。だから私は練習が遠すぎると言いたい。

これを毎回行う必要がありますか?まあ、それは本当にあなたがアプリケーションをreskinするためにもたらす利益が必要と思うかどうかに依存すると思います。何人かは良いアイデアを言うことはできませんし、常に良いアイデアを試してみてください。これは素晴らしいことですが、それは生産的ではありません。あなたが必要としている良いアイデアや、現在取り組んでいるこのアプリケーションの良いアイデアだけを知っている経験があります。自分自身を生産的にするためには、私たちがより速く動く良いアイデアだけが必要で、他のすべてのアイデアはただのアートです。どのように選ぶのですか?リファクタリング、リファクタリング、リファクタリング。私が取り組んでいる次の要件に基づいてそれをクリーンアップするために、それを高速化してからリファクタリングします。速くしてから、リファクタリングしてください。私の上司が微笑むまで繰り返す。

関連する問題