Android

AndroidTips | Androidプロジェクトについてもう一度

Posted 2月 19 2014 by NABE  , ,

Androidプロジェクトについてもう一度

皆さんは簡単なアプリは作成できますか?
「なんとなくならつくれるよー」という方に、たまに有りがちなのが「どこになにがあるのかしっかりと把握していない」ということです。
意外と思うかもしれませんが、講師をしているとよくそのような場面に遭遇します。

せっかくなので今一度振り返ってみようかと思います。

Androidアプリケーションプロジェクト

左の図を確認してみてください。

これは「HelloWorld」という名前で空のアプリを作成し、何も手を入れていない状態です。また、Androidアプリケーションプロジェクトを作成途中の画面でも、デフォルトのままの設定となっています。

今回すべてのフォルダファイルについては記述しません。
あくまでも良く利用する部分のみの説明とします。

  • srcフォルダ
  • javaソースプログラムを格納するためのフォルダです。
    正確にはフォルダ直下のパッケージ内にjavaプログラムを配置します。

    • MainActivity.java
    • package com.example.helloworld;
      
      import android.os.Bundle;
      import android.app.Activity;
      import android.view.Menu;
      
      public class MainActivity extends Activity {
      
      	@Override
      	protected void onCreate(Bundle savedInstanceState) {
      		super.onCreate(savedInstanceState);
      		setContentView(R.layout.activity_main);
      	}
      
      	@Override
      	public boolean onCreateOptionsMenu(Menu menu) {
      		// Inflate the menu; this adds items to the action bar if it is present.
      		getMenuInflater().inflate(R.menu.main, menu);
      		return true;
      	}
      
      }
      
  • genフォルダ
  • ADTにより自動生成されたjavaソースプログラムを格納するフォルダです。
    このフォルダ内のファイルは、基本的には中身を確認したり修正する必要はありません。

    • BuildConfig.java
    • /** Automatically generated file. DO NOT MODIFY */
      package com.example.helloworld;
      
      public final class BuildConfig {
          public final static boolean DEBUG = true;
      }
      
    • R.java
    • /* AUTO-GENERATED FILE.  DO NOT MODIFY.
       *
       * This class was automatically generated by the
       * aapt tool from the resource data it found.  It
       * should not be modified by hand.
       */
      
      package com.example.helloworld;
      
      public final class R {
          public static final class attr {
          }
          public static final class dimen {
              /**  Default screen margins, per the Android Design guidelines. 
      
               Customize dimensions originally defined in res/values/dimens.xml (such as
               screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
          
               */
              public static final int activity_horizontal_margin=0x7f040000;
              public static final int activity_vertical_margin=0x7f040001;
          }
          public static final class drawable {
              public static final int ic_launcher=0x7f020000;
          }
          public static final class id {
              public static final int action_settings=0x7f080000;
          }
          public static final class layout {
              public static final int activity_main=0x7f030000;
          }
          public static final class menu {
              public static final int main=0x7f070000;
          }
          public static final class string {
              public static final int action_settings=0x7f050001;
              public static final int app_name=0x7f050000;
              public static final int hello_world=0x7f050002;
          }
          public static final class style {
              /** 
              Base application theme, dependent on API level. This theme is replaced
              by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
          
      
                  Theme customizations available in newer API levels can go in
                  res/values-vXX/styles.xml, while customizations related to
                  backward-compatibility can go here.
              
      
              Base application theme for API 11+. This theme completely replaces
              AppBaseTheme from res/values/styles.xml on API 11+ devices.
          
       API 11 theme customizations can go here. 
      
              Base application theme for API 14+. This theme completely replaces
              AppBaseTheme from BOTH res/values/styles.xml and
              res/values-v11/styles.xml on API 14+ devices.
          
       API 14 theme customizations can go here. 
               */
              public static final int AppBaseTheme=0x7f060000;
              /**  Application theme. 
       All customizations that are NOT specific to a particular API-level can go here. 
               */
              public static final int AppTheme=0x7f060001;
          }
      }
      
  • resフォルダ
  • このフォルダは各種リソースファイルを配置するフォルダです。
    リソースファイルとは画像ファイル、音楽ファイル、xmlファイル等です。

    • drawableフォルダ
    • アイコン等の画像バイナリファイルを格納するフォルダです。
      画像の大きさによりフォルダが分かれます。

      項目名 アイコン 解像度
      drawable-ldpi 36px 120dpi
      drawable-mdpi 48px 160dpi
      drawable-hdpi 72px 240dpi
      drawable-xhdpi 96px 320dpi
      drawable-xxhdpi 148px 480dpi


    • layoutフォルダ
    • 画面レイアウトを定義するxmlファイルが格納するフォルダです。
      新しい画面レイアウトファイルを作成した場合、こちらに配置します。

      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:paddingBottom="@dimen/activity_vertical_margin"
          android:paddingLeft="@dimen/activity_horizontal_margin"
          android:paddingRight="@dimen/activity_horizontal_margin"
          android:paddingTop="@dimen/activity_vertical_margin"
          tools:context=".MainActivity" >
      
          <TextView
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="@string/hello_world" />
      
      </RelativeLayout>
      
    • menuフォルダ
    • メニューボタンをクリックしたときに表示されるメニューを定義するxmlファイルを格納するフォルダです。
      オプションメニューの項目は、javaプログラム内にも記述することが可能ですが、ローカライズの可能性を考慮すると、こちらに記述する方が適切でしょう。

      <menu xmlns:android="http://schemas.android.com/apk/res/android" >
      
          <item
              android:id="@+id/action_settings"
              android:orderInCategory="100"
              android:showAsAction="never"
              android:title="@string/action_settings"/>
      
      </menu>
      
    • valuesフォルダ
    • 文字列等を定義するxmlファイルを格納するフォルダです。

      • dimens.xml
      • <resources>
        
            <!-- Default screen margins, per the Android Design guidelines. -->
            <dimen name="activity_horizontal_margin">16dp</dimen>
            <dimen name="activity_vertical_margin">16dp</dimen>
        
        </resources>
        
      • strings.xml
      • 画面に表示させる文字列は、ここにまとめて記述することが適切と言われています。
        それはメンテナンス性やローカライズ性を考慮するべきだからです。

        <?xml version="1.0" encoding="utf-8"?>
        <resources>
        
            <string name="app_name">HelloWorld</string>
            <string name="action_settings">Settings</string>
            <string name="hello_world">Hello world!</string>
        
        </resources>
        
      • styles.xml
      • アプリのスタイルに関する設定をここでまとめて管理できます。
        例えば、viewの高さや幅、テキストのフォントやサイズなどです。

        <resources>
        
            <!--
                Base application theme, dependent on API level. This theme is replaced
                by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
            -->
            <style name="AppBaseTheme" parent="android:Theme.Light">
                <!--
                    Theme customizations available in newer API levels can go in
                    res/values-vXX/styles.xml, while customizations related to
                    backward-compatibility can go here.
                -->
            </style>
        
            <!-- Application theme. -->
            <style name="AppTheme" parent="AppBaseTheme">
                <!-- All customizations that are NOT specific to a particular API-level can go here. -->
            </style>
        
        </resources>
        
  • AndroidManifest.xml
  • Androidアプリケーション全体の設計図に相当するxmlファイルです。
    アプリケーション名やSDKバージョン、機能使用宣言、SDKバージョン、各種javaファイル名などの情報が書かれています。

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.helloworld"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="14"
            android:targetSdkVersion="18" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.helloworld.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    

だいたい把握できましたでしょうか?
どこになにがあるのか、ということが理解できると、なにをするにはどこを修正・追加するのかがわかるようになります。
しっかりと確認しておきましょう。


Android Android Tips



  未経験OKの仕事 |  上場企業の仕事 |  高待遇の仕事 |  外資系の仕事 |  社内SEで検索 |  自社サービスで検索





メールアドレス
ご質問・問い合わせ等、ご自由にお書きください。