スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タブ画面を作成する

Androidでタブを表示するには、「TabActivity」を使用するとよい。

≪サンプル画面≫
TabActivity.jpg

【main.xml】
<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<!--tab1のレイアウト定義-->
<LinearLayout
android:id="@+id/view1"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="tab1" />
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:autoText="true"
android:capitalize="sentences" />
</LinearLayout>

<!--tab2のレイアウト定義-->
<TextView android:id="@+id/view2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="tab2" />

<!--tab3のレイアウト定義-->
<TextView android:id="@+id/view3"
android:background="@drawable/gray"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="#000000"
android:text="tab3" />
</FrameLayout>


【Main.java】
package com.test.tabactivity;

import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;

public class Main extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

TabHost tabHost = getTabHost();

LayoutInflater.from(this).inflate(R.layout.main,
tabHost.getTabContentView(), true);

tabHost.addTab(tabHost.newTabSpec("tab1")
.setIndicator("tab1") // タブ表示名
.setContent(R.id.view1)); // 表示するビューを指定

tabHost.addTab(tabHost.newTabSpec("tab2")
.setIndicator("tab2")
.setContent(R.id.view2));

tabHost.addTab(tabHost.newTabSpec("tab3")
.setIndicator("tab3")
.setContent(R.id.view3));

tabHost.setCurrentTab(0);
}
}

共通のスタイルを使用する

Androidで、共通のスタイルを使用したい場合は、xmlファイルにスタイルを定義し、
そのスタイルを各部品で定義するとよい。

<スタイルの xmlファイル>・・・「res/values」配下に置く。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="txt_style01">
<item name="android:textSize">20sp
<item name="android:textColor">#EE0000
</style>
<style name="txt_style02">
<item name="android:textSize">16sp
<item name="android:textColor">#CCCCCC
<item name="android:paddingLeft">20dp
</style>

<style name="txt_style03" parent="txt_style02">
<item name="android:paddingLeft">40dp
<item name="android:background">#666699
</style>
</resources>


上記スタイルの「txt_style03」のように、「txt_style02」を継承することも可能。


<画面レイアウト>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<TextView style="@style/txt_style01"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="見出し1" />

<TextView style="@style/txt_style02"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="項目1" />
<TextView style="@style/txt_style02"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="項目2" />
<TextView style="@style/txt_style02"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="項目3" />

<TextView style="@style/txt_style01"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="見出し2" />

<TextView style="@style/txt_style02"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="項目1" />
<TextView style="@style/txt_style02"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="項目2" />
<TextView style="@style/txt_style03"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="詳細内容" />

</LinearLayout>



【画面イメージ】
スタイル画面イメージ

Android 通知アイコンの表示

Androidで、ステータスバーにアイコンを表示するサンプルを作成したいと思います。

≪イメージ≫
icon001.jpg

「アイコン表示」ボタンを押下すると、ステータスバーにアイコンおよびテキストが表示されます。
また、「アイコン消去」ボタンを押下すると、ステータスバーに表示されているアイコンが削除されます。


≪サンプルPG≫
package com.test.notication;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// 通知アイコン表示
Button btn1 = (Button) findViewById(R.id.Button01);

btn1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
NotificationManager mManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

Notification notification = new Notification();
// アイコンの設定
notification.icon = R.drawable.icon;
// アイコンの右に出力する、テキストの設定
notification.tickerText = "テキスト表示!";

Intent i = new Intent(getApplicationContext(), Main.this.getClass());
PendingIntent pend = PendingIntent.getActivity(Main.this, 0, i, 0);

// ステータスバーを広げた際の表示内容を設定
notification.setLatestEventInfo(getApplicationContext(), "title", "text", pend);

// ステータスバーにNotificationを表示する。
mManager.notify(1, notification);
}
});

// 通知アイコン消去
Button btn2 = (Button) findViewById(R.id.Button02);

btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 通知アイコンを削除する。
NotificationManager mManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
mManager.cancel(1);
}
});

}
}

メニューボタンの処理

メニューボタン押下時に、メニューを出力するサンプルを作成してみた。

≪画面イメージ≫
menu_2


まず、メニュー押下時に出力するメニューのレイアウトを作成。
menu_1

【menu.xml】
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu1" android:title="メニュー1"
android:numericShortcut="1" />
<item android:id="@+id/menu2" android:title="メニュー2"
android:numericShortcut="2" />
<item android:id="@+id/menu3" android:title="メニュー3"
android:numericShortcut="3" />
<item android:id="@+id/menu4" android:title="メニュー4"
/>
</menu>



次に、メニューを表示したいActivityのクラスに、メニューの制御を記述する。

【Main.java】
package com.test;

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

public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

/**
* メニューの作成を行う
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}

/**
* メニュー選択時の処理
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
super.onOptionsItemSelected(item);

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("タイトル");
final String message;
switch (item.getItemId()) {
case R.id.menu1:
message = "選択されたメニュー:1";
break;
case R.id.menu2:
message = "選択されたメニュー:2";
break;
case R.id.menu3:
message = "選択されたメニュー:3";
break;
case R.id.menu4:
message = "選択されたメニュー:4";
break;
default:
message = "エラー";
break;
}
builder.setMessage(message);
builder.setPositiveButton("OK",new android.content.DialogInterface.OnClickListener() {
public void onClick(android.content.DialogInterface dialog,int whichButton) {
setResult(RESULT_OK);
}
});
builder.create().show();

return true;
}
}

アプリケーションリストを表示

端末にインストールされている、アプリの一覧をリストに表示する
サンプルを作成してみた。

≪画面イメージ≫
アプリケーションリスト

メインとなるActivityでは、インストールされているアプリの一覧を取得し、
カスタマイズしたリスト(Iconとアプリ名を表示)を表示する。

【ListViewActivity】・・・リストを表示するActivity
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

public class ListViewActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.customlist);

/**
* インストールされているアプリ一覧の取得
*/
// PackageManagerの取得
PackageManager pManager = getPackageManager();

// メイン画面から起動できるアプリの一覧を取得
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);

// アプリケーション名 一覧の取得
List appNameList = pManager.queryIntentActivities(intent,
0);

// リストの作成
List listData = new ArrayList();
for (ResolveInfo rInfo : appNameList) {

// 表示する各アプリのIconを設定
CustomData data = new CustomData();
Context c = null;
try {
c = this.createPackageContext(rInfo.activityInfo.packageName,
Context.CONTEXT_RESTRICTED);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
Resources res = c.getResources();
Drawable drawable = res.getDrawable(rInfo.activityInfo
.getIconResource());
data.setDrawable(drawable);

// 各アプリ名を設定
data.setText(rInfo.loadLabel(pManager).toString());
listData.add(data);
}

CustomAdapter customAdapater = new CustomAdapter(this, 0, listData);

// アプリ一覧リストの作成
ListView listView = (ListView) findViewById(R.id.custom_list);
listView.setAdapter(customAdapater);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub

}
});

}
}



リスト1行に含まれているデータの定義を行う。

【CustomData】・・・リスト1行分のデータを定義(Iconとアプリ名)
import android.graphics.drawable.Drawable;

public class CustomData {

// Icon
private Drawable draw;
// アプリ名
private String text;

public void setDrawable(Drawable draw) {
this.draw = draw;
}

public Drawable getDrawable() {
return this.draw;
}

public void setText(String text) {
this.text = text;
}

public String getText() {
return this.text;
}

}



リストのデータのやり取りを行うアダプターを作成する。

【CustomAdapter】・・・カスタマイズしたリストのアダプター
import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomAdapter extends ArrayAdapter {
private LayoutInflater layoutInflater_;

public CustomAdapter(Context context, int textViewResourceId,
List objects) {
super(context, textViewResourceId, objects);
layoutInflater_ = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 特定の行(position)のデータを得る
CustomData item = (CustomData) getItem(position);

// convertViewは使い回しされている可能性があるのでnullの時だけ新しく作る
if (null == convertView) {
convertView = layoutInflater_.inflate(R.layout.listdata, null);
}

// CustomDataのデータをViewの各Widgetにセットする
ImageView img;
img = (ImageView) convertView.findViewById(R.id.img);
img.setImageDrawable(item.getDrawable());

TextView textView;
textView = (TextView) convertView.findViewById(R.id.text);
textView.setText(item.getText());

return convertView;
}
}



【customlist.xml】・・・リストを表示する画面レイアウト
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<ListView
android:id="@+id/custom_list"
android:layout_height="wrap_content"
android:layout_width="fill_parent" />

</LinearLayout>



【listdata.xml】・・・リスト1行分のレイアウト
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ImageView
android:id="@+id/img"
android:layout_width="50dp"
android:layout_height="50dp"
/>
<TextView
android:id="@+id/text"
android:choiceMode="singleChoice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>



以上で、最初の画面イメージのリストが表示される。

検索フォーム


カテゴリ
全記事表示リンク

全ての記事を表示する

広告
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。