C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

ボタンに画像を貼り付けるには, イメージボタン(ImageButton)クラスを使用する.
イメージボタンを作成する方法は2通りある.
静的に決定しているものはXMLで定義して, 動的に決定するものはコードで定義するというのが一般的である.



XMLファイルにより定義

  • res/drawable-Xdpi/画像ファイル
    • res/drawable-Xdpiディレクトリに, ボタンに貼り付ける画像を置く.
  例では, Android Robotの画像を"androidrobot.png"として置いている.
    • Androidがサポートしている画像フォーマットは, 以下の4つである.
      • Bitmap(.bmp)
      • JPEG(.jpg)
      • PNG(.png)
      • GIF(.gif)
  但し, 推奨はPNGとのこと.
  • res/layout/main.xml
    • "@+id/imgbtn_id"でプログラムからアクセスするIDを定義する.
    • ボタンを画像の大きさで配置するよう"wrap_content"を指定する.
    • "@drawable/androidrobot"で表示する画像を指定する.
<?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"
  >
  <ImageButton android:id="@+id/imgbtn_id"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/androidrobot"
    />
</LinearLayout>

コードにより定義

Activity#onCreateメソッドをオーバーライドして, イメージボタンを定義するコードを記述する.
    • ImageButtonクラスとLinearLayoutクラスをインポートする.
    • イメージボタンを生成する.
    • ImageButton.setImageResourceメソッドを使って, ボタンに貼り付ける画像をセットする. 画像ファイル(androidrobot.png)は, res/drawableディレクトリに置いておく. (上記の"XMLにより定義する"を参照)
    • ボタンを配置するレイアウトを生成し, ボタンをレイアウトに追加する. このとき, ボタンをどれくらいの大きさで配置するかを指定する.
    • setContentViewメソッドに, UIツリーのルートノードを表すウィジェットとしてレイアウトを渡して, アクティビティに関連付ける.
package com.moonlight_aska.android.imagebutton01;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageButton;
import android.widget.LinearLayout;

public class ImageButton01 extends Activity {
  /** Called when the activity is first created. */

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ボタンを生成
    ImageButton imgbtn = new ImageButton(this);
    imgbtn.setImageResource(R.drawable.androidrobot);
    // レイアウトにボタンを追加
    LinearLayout layout = new LinearLayout(this);
    layout.addView(imgbtn, new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT,
      LinearLayout.LayoutParams.WRAP_CONTENT));

    setContentView(layout);
  }
}



コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

Firebase(2)

AD



管理人/副管理人のみ編集できます