スポンサーサイト

上記の広告は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>



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

Androidでリストを作成する

Androidでリストを作成。
また、クリックイベントを作成してみたいと思う。

listview.png


≪Activityクラス≫
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

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);

ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1);

// リストに表示するアイテムを設定
adapter.add("item1");
adapter.add("item2");
adapter.add("item3");

ListView lView = (ListView) findViewById(R.id.list);
lView.setAdapter(adapter);

// リストビュー クリック時のイベント
lView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView adapter, View view,
int position, long id) {
ListView listView = (ListView) adapter;
String item = (String) listView.getItemAtPosition(position);
System.out.println("item:::" + item);
}
});
}
}



≪レイアウトのXML≫
<?xml version="1.0" encoding="utf-8"?>
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

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

</LinearLayout>

Androidで、起動できるアプリの一覧を取得

Androidで、起動できるアプリの情報を一覧で取得するには、
PackageManagerを使用するとよい。

≪サンプル≫
// PackageManagerの取得
PackageManager pManager = getPackageManager();

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

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

for (ResolveInfo rInfo : appNameList) {
Log.i("appname", rInfo.loadLabel(pManager).toString());
Log.i("packageName", rInfo.activityInfo.applicationInfo.packageName);
}

画面解像度の取得

画面の解像度によって、表示を切り分けたい場合などは
画面のサイズを取得して判定することで対応できる。


/* 画面サイズの取得ソースコード */
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();

// 画面サイズがQVGAの幅以下、ネット接続がない場合は表示しない。
if (width <= 240 || !Utility.isConnected(this)) {
txt.setVisibility(TextView.INVISIBLE);
}
検索フォーム


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

全ての記事を表示する

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