この愚かさを見つけるかもしれませんが、私はIDEが好きではありません。 通常、すべての作業はvim + tmux +端末で行います。 IDEのすべての利点を認識しています。優れたテキストエディターの方が便利です。 しかし、これはそれについてではありません。
Android向けに何かを書くとき、XML(マークアップ、スタイル、行など)を編集することがよくあります。 したがって、テキストエディターでは、これはあまり便利ではありません。 そして、数時間を費やして、簡略化されたマークアップ言語(CSSのlesscssやスタイラスなど)に基づいてXMLジェネレーターを作成することにしました。 それでも、
NIHは非常に誘惑的な刺激です。
AAML言語(別のAndroidマークアップ言語)は、非常に単純な構文で判明しました。 要素はコロンで始まります。 コンマ(または改行)は属性を分離します。 タブ(またはスペース、またはその両方)は、要素のネストを決定します。 コメントはポンドで始まります。 いくつかの単純なレイアウトは次のようになります。
このようなAAMLマークアップは以下にコンパイルされます。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="0dp" android:paddingRight="16dp" android:paddingBottom="0dp" android:paddingLeft="16dp" android:orientation="vertical"> <EditText android:layout_width="fill_parent" android:layout_height="match_parent" android:hint="@string/to" /> <EditText android:layout_width="fill_parent" android:layout_height="match_parent" android:hint="@string/subject" /> <EditText android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="top" android:hint="@string/message" /> <Button android:id="@+id/btn_send" android:layout_width="100dp" android:layout_height="match_parent" android:gravity="right" android:text="@string/send" /> </LinearLayout>
DRY原則は、マクロとエイリアスもサポートしています。 エイリアスを使用すると、何かに新しい名前を設定できます-属性(「wrap_content」の代わりに「wrap」を書き込む)、値(フォントの色またはサイズを一度決定し、エイリアスを変数の名前として使用する)など
マクロはいくつかの引数を取ります。 確かに、引数に名前を付けることはできません(マクロは最も単純なものであると想定されています)。 代わりに、Bashのように位置引数が使用されます($ 1、$ 2、$ 3など)。 上記の例で使用されているマクロとエイリアスは次のとおりです。
おそらく、そのようなマクロは、さまざまなタイプのXMLに対して標準にする必要があります(レイアウト用-1つ、ストリング用-他など)。
pythonでAAMLによって書かれました。 2つのモードで動作します-* .aamlファイルを* .xmlに変換するか、1つのフォルダーからすべてのファイルを再帰的に処理し、結果のxmlを別のフォルダーに配置します。 これは、aaml / layout、aaml / values、aaml / xmlを作成し、res / layoutなどに結果を追加する場合に便利です。
このプロセスを自動化するには、custom_rules.xmlを作成できます。
<?xml version="1.0" encoding="UTF-8"?> <project> <target name="-pre-build"> <exec executable="aaml"> <arg value="aaml"/> <arg value="res"/> </exec> </target> </project>
これで、プロジェクトを自動的にビルドするたびにaamlがxmlに変換されます。
ソースはbitbucketにあります:
bitbucket.org/zserge/aamlライセンス-MIT。
投稿の最後に、ハブロフスクの住民に質問があります-このプロジェクトを開発する価値はありますか? XMLを手動で記述する他のフリークはいますか? もしそうなら、提案、機能要求、コメント、バグ、批判を歓迎します。