2015年3月19日木曜日

AndroidのToolbarに触れてみよう。

この記事はイトナブ開発合宿にて作成されました。
イトナブ開発合宿を知らない方はまずこちらを御覧ください。
イトナブ開発合宿in滝沢市を開催しました。


【自己紹介】
はじめまして。「えんた」こと、遠藤拓也といいます。
岩手県立大学の2年で、普段は小・中・高生にプログラミングを教えたり、
AndroidアプリやWebサービスの開発を勉強していたりします。

イトナブ開発合宿はとても和やかな感じで開発ができて、分からない所や参考になりそうな
ところを教えてくださったり、ハッカソンとは違い徹夜して切羽詰まり…ということなく、
自分のペースで開発を進めていくことが出来ました。


【開発テーマ】
Android 5.0から使えるようになった、Toolbarとそのまわりをいじってみようと思います!


【Toolbarとは?】
Android 5.0 (Lollipop)と同時に追加されたActionBarの代替となるものです。
ビュー階層内に記述するため、他のビューとの共存や、アニメーション、スクロールイベントへの反応などが簡単にでき、
Activity の Action Bar として設定することもできるので、通常のオプション メニューのアクションをその内部に表示させることも可能です。


【開発環境
・Mac OS X (10.10.2)
・Android Studio(1.0.1)
・Android(5.0.1)


【試してみたこと】

・Toolbar
・Tab(Actionbar.Tabが非推奨になったため)
Navigation Drawer


 


【準備】
build.gradle(Module: app)
忘れないように、最初に追加しておきましょう。

dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     // Toolbarを使うために必要
     compile 'com.android.support:appcompat-v7:21.0.0'
     // PagerSlidingTabStripを使うのに必要
     compile 'com.jpardogo.materialtabstrip:library:1.0.6'
}


================================================================================
styles.xml(v21)
Toolbarの色やステータスバーの色などはここで指定します。
parentはTheme.AppCompat…を使う必要があるみたいです。

<? xml version = "1.0" encoding = "utf-8" ?>
< resources >
     < style name = "AppTheme" parent ="Theme.AppCompat.Light.NoActionBar" >
         <!-- Customize your theme here. -->
         <!-- Toolbarの背景色 -->
         < item name = "colorPrimary" >#FFBB33</ item >
         <!-- ステータスバーの背景色 -->
         < item name = "colorPrimaryDark" >#FFFF8800</ item >
         <!-- ActionModeを使うのに必要 -->
         < item name = "windowActionModeOverlay" >true</ item >
     </ style >
</ resources >



================================================================================
activity_main.xml
メインのレイアウト部分です。

<!-- Drawer start-->
< android.support.v4.widget.DrawerLayout xmlns:android = "http://schemas.android.com/apk/res/android"
     android:id = "@+id/drawer_layout"
     android:layout_width = "match_parent"
     android:layout_height = "match_parent" >
     < RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
         xmlns:app = "http://schemas.android.com/apk/res-auto"
         xmlns:tools = "http://schemas.android.com/tools"
         android:layout_width = "match_parent"
         android:layout_height = "match_parent"
         android:padding = "0dp"
         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" >
         <!-- Tab -->
         < com.astuetz.PagerSlidingTabStrip
             android:id = "@+id/tabs"
             android:layout_width = "match_parent"
             android:layout_height = "48dp"
             android:layout_alignParentStart = "true"
             android:layout_below = "@+id/tool_bar"
             android:background = "?attr/colorPrimary" />
         < android.support.v4.view.ViewPager xmlns:android = "http://schemas.android.com/apk/res/android"
             android:id = "@+id/pager"
             android:layout_width = "match_parent"
             android:layout_height = "match_parent"
             android:layout_alignParentEnd = "false"
             android:layout_alignParentStart = "false"
             android:layout_below = "@+id/tool_bar"
             android:focusable = "false"
             android:nestedScrollingEnabled = "false"
             android:outlineProvider = "paddedBounds" >
             < android.support.v4.view.PagerTabStrip
                 android:id = "@+id/strip"
                 android:layout_width = "match_parent"
                 android:layout_height = "wrap_content"
                 android:background = "#FFBB33"
                 android:focusable = "false"
                 android:paddingBottom = "12dp"
                 android:paddingEnd = "15dp"
                 android:paddingStart = "15dp"
                 android:paddingTop = "12dp"
                 android:textColor = "#000"
                 android:touchscreenBlocksFocus = "true" />
         </ android.support.v4.view.ViewPager >
         <!-- ToolBar start -->
         < android.support.v7.widget.Toolbar
             android:id = "@+id/tool_bar"
             android:layout_width = "match_parent"
             android:layout_height = "wrap_content"
             android:layout_alignParentLeft = "true"
             android:layout_alignParentStart = "true"
             android:layout_alignParentTop = "true"
             android:background = "?attr/colorPrimary"
             android:minHeight = "?attr/actionBarSize"
             app:theme = "@style/ThemeOverlay.AppCompat.ActionBar" >
         </ android.support.v7.widget.Toolbar >
         <!-- ToolBar end -->
     </ RelativeLayout >
     <!-- Drawer 表示部分 -->
     < LinearLayout
         android:layout_width = "280dp"
         android:layout_height = "match_parent"
         android:layout_gravity = "start"
         android:background = "#fff" >
         < ListView
             android:id = "@+id/listview"
             android:layout_width = "fill_parent"
             android:layout_height = "match_parent" />
     </ LinearLayout >
     <!-- Drawer 表示部分 end -->
</ android.support.v4.widget.DrawerLayout >
<!-- Drawer end-->


?attrはstyles.xmlで付けた名前を使用しますよって意味


================================================================================
menu_main.xml
Toolbar右に表示されているメニューボタンです

< menu xmlns:android = "http://schemas.android.com/apk/res/android"
     xmlns:tools = "http://schemas.android.com/tools"
     xmlns:app = "http://schemas.android.com/apk/res-auto"
     tools:context = ".MainActivity" >
     < item android:id = "@+id/mbtn"
         android:title = "menu-button"
         android:icon = "@drawable/ic_launcher2” //顔マーク
         android:orderInCategory = "100"
         app:showAsAction = "ifRoom" />
</ menu >


================================================================================
activity_fragment(0〜2).xml
Tabで管理される画面です。今回は同様の画面を3つ用意しましした。

< LinearLayout
     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" >
     < TextView
         android:layout_width = "match_parent"
         android:layout_height = "wrap_content"
         android:text = "グー"
         android:textSize = "30sp"
         android:padding = "50dp"
         android:layout_gravity = "center_vertical"
         android:gravity = "center" />
</ LinearLayout >


================================================================================
MainActivity.java
メイン部分です。

public class MainActivity extends ActionBarActivity {
     private DrawerLayout vDrawerLayout;
     private ActionBarDrawerToggle vDrawerToggle;
     private ListView vListView;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         settoolbar();
         PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
         ViewPager mViewPager = (ViewPager) findViewById(R.id.pager);
         mViewPager.setAdapter( newMyFragmentStatePagerAdapter(getSupportFragmentManager()));
         tabs.setViewPager(mViewPager);
         PagerTabStrip strip = (PagerTabStrip)findViewById(R.id.strip);
         strip.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20 );
         vDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
         initDrawer();
         vListView = (ListView) findViewById(R.id.listview);
         vListView.setAdapter( new ArrayAdapter<String>(
                 this , android.R.layout.simple_list_item_1, new String[]{ "menu 1" ,"menu 2" , "menu 3" , "menu 4" , "menu 5" }));
     }
     protected void settoolbar(){
         //  toolbar定義
         Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
         //  タイトル
         toolbar.setTitle( "ActionBar Title" );
         //  タイトルの色
         toolbar.setTitleTextColor(Color.parseColor( "#000000" ));
        //  ActionBarと同等にToolbarを使う  
      setSupportActionBar(toolbar);
     }
     private void initDrawer() {
         vDrawerToggle = new ActionBarDrawerToggle( this , vDrawerLayout, R.string.app_name, R.string.app_name);
         vDrawerToggle.setDrawerIndicatorEnabled( true );
         vDrawerLayout.setDrawerListener(vDrawerToggle);
         getSupportActionBar().setDisplayHomeAsUpEnabled( true );
         getSupportActionBar().setDisplayShowHomeEnabled( true );
     }
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         getMenuInflater().inflate(R.menu.menu_main, menu);
         return true ;
     }
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         int id = item.getItemId();
         if (id == R.id.mbtn) {
             Toast.makeText(MainActivity. this , "Menu click" , Toast.LENGTH_SHORT).show();
             return true ;
         }
         return vDrawerToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item);
     }
     @Override
     protected void onPostCreate(Bundle savedInstanceState) {
         super .onPostCreate(savedInstanceState);
         vDrawerToggle.syncState();
     }
     @Override
     public void onConfigurationChanged(Configuration newConfig) {
         super .onConfigurationChanged(newConfig);
         vDrawerToggle.onConfigurationChanged(newConfig);
     }
}


================================================================================
MyFragmentStatePagerAdapter.java
FragmentStatePagerAdapterでFragmentを管理します。

public class MyFragmentStatePagerAdapter extends FragmentStatePagerAdapter {
     public MyFragmentStatePagerAdapter(FragmentManager fm) {
         super (fm);
     }
     @Override
     public Fragment getItem( int i) {
         switch (i){
             case 0 :
                 return new Fragment0();
             case 1 :
                 return new Fragment1();
             default :
                 return new Fragment2();
         }
     }
     @Override
     public int getCount() {
         return 3 ;
     }
     @Override
     public CharSequence getPageTitle( int position) {
         switch (position){
             case 0 :
                 return "First" ;
             case 1 :
                 return "Second" ;
             default :
                 return "Third" ;
         }
     }
}


================================================================================
Fragment(0〜2).java
Tabでスワイプして表示させる画面です。

public class Fragment0 extends Fragment {
     @Override
     public View onCreateView(LayoutInflater inflater,
                              ViewGroup container,
                              Bundle savedInstanceState) {
         return inflater.inflate(R.layout.activity_fragment0, null );
     }

    @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         // Handle action bar item clicks here. The action bar will
         // automatically handle clicks on the Home/Up button, so long
         // as you specify a parent activity in AndroidManifest.xml.
         int id = item.getItemId();
         //noinspection SimplifiableIfStatement
         if (id == R.id.action_settings) {
             return true ;
         }
         return super .onOptionsItemSelected(item);
     }
}

長くなりましたが、これで
Toolbar、Tab、Navigation Drawerが実装出来たと思います。

【可能性】
ちょっと調べただけでもたくさんのサンプルが出てきました。
xmlでレイアウトを組むことが好きな私にとってはとても
使いやすいという印象がありました。
Actionbarの代わりとして扱え、さらにサイズや位置も自由に変えられるため、
Actionbar以外の使い道もアイディア次第になりそうです。
ただ、setSupportActionBarするとsetNavigationOnClickListenerやsetOnMenuItemClickListenerは
使えなくなるので注意。


【最後に】
普段は調べる→コピペ→動けばOK、という感じでしたが、
今回は『狭く、深く』ということだったので公式リファレンスを見たり、
実際にいろいろ試してみたり、英語とも格闘しました。すると、
点と点が繋がったようなことがあったり、今後の開発に活かせそうなことも
発見出来たりと、とても充実した時間を過ごすことができました。
今後も新しいことにどんどんチャレンジしていきたいと思います。


【Github】
コピペの量が多すぎ!って人はこちらをどうぞ


【参考】
Google Japan Developer Relations Blog

AndroidのToolBar(新しいActionBar)メモ


Canvasとmatrixの組み合わせの応用


イトナブ石巻の紅白こと白出達彦です。

イトナブ開発合宿in滝沢市のまとめを紹介します。

イトナブ開発合宿について、概要を知りたい方はこちらをご覧ください。
今回は滝沢市でイトナブ石巻開発合宿in滝沢市を開催しました。

■開発テーマ
Canvasの静的な描画とmatrixメソッドの組み合わせで、
どのような応用が出来るか

■開発環境
Mac OS 10.9.2
Android Studio 1.1.0

■ソースコード
①layoutファイルにButtonとImageViewを追加
【hanten.xml】

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

        <Button
            android:id="@+id/button1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="画像を開く" />

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </LinearLayout>

②MainActivity
【HantenActivity】
ギャラリーで取得した画像をリサイズして反転、下に行くに連れて白の
グラデーションを濃くしていきます。

public class HantenActiviy extends Activity implements OnClickListener {

    private static final int REQ_SELECT_GALLERY = 100;
    private static final int REFLECTIONGAP = 4;
    private static final int MAX_IMAGE_SIZE = 1024;

    private ImageView mImageView1;

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

        mImageView1 = (ImageView) findViewById(R.id.imageView1);

        findViewById(R.id.button1).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.button1) {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(intent, REQ_SELECT_GALLERY);
        }

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQ_SELECT_GALLERY && resultCode == RESULT_OK) {
            setMirrorBitmap(data.getData());
        }
    }

    private void setMirrorBitmap(Uri imageuri) {
        // Bitmap画像を読み込む
        Bitmap bitmapOriginal = loadBitmap(imageuri);
        // 反転された画像を作成するMatrixを生成
        Matrix matrix = new Matrix();
        matrix.preScale(1, -1);
        int height = bitmapOriginal.getHeight();
        int width = bitmapOriginal.getWidth();
        // 反転された画像を書き込むBitmapを生成
        Bitmap reflectionImage = Bitmap.createBitmap(bitmapOriginal, 0, height / 2, width, height / 2, 
matrix, false);
        // オリジナルの画像に反転した画像を合成したイメージを書き込むBitmapを生成
        Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
                (height + height / 2), Bitmap.Config.ARGB_8888);

        // 最終的なイメージへ書き込むCanvasを生成
        Canvas canvas = new Canvas(bitmapWithReflection);
        // オリジナルの画像を描画
        canvas.drawBitmap(bitmapOriginal, 0, 0, null);
        // オリジナルの画像を描画
        Paint deafaultPaint = new Paint();
        // 繋ぎ目を目立たなくするためにデフォルトの色を描画
        canvas.drawRect(0, height, width, height + REFLECTIONGAP, deafaultPaint);
        // 反転されたイメージを描画
        canvas.drawBitmap(reflectionImage, 0, height + REFLECTIONGAP, null);
        // 反転された部分に下にいくにつれ白くなるようグラデーションを設定
        Paint paint = new Paint();
        LinearGradient shader = new LinearGradient(0,
                bitmapOriginal.getHeight(), 0, bitmapWithReflection.getHeight()
                + REFLECTIONGAP, 0x70ffffff, 0x00ffffff, Shader.TileMode.CLAMP);
        paint.setShader(shader);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
        // グラデーションを描画
        canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
                + REFLECTIONGAP, paint);

        mImageView1.setImageBitmap(bitmapWithReflection);
    }

    private Bitmap loadBitmap(Uri imageuri) {
        InputStream input = null;
        try {

            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = true;

            input = getContentResolver().openInputStream(imageuri);
            BitmapFactory.decodeStream(input, null, options);
            int inSampleSize = calculateInSampleSize(options, MAX_IMAGE_SIZE,
                    MAX_IMAGE_SIZE);
            input.close();
            input = null;

            options.inJustDecodeBounds = false;
            options.inSampleSize = inSampleSize;

            input = getContentResolver().openInputStream(imageuri);
            Bitmap bitmap = BitmapFactory.decodeStream(input, null, options);

            return bitmap;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return null;
    }

    private int calculateInSampleSize(BitmapFactory.Options options,
                                      int reqWidth, int reqHeight) {
        final int height = options.outHeight;
        final int width = options.outWidth;
        int inSampleSize = 1;

        if (height > reqHeight || width > reqWidth) {
            if (width > height) {
                inSampleSize = Math.round((float) height / (float) reqHeight);
            } else {
                inSampleSize = Math.round((float) width / (float) reqWidth);
            }
        }
        return inSampleSize;
    }

}

コードは以下のサイトから引用させていただきました。 http://www110.kir.jp/Android/ch0614.html

ギャラリーから選んだ写真が・・・・




このように変化します。

■活用事例と可能性
反転効果の他にグレースケールをかけて写真を表示する事も可能です。 可能性としてはSNSとの連携で、編集した写真を投稿するアプリ等が考えられます。


■総括 matrixメソッドは「リサイズした際の再描画」という固定的なイメージしかなかったのですが、animationと同じような動作やギャラリーとの写真で組み合わせ等、柔軟な組み合わせ方ができる事を学ぶことができました。

Unityに触れてみよう。

こんにちは!イトナブ石巻のポーカーこと佐々木 唯です!
滝沢で行ったイトナブ石巻開発合宿でやったことを書きたいと思います。

イトナブ開発合宿のことを知らない方はまずこちらをご覧になってください。
イトナブ石巻開発合宿in滝沢市を開催しました。

今回のイトナブ合宿in滝沢では今まで触ってきてなかった「Unity」に挑戦してみました!
使ったのはC#とこれまた触ったことのない言語でした。
今回Unityでやったことはチュートリアルのシューティングゲームをやってみました!
チュートリアルは1〜12回まであったんですが自分ができた部分は5回までで
自機、敵機の両機を動かし、両機から弾を出すところまでは出来たんですが当たり判定がうまくいかず敵機は壊れても自機は壊れない、DestroyAreaを作るのと自機が永遠と壊れるというところで詰まってしまって最後までは作れませんでした。
滝沢から戻って石巻で続きを作って、一応チュートリアルの突破1歩手前までは来ました!
自分が一応見ながら作ったチュートリアルのURLを貼りたいと思います。
http://japan.unity3d.com/developer/document/tutorial/2d-shooting-game/game/01.html
このままUnityを使いこなせるように日々精進して行きたいと思います!

2015年2月2日月曜日

AndroidのToolBarを使ってみた

こんにちは!

イトナブ石巻のとみぎです。

今回はAndroid5.0(Lollipop)と同時に追加された、ActionBarの代替となる「ToolBar」を使い、簡単なサンプルを作ってみました

[今回の開発環境]

Mac OS X 10.9.5
AndroidStudio 1.0.2


◯ アプリのレイアウトスタイル(style.xml)を変更
【style.xml】
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->

        <!-- アクションバー(Toolbar)の背景色 -->
        <item name="colorPrimary">#ffe10446</item>

        <!-- ステータスバーの背景色 -->
        <item name="colorPrimaryDark">#ffe1799c</item>

        <!-- colorAccent is used as the default value for colorControlActivated,
         which is used to tint widgets -->
        <item name="colorAccent">#ff0000</item>

        <!-- ActionModeを使うのに必要 -->
        <item name="windowActionModeOverlay">true</item>

    </style>

</resources>



◯ レイアウトファイルにToolBarを追加
【activity_main.xml】
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <!-- ToolBar -->
    <android.support.v7.widget.Toolbar
        android:id="@+id/tool_bar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        app:theme="@style/ThemeOverlay.AppCompat.ActionBar"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">
    </android.support.v7.widget.Toolbar>
    <!-- ToolBar end -->

    <TextView android:text="@string/hello_world" android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tool_bar"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

</RelativeLayout>



◯ アクティビティ側を変更
【MainActivity.java】
public class MainActivity extends ActionBarActivity {

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

    // 追加
    protected void setToolBar() {
        Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
        // ツールバーのタイトルを設定
        toolbar.setTitle("ActionBar Title");
        // ツールバーをアクションバーとしてセット
        setSupportActionBar(toolbar);
    }
}



◯ 実行

アクションバーが表示されました!
ステータスバーの色もちゃんと変わっています。




◯ サブタイトルを追加してみる
【MainActivity.java】
public class MainActivity extends ActionBarActivity {

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

    protected void setToolBar() {
        Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
        toolbar.setTitle("ActionBar Title");

        // 追加
        toolbar.setSubtitle("Subtitle");

        setSupportActionBar(toolbar);
    }
}

こうなりました↓




◯ アプリアイコンを追加してみる【MainActivity.java】
public class MainActivity extends ActionBarActivity {

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

    protected void setToolBar() {
        Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
        toolbar.setTitle("ActionBar Title");
        toolbar.setSubtitle("Subtitle");
        
        // 追加
        toolbar.setLogo(R.drawable.ic_launcher);
        
        setSupportActionBar(toolbar);
    }
}

こうなりました↓






◯ (おまけ)ナビゲーションバーの色を変えてみた



※ナビゲーションバーの色変更が可能なのはAPI Level 21(Lollipop)からなので、こちらを実装する場合は、v21専用のxml「values-v21/styles.xml」を作成し、そちらへ追加しなければなりません。


【values-v21/styles.xml】
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        
        <item name="colorPrimaryDark">#ff007435</item>

        <item name="colorPrimary">#ff00c859</item>

        <!-- 追加 ナビゲーションバーの背景色 -->
        <item name="android:navigationBarColor">#ff00a57f</item>

        <item name="colorAccent">#ff0000</item>

        <item name="windowActionModeOverlay">true</item>

    </style>
</resources>


以上、AndroidのToolBarを使ってみたでした。
この他にも色々と設定可能なメソッドがあるようなので、
他にも色々と試してみたいと思います。


最後まで読んで頂き、ありがとうございました!

【参考サイト】
AndroidのToolBar(新しいActionBar)メモ - Qiita
Android Developers

posted by イトナブ石巻 とみぎ