ActionBarについて
ActionBarはAndroid SDK3.0より追加された機能
item | タグに指定する属性 |
in | アイテムのidを指定する |
icon | アイテムのアイコンに使用するリソースを指定する |
title | アイテムに表示するタイトルを指定する |
showAsAction | アイテムの表示形式を指定する |
ifRoom | ActionBarの領域に空きがある場合のみアイコンを表示する |
always | アイコンが常に表示される |
never | アイコンを表示しない |
withText | タイトルテキストを付加する |
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/action_share" android:icon="@android:drawable/ic_menu_share" android:title="Share" android:showAsAction="ifRoom|withText" /> <item android:id="@+id/action_sort" android:icon="@android:drawable/ic_menu_sort_by_size" android:title="Sort" android:showAsAction="ifRoom|withText"> <menu> <item android:id="@+id/action_sort_size" android:icon="@android:drawable/ic_menu_sort_by_size" android:title="By size" android:onClick="onSort" /> <item android:id="@+id/action_sort_alpha" android:icon="@android:drawable/ic_menu_sort_alphabetically" android:title="Alphabetically" android:onClick="onSort" /> </menu> </item> </menu>
前画面に戻るをつける
一旦、画面を移動してから戻りたいという場合、ActionBarに戻るボタンを設置するとよい。
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
そして戻るボタンを押したときのイベントはActivity#onOptionsItemSelected()で行う
@Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case android.R.id.home: finish(); return true; } return super.onOptionsItemSelected(item); }
SubActivity.java
public class SubActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // アクションバーに前画面に戻る機能をつける ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case android.R.id.home: finish(); return true; } return super.onOptionsItemSelected(item); }
ActionBarに画像タブを表示させる
こんな感じに画像付タグボタンを作成するにはメニューレイアウトを変更します。
iPhoneのタブ切替みたいな機能がAndroidにもないのかなと探していたところ
発見しました。
まずはメニューレイアウトxmlの
/res/menu/main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_map" android:orderInCategory="100" android:icon="@android:drawable/ic_menu_mapmode" android:showAsAction="ifRoom" android:numericShortcut="1" android:title="@string/action_settings"/> <item android:id="@+id/action_list" android:orderInCategory="100" android:icon="@android:drawable/ic_menu_today" android:showAsAction="ifRoom" android:numericShortcut="2" android:title="@string/action_settings"/> <item android:id="@+id/action_settings" android:orderInCategory="100" android:icon="@android:drawable/ic_dialog_info" android:showAsAction="ifRoom" android:numericShortcut="3" android:title="test"/> </menu>
タグボタンを押したときの処理は
Activity.onMenuItemSelected()が行います。
受け取ったidによって処理を切り替えます。
MainActivity.java
public class MainActivity extends Activity { @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { int id = item.getItemId(); // 押したアイテムのidで切り替える switch(id) { case R.id.action_map: Toast.makeText(this, "Map", Toast.LENGTH_SHORT).show(); break; case R.id.action_list: Toast.makeText(this, "List", Toast.LENGTH_SHORT).show(); break; case R.id.action_settings: Toast.makeText(this, "Setting", Toast.LENGTH_SHORT).show(); break; default: break; } return true; } }
ちなみにActionBarを下部に表示する場合は、
AndroidManifest.xmlの
android:uiOptions="splitActionBarWhenNarrow"
を追加する。
参考にしたサイト
SplitActionBarの作成方法
Androidで画面の下部にiOSのタブボタンをつくるにはActionBarの一種であるSplitActionBarを使用します。
AndroidManifest.xmlに以下のオプションを追加してください。
android:uiOptions="splitActionBarWhenNarrow"
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" 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.MainActivity" android:label="@string/app_name" android:uiOptions="splitActionBarWhenNarrow" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Android 4.0からのActionBar再入門 スマートフォン向けのアクションバーの使い方 | Tech Booster
VideoViewの使い方(インターネット上の動画を再生)
VideoViewを使えば簡単にAndroidで動画を再生することができます。
設置手順
レイアウトにVideoViewを設置します。
ここではidをvideoView1にします。
レイアウトを作成する
activity_main.xml
<VideoView android:id="@+id/videoView1" android:layout_width="match_parent" android:layout_height="300dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" />
ソースコードを記述する
レイアウトからfindViewById()を使ってVideoViewのインスタンスを取得します。
次にVideoView.setVideoURI()でインターネット上にある動画のURLを指定します。
VideoView.start()で動画を再生します。
MainActivity.java
package com.example.videoviewsample; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.VideoView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // VideoViewをレイアウトから取得する VideoView videoView = (VideoView)findViewById(R.id.videoView1); // インターネット上の動画を指定する videoView.setVideoURI(Uri.parse("http://example.com/video.mp4")); // 再生を開始する videoView.start(); } }
アプリにインターネット接続権限を設定する
これを書いてなくてハマりました。インターネット上にある場合はアプリにインターネットアクセスの許可をする必要があります。
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
注意点
動画を再生する上での注意点として動画のフォーマットがAndroidに対応しているのかチェックする必要があります。Androidの対応フォーマットは以下のサイトに書いてあります。
Supported Media Formats | Android Developers
参考にしたサイト
Androidで画像を使わずにボタンデザインを変更する方法
http://www.abe3.net/2013/05/android-drawable-shape/Androidで画像を使わずにデザインをボタンをデザインする方法
を見て、載っていたソースコードを自分で入力して実行してみた。
うお!ボタンの外観がかわってる。 このすごいところは画像ファイルを使わずに外見を変更できているという点だ。 xmlファイルなので、ファイルが軽くなるのがよい。
そのソースコードをもとにいろいろといじってみた。 とりあえず色を変更してみた。
android:startColor="#ff0000" // 赤色 android:endColor="#0000ff" // 青色 これで実行した結果のボタンがこれ。
色が上から下へ変化しているのがわかる。
これをもう少しいじくればかなり見た目を変更することができそうだ。
Eclipse(ADT)でのエディタの文字コードを変更する
昨日Githubに登録したコードを確認していたら、画面で文字化けが発生していたので
なんでなのか調べてみたら、Eclipseの文字コードがShift-JIS(MS932)になっていた。
当方、Macを使っているので自動的にUTF-8になっているのかなと思っていたけど、
Shift-JISのままだった。
Windows機では問題は発生しないだろうが、
そろそろ業界全体でUTF-8に統一して文字コード問題が発生しないように
していってほしいと願っているのは私だけではないはず!
まずはじめに [ADT] -> [環境設定] を選択する
次に ツリーから General(一般)-> Workspace (ワークスペース) を選択する
Text file encodingという選択欄があるので Default(SJIS)からOtherを選択して
UTF-8を選び Applyボタンを押せば見事変更されます。