私は最近Androidでアプリケーションの開発を開始しましたが、多くのチュートリアルでは、リソースの命名に大文字を使用すべきではないと述べています。何故ですか?また、.pngや.xmlなどの拡張子を付けることは許可されていません。button.pngとbutton.xmlの2つのファイルがある場合、アプリは2つのファイルをどのように区別しますか?
2 に答える
リソースで大文字を許可しないのは、いくつかの規則に厳密に従うためです
同じリソース フォルダーで同じ名前の 2 つの異なる種類のリソースを使用することはできません。たとえば、drawable-hpdi に 2 つのリソース ファイルがあるとします。それらは a.png と a.xml です。ここで、コンパイラのコンパイル中にエラーが表示されます。ただし、a.png を drawable-hdpi に配置し、a.xml を drawable-mdpi に配置すると、これら 2 つのリソースが 2 つのまったく異なるデバイス タイプで使用されるため、エラーは表示されません。
もう 1 つの興味深い点は、a.png と a.xml を同じフォルダーで使用すると、a.xml が重複していることを示すエラーが表示されることです。ただし、同じフォルダーで a.jpg と a.png を使用すると、a.png が重複していることがわかります。そのため、ファイルタイプの優先順位はないと推測できます。コンパイラはトップダウン検索に従います。a.png は a.xml の上に配置されるため、コンパイラは最初に a.png を見つけ、次に同じ名前の xml ファイルを見つけるとエラーが表示されます。同じ理由で、a.jpg と a.png を使用すると、a.png でエラーが表示されます。
注: この回答は完全に私の観察に基づいています。これに関する書面によるドキュメントは見つかりませんでした。だから誰かが私の間違いを証拠で証明したら、それは高く評価されます
リソース ファイルのファイル名の部分は、生成された Java ファイルでリソース ID を作成するために使用されるため
gen/<your-package-path>/R.java
、同じディレクトリ内で異なる拡張子を持つ同じリソース ファイル名を持つことはできません。
ビットマップ ファイルのリソース リファレンスで、リソース ファイル名の使用を参照してください。
リソース ID は Java 変数であるため、Java で提案されている変数の規則 ( Wikipedia Java の命名規則を参照) に従って名前を小文字で始めることをお勧めします。