fc2ブログ

2010/01/20(水)


ここではAndroid開発者向けにいくつかのTipsを紹介します。
例として記載するソースコードは、わかりやすさ重視で必要最低限のものしか記述していませんので、そのままでは動作しません。ある程度AndroidやJavaの知識を習得している方を対象としています。

●導入
 ・継承関係表
 ・コマンドラインからの操作
 ・端末各種 AVD設定表

●ダイアログ関連
 ・ダイアログのボタンイベント
 ・ダイアログのカスタマイズ
 ・ダイアログのキャンセル・閉じる

●View関連
 ・色を指定する
 ・フォントを変更する
 ・Viewコンポーネントの余白設定
 ・TextViewのカスタマイズ
 ・ImageViewのカスタマイズ
 ・Viewのクリックイベント
 ・Viewのタッチイベント
 ・リソースの定義
 ・レイアウトの部品化
 ・背景形状(shape)の定義
 ・リストビュー
 ・リストビューのカスタマイズ

●画面遷移
 ・遷移先へ値を渡す
 ・遷移元へ値を返す
 ・オブジェクトの受け渡し
 ・ページをめくる

●メニュー
 ・メニュー
 ・サブメニュー
 ・タブメニュー

●音声・画像
 ・Bitmapクラス
 ・音を鳴らす

●アニメーション
 ・Tweenアニメーション
 ・Tweenアニメーション for XML
 ・Frameアニメーション

●GPS
 ・GPSを使用する
 ・GPSのエミュレーション

●ファイル操作
 ・ファイルの入出力
 ・SDカードからファイルを読み込む

●ネットワーク
 ・ネットワークに接続する場合の定義

●その他
 ・Serializableインタフェースの警告
 ・コンパイラの警告を抑制
コメント(0) | トラックバック(0) | 12:16:46

2010/07/19(月)


色を指定する場合は、Colorクラスを使用します。

import android.app.Activity;
import android.graphics.Color;
 
public class MyClass extends Activity{
 
 public void myMethod(){
  TextView text = (TextView)this.findViewById(R.id.myText);
 
  // Colorで定義された色
  // BLACK, BLUE, CYAN, DKGRAY, GRAY, GREEN, LTGRAY, MAGENTA,
  // RED, TRANSPARENT, WHITE, YELLOW
  text.setTextColor(Color.WHITE);
 
  // オリジナル色指定
  // dimgray 0x696969
  text.setTextColor(Color.rgb(105,105,105));
 
  // オリジナル色指定(透明度含む)
  // 透明度 0~255
  // dimgray 0x696969
  text.setTextColor(Color.argb(255,105,105,105));
 }
}

コメント(0) | トラックバック(0) | 12:03:33

2010/07/21(水)


Viewコンポーネントを配置する際、マージンやパディングのような余白を指定したい場合は、ViewGroupのsetMargins()やViewのsetPadding()を使用します。

import android.app.Activity;
import android.widget.*;
 
public class MyClass extends Activity{
 
 public void myMethod(){
  int FP = LinearLayout.LayoutParams.FILL_PARENT;
  int WC = LinearLayout.LayoutParams.WRAP_CONTENT;
 
  TextView text = new TextView(this);
  LinearLayout layout = new LinearLayout(this);
  LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(WC,WC);
 
  // マージンの設定 left:5px top:10px right:15px bottom:20px
  params.setMargins(5,10,15,20);
 
  // パディングの設定 left:5px top:10px right:15px bottom:20px
  text.setPadding(5,10,15,20);
 
  layout.addView(text,params);
 }
}

xmlだとこうなります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
>
<TextView android:id="@+id/text"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_marginLeft="5px"
 android:layout_marginTop="10px"
 android:layout_marginRight="15px"
 android:layout_marginBottom="20px"
 android:layout_margin="10px" // すべてに10px
 android:paddingLeft="5px"
 android:paddingTop="10px"
 android:paddingRight="15px"
 android:paddingBottom="20px"
 android:padding="10px" // すべてに10px
/>
</LinearLayout>

コメント(0) | トラックバック(0) | 12:31:44

2010/07/23(金)


Serializableインタフェースを実装したクラスで、「シリアライズ可能クラスは long 型の static final serialVersionUID フィールドを宣言していません」という警告をなくしたい場合(警告が出ていても特に問題はありません)、警告文通りにserialVersionUIDを宣言します。
serialVersionUIDに指定する数値は、他のSerializableクラスとかぶらなければ、適当に決めて構いません。

import java.io.Serializable;
 
public class MyClass implements Serializable{
 
 private static final long serialVersionUID = 42L;
 
}

コメント(0) | トラックバック(0) | 12:59:57

2010/07/24(土)


ダイアログクラスAlertDialogには、あらかじめ3つのボタンが組み込まれており、インタフェースDialogInterfaceのonClickメソッドの第2引数にて、どのボタンが押されたか取得することができます。

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
 
public class MyClass extends Activity{
 
 public void myMethod(){
  // リスナーの作成
  DialogInterface.OnClickListener lis = new DialogInterface.OnClickListener(){
   public void onClick(DialogInterface dialog,int which){
    switch(which){
     case DialogInterface.BUTTON_POSITIVE:
     case DialogInterface.BUTTON_NEUTRAL:
     case DialogInterface.BUTTON_NEGATIVE:
    }
   }
  };
 
  // ダイアログの作成
  AlertDialog.Builder bldr = new AlertDialog.Builder(this);
  bldr.setTitle("Title");
  bldr.setMessage("Message");
  bldr.setPositiveButton("OK",lis); // 左ボタン
  bldr.setNeutralButton("NG",lis); // 真ん中ボタン
  bldr.setNegativeButton("キャンセル",lis); // 右ボタン
  bldr.create();
  bldr.show();
 }
}

コメント(0) | トラックバック(0) | 14:02:26