2011年7月28日木曜日

AppWidgetの作成方法

Androidのホーム画面に貼りつけできるAppWidgetの作り方

1.レイアウト画面の作成
通常アプリ同様 layout/xml 以下にレイアウトを作成する

2. res/xmlフォルダに、appwidget-provider設定ファイルの作成

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:minWidth="72dip"
  android:minHeight="72dip"
  android:updatePeriodMillis="60000"
  android:initialLayout="@layout/レイアウトのXMLファイル(.xmlは不要)"
/>

○サイズ指定(単位はdip)
・n dip = 74 x n - 2
・nはブロック数。nは1~4まで

・更新間隔(android:updatePeriodMillis)
・30分以下は30分として扱われる
・ミリ秒間隔で、onUpdate()が呼ばれる
・バッググラウンドでも更新が発生する
・0を指定すると、onUpdate()メソッドは一度だけ呼ばれる。
onUpdeteで呼ばれると、インスタンスが再生成されることに注意。
パラメータは、static にすれば保持できる

3.AndroidManifest.xmlの編集

<receiver android:name="クラス名" android:label="アプリ名">
  <intent-filter>
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
  </intent-filter>
  <meta-data android:name="android.appwidget.provider" android:resource="@xml/設定用XMLファイル(.xmlは不要)" />
</receiver>

4.コードを記述
AppWidgetProvider を継承したクラスを作成する


public class WordsWidgets extends AppWidgetProvider {

 @Override
 public void onEnabled(Context context) {
  super.onEnabled(context);
 }

 @Override
 public void onUpdate(Context context, AppWidgetManager appWidgetManager,
   int[] appWidgetIds) {
  super.onUpdate(context, appWidgetManager, appWidgetIds);
 }

 @Override
 public void onDeleted(Context context, int[] appWidgetIds) {
  super.onDeleted(context, appWidgetIds);
 }

 @Override
 public void onDisabled(Context context) {
  super.onDisabled(context);
 }

 @Override
 public void onReceive(Context context, Intent intent) {
  super.onReceive(context, intent);
 }
}

2011年7月21日木曜日

レイアウトのまとめ


●レイアウトの指定

◆LinearLayout
縦または横の一列に並べるレイアウト
android:orientation="vertical"か"horizontal"を
指定することで、縦か横かを指定する

○android:orientation
・vertical/horizontal
LinearLayoutを指定したとき設定する
それぞれ縦、横一列に並べることができる

◆RelativeLayout
ヴューの位置を、相対的な位置で指定する
android:gravity属性を指定して、相対的な位置を指定すること


○他のヴィジェットを基準にして、位置を決めるプロパティ
・android:layout_above=”@id/XXXX″
・android:layout_below=”@id/XXXX″
・android:layout_toLeftOf=”@id/XXXX″
・android:layout_toRightOf=”@id/XXXX″
指定されたヴィジェットに対して(上/下/左/右)の場所に配置する

・android:layout_alignTop=”@id/XXXX″
・android:layout_alignBottom =”@id/XXXX″
・android:layout_alignLeft=”@id/XXXX″
・android:layout_alignRight=”@id/XXXX″
指定されたヴィジェットから(上/下/左/右)に整列させる

・android:layout_alignBaseLine=”@id/XXXX″
2つのヴィジェットのベースラインを揃える

●レイアウトパラメータ

◆android:layout_height/android:layout_width

・fill_parent
元のビューのサイズに関係なく可能な限り拡大する
ビューの幅や高さを設定しても無効となる

・match_parent
fill_parentと同じ。 API レベル8以降だと fill_parentではなく
match_parentとする

・wrap_content
表示に必要なサイズに設定する
「setWidth」メソッドや「setHeight」メソッドで
ビューに幅と高さを設定していた場合には、その設定されたサイズに調整される

◆android:gravity
オブジェクトの配置方法を指定する
"|"で区切り複数指定することも出来る

・top/bottom/left/right
上下左右に配置する
・fill_vertical/fill_horizontal
高さ/幅を、コンテナのサイズに合わせる
・fill(default)
高さと幅を、コンテナのサイズに合わせます。
・center_vertical/center_horizontal/center
左右中央/上下中央/上下左右中央に配置し、サイズ変更は行わない

2011年7月18日月曜日

Preferenceの使い方

androidでは、アプリケーションなどの設定情報はXMLファイルとして保存される。
これを簡単に読み書きできる方法がある。

やり方:
1. res/xml 配下に、preferences.xmlを追加する
2. ルートタグ preferencescreen とした、設定用のXMLファイルを記述する
3. PreferenceActivityを継承した、Preference専用のアクティビティを作り
 addPreferencesFromResource()で、先ほど追加したXmlファイルのリソースを指定する
Preference取得方法:
4. PreferenceManager.getDefaultSharedPreferences から、SharedPreferencesを取得する
5. preferences.xmlに指定した key となる文字列を引数にして、設定値を取得する


これだけで実現できる。なんとも便利だ。
あとは、PreferenceScreenのxmlファイルを、書式に沿った書き方をすれば、
チェックボックスや、リストボックスや、テキストボックス等
結構色々な形式での入力方法をサポートしている。

PreferenceCategoryタグでくくることで、カテゴリ分けも可能
以下は、チェックボックスと、テキストボックスを含むpreferences.xmlファイル




 
 

 



以下は、Preferenceの取得コード
引数の2番目には、取得が失敗した時のデフォルト値が入る。


SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
boolean jspEnable = pref.getBoolean("checkbox", false);
string url = pref.getString("url1", "http://google.co.jp");

以下は、Preference用のアクティビティ

public class Preference extends PreferenceActivity
{
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  addPreferencesFromResource(R.xml.preferences);
 }
}

2011年7月14日木曜日

SyntaxHighlighterをBloggerで使う

Android関連ではないですがメモ。
ソースコード貼り付けるときに、行番号を付けて綺麗に整形して貼りつけてくれるスクリプトがあったので
さっそく使ってみた。

public void onCreate(Bundle savedInstanceState)
 {
        super.onCreate(savedInstanceState);

        host = getTabHost();
        host.setOnTabChangedListener(this);

        TabSpec tab[] = new TabSpec[3] ;
        String url[] ={ "http://", "http://", "http://" };

        for(int i=0; i<3; i++)
        {
         // TabSpecを生成
         tab[i] = host.newTabSpec(tabName[i]);
         tab[i] .setIndicator(tabName[i]); // タブに表示する文字列

            // インテントを生成してアドレスを保存する
            intent[i] = new Intent(this, study.android2.Browser.class );

            intent[i].putExtra("url", url[i]);
            tab[i].setContent(intent[i]);
            host.addTab(tab[i]);
        }

        now = intent[0];
        host.setCurrentTab(0);
    }  

かなり綺麗にソースコードを晴れるようになった!超イイ!
 注意点は、JavaScriptを、レイアウトの右下に配置しないと動かなかったこと。

 ※こちらのサイトを参考にさせて頂きました。感謝!
  http://ywafield.blogspot.com/2011/03/yet-another-how-to-use.html

2011年7月13日水曜日

Toastの利用

選択の必要のない、一時的なポップアップメッセージの表示として便利

Toast.makeText(this, "Message", Toast.LENGTH_LONG).show();
 

この1行だけでOK。ちなみにthisはコンテキスト。

2011年7月12日火曜日

デバッグログの出力方法

デバッグメッセージは、以下のコードで出力できる。

Log.d("text","text");

しかし、eclipse上のログ窓が出てないときはどうするか?

eclipseの「ウィンドウ」→「ビューの表示」→「その他」を選択し
androidフォルダ内にある”LogCat”を表示させればOK。

ウィンドウ多すぎですねー。

アクティビティの作成方法

1.ファイル→新規→クラスから android.app.Activity
を継承させたクラスを作成する

2.AndroidManifest.xmlを編集し、アクティビティを追加する。

↓パッケージ名が同じ階層なら以下のような形で記載する

<activity android:name=".ClassName"
 android:icon="@drawable/icon"
 android:label="@string/app_name">
</activity>

マニフェストへの追加を忘れないこと!