R.attr.label

ActionBarのタイトルは、android:labelで付ける。

R.attr  |  Android Developers

android:titleという属性もあるが、これでは無い模様。
Button2つを用意して、片方でSubActivity、もう片方でThirdActivityを起動するこれまでの構造は同じで、strings.xmlで、

結構大量に文字列を用意。
AndroidManifest.xmlは、

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bgstation0.android.sample.r.attr_"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="15" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/main_title" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SubActivity"
            android:label="@string/second_title"
            android:logo="@drawable/ic_launcher" >
        </activity>
        <activity android:name=".ThirdActivity"
            android:label="@string/third_title"
            android:icon="@drawable/ic_launcher">
        </activity>
    </application>

</manifest>

applicationにapp_name、MainActivityにmain_title、SubActivityにsecond_title、ThirdActivityにthird_titleという感じで、すべてにセットしてる。

Main Title
Main Title

Main Title。
button1で、

Second Title
Second Title

Second Title。
button2で、

Third Title
Third Title

Third Title。
次は、

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bgstation0.android.sample.r.attr_"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="15" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/main_title" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SubActivity"
            android:label="@string/second_title"
            android:logo="@drawable/ic_launcher" >
        </activity>
        <activity android:name=".ThirdActivity"
            android:icon="@drawable/ic_launcher">
        </activity>
    </application>

</manifest>

ThirdActivityだけ、labelを剥がすと、

これだけapp_nameのR.attr_になる。
これだけapp_nameのR.attr_になる。

これだけapp_nameのR.attr_になる。
最後に、

Activityのは全て剥がすと、

Mainはこう
Mainはこう

Mainはこう、

Subはこう
Subはこう

Subはこう、

Thirdはこうなる。
Thirdはこうなる。

Thirdはこうなる。
全部、app_nameのR.attr_になってる。

Sample/android/R.attr/label/src/R.attr at master · bg1bgst333/Sample · GitHub

ActionBar.setLogo

ActionBar.setLogoで、ロゴもセットできる。

ActionBar  |  Android Developers

AndroidManifest.xmlは、

また、Activityを3つ用意。
applicationにだけ、ic_launcherがセットされている。
strings.xmlは、

こんな感じ。
activity_main.xmlは、

Buttonを2つ。
activity_sub.xmlは、

TextView1つ。
activity_third.xmlも、

TextView1つ。
MainActivity.javaは、

まずは、onCreateでicon1をセット。
そして、button1だとSubActivity、button2だとThirdActivityを起動。
SubActivity.javaは、

package com.bgstation0.android.sample.actionbar_;

import android.app.Activity;
import android.os.Bundle;

public class SubActivity extends Activity {

	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
    }
	
}

まず、この状態に。
ThirdActivity.javaも、

package com.bgstation0.android.sample.actionbar_;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;

public class ThirdActivity extends Activity {

	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);        
    }
	
}

この状態に。

logo1.pngも配置
logo1.pngも配置

logo1.pngも配置。

MainActivityはicon1
MainActivityはicon1

MainActivityはicon1。
button1を押すと、

SubActivityはapplicationのic_launcherに
SubActivityはapplicationのic_launcherに

SubActivityはapplicationのic_launcherに。

次はこうする。

SubActivityもicon1に
SubActivityもicon1に

SubActivityもicon1に。

package com.bgstation0.android.sample.actionbar_;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;

public class ThirdActivity extends Activity {

	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);
        
        // アイコンをセット.
        ActionBar actionBar = getActionBar();	// actionBarを取得.
        actionBar.setIcon(R.drawable.icon1);	// icon1をセット.
        
    }
	
}

次はこう。

ThirdActivityもicon1に
ThirdActivityもicon1に

ThirdActivityもicon1に。

最後は、setLogoでlogo1をセット。

ThirdActivityにlogo1がセットされている
ThirdActivityにlogo1がセットされている

ThirdActivityにlogo1がセットされている。

Sample/android/ActionBar/setLogo/src/ActionBar at master · bg1bgst333/Sample · GitHub

ActionBar.setIcon

ActionBar.setIconで、ソースコード側でアイコンをセットすることもできる。

ActionBar  |  Android Developers

AndroidManifest.xmlで、

android:iconをic_launcherにしたままで、MainActivity.javaも、

package com.bgstation0.android.sample.actionbar_;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    
}

こうだと、

当然このまま
当然このまま

当然このままic_launcherが表示。
しかし、

icon1を配置
icon1を配置

icon1を配置し、

onCreateでicon1をセットすると、

ic_launcherがicon1に変わる
ic_launcherがicon1に変わる

ic_launcherがicon1に変わる。
まあ、起動時にアニメーションしちゃいかんので、xmlのほうが最初からicon1になってるかな。

Sample/android/ActionBar/setIcon/src/ActionBar at master · bg1bgst333/Sample · GitHub

R.attr.logo(application)

applicationタグにlogoを指定した場合はどうなるか。

R.attr  |  Android Developers

AndroidManifest.xmlで、

applicationのlogoはlogo2、SubActivityのlogoにicon1。

MainActivityは、iconもlogoも指定されていないので、applicationのlogo2。
MainActivityは、iconもlogoも指定されていないので、applicationのlogo2。

MainActivityは、iconもlogoも指定されていないので、applicationのlogo2。

SubActivityは、logoがicon1なのでicon1が表示されている。(ってことだよね。)
SubActivityは、logoがicon1なのでicon1が表示されている。(ってことだよね。)

SubActivityは、logoがicon1なのでicon1が表示されている。(ってことだよね。)

ThirdActivityは、logoを指定していないので、applicationのlogo2が表示される。
ThirdActivityは、logoを指定していないので、applicationのlogo2が表示される。

ThirdActivityは、logoを指定していないので、applicationのlogo2が表示される。

Sample/android/R.attr/logo_application/src/R.attr at master · bg1bgst333/Sample · GitHub

R.attr.logo

android:logoでロゴを指定できる。

R.attr  |  Android Developers
Android ヘッダー(ActionBar,ToolBar)にロゴ画像を表示する - Symfoware
Android icon vs logo - Stack Overflow
アプリアイコン作成ガイド! 最適化のためのベストプラクティス | CE(カスタマーエンゲージメント)プラットフォームRepro(リプロ)

アイコンとロゴの違いがわからんのだけど。
アイコンがラスタ画像で、ロゴがベクタ画像ってホントなんかね。
まあ、アイコンはランチャーとかにも表示される組み込んだもの。
一方で、ロゴは特定の画面で表示するものかな。

わざわざPhotoshopでSVGなlogo1.svgを作ってみた
わざわざPhotoshopSVGなlogo1.svgを作ってみた

わざわざPhotoshopSVGなlogo1.svgを作ってみた。
AndroidManifest.xmlは、

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bgstation0.android.sample.r.attr_"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="15" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/icon1"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".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>
        <activity android:name=".SubActivity"
            android:label="@string/app_name"
            android:logo="@drawable/logo1" >
        </activity>
        <activity android:name=".ThirdActivity"
            android:label="@string/app_name"
            android:icon="@drawable/ic_launcher">
        </activity>
    </application>

</manifest>

applicationのiconにicon1、SubActivityのlogoにlogo1、ThirdActivityのiconにic_launcher。

ランチャーだとアイコンはicon1
ランチャーだとアイコンはicon1

ランチャーだとアイコンはicon1。

MainActivityは、applicationに指定したicon1。
MainActivityは、applicationに指定したicon1。

MainActivityは、applicationに指定したicon1。
button1を押すと、

SubActivityはlogo1.svgのはずだが、表示されずにapplicationのicon1になっている。
SubActivityはlogo1.svgのはずだが、表示されずにapplicationのicon1になっている。

SubActivityはlogo1.svgのはずだが、表示されずにapplicationのicon1になっている。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bgstation0.android.sample.r.attr_"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="15" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/icon1"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".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>
        <activity android:name=".SubActivity"
            android:label="@string/app_name"
            android:logo="@drawable/ic_launcher" >
        </activity>
        <activity android:name=".ThirdActivity"
            android:label="@string/app_name"
            android:icon="@drawable/ic_launcher">
        </activity>
    </application>

</manifest>

いったん、logoをic_launcherにして、logoが効いているか確認。

ic_launcherの表示は出来てるので、単純にSVGの表示に失敗してるだけみたい。
ic_launcherの表示は出来てるので、単純にSVGの表示に失敗してるだけみたい。

ic_launcherの表示は出来てるので、単純にSVGの表示に失敗してるだけみたい。
logo1.svgは諦めて、

丸型のlogo2.pngを置く
丸型のlogo2.pngを置く

丸型のlogo2.pngを置く。

SubActivityのlogoにlogo2を指定。

SubActivityでlogo2が表示された
SubActivityでlogo2が表示された

SubActivityでlogo2が表示された。
applicationでiconが指定されていても、logoが指定されていればlogoが表示されるようだ。

Sample/android/R.attr/logo/src/R.attr at master · bg1bgst333/Sample · GitHub

R.attr.icon(activity)

activityタグに付ける場合を検証してみる。

R.attr  |  Android Developers

AndroidManifest.xmlは、

3つActivityを用意。
applicationでicon1、ThirdActivityにic_launcher。
strings.xmlは、

こんな感じで。
activity_main.xmlは、

Buttonを2つ。
activity_sub.xmlは、

TextView。
activity_third.xmlも、

TextView。
MainActivity.javaは、

button1はSubActivity、button2はThirdActivityを起動。
SubActivity.javaは、

こんな感じ。
ThirdActivity.javaは、

同じ。

MainActivityはiconを指定していないので、applicationのicon1。
MainActivityはiconを指定していないので、applicationのicon1。

MainActivityはiconを指定していないので、applicationのicon1。
button1を押すと、

SubActivityも指定されてないのでicon1
SubActivityも指定されてないのでicon1

SubActivityも指定されてないのでicon1。
バックキーで、

いったん戻る
いったん戻る

いったん戻る。
button2を押すと、

ThirdActivityはic_launcherを指定してるので、それが表示される。
ThirdActivityはic_launcherを指定してるので、それが表示される。

ThirdActivityはic_launcherを指定してるので、それが表示される。

Sample/android/R.attr/icon_activity/src/R.attr at master · bg1bgst333/Sample · GitHub

R.attr.icon

AndroidManifest.xml上にアプリのアイコンを指定するところがあるので、それでアイコンをセットする。

R.attr  |  Android Developers

android:iconで指定するのだが、applicationタグの場合と、activityタグの場合があり、今回はapplicationタグで指定する。

ここにicon1.pngを置く
ここにicon1.pngを置く

ここにicon1.pngを置く。
AndroidManifest.xmlで、

applicationタグのandroid:iconを"@drawable/icon1"とする。

このようにicon1が表示される
このようにicon1が表示される

このようにicon1が表示される。

Sample/android/R.attr/icon/src/R.attr at master · bg1bgst333/Sample · GitHub