ボタンやイメージビューの、クリックやタッチイベントを追加します。
Button mybtn = (Button)findViewById(R.id.MyButton); // タッチイベント // ボタンを押すとACTION_DOWN、離すとACTION_UPが発生 mybtn.setOnTouchListener(new View.OnTouchListener(){ public boolean onTouch(View v, MotionEvent event){ if (event.getAction() == MotionEvent.ACTION_DOWN) { //押したとき } else if (event.getAction() == MotionEvent.ACTION_UP) { //離したとき } // trueにすると他のリスナーが呼ばれない return false; } }); // 長押しイベント mybtn.setOnLongClickListener(new View.OnLongClickListener(){ public boolean onLongClick(View v){ // trueにすると他のリスナーが呼ばれない return false; } }); // クリックイベント mybtn.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ } });
ImageViewにも使用できます。
イベントリスナーはButtonクラスでもViewクラスでもいけるようです。
ImageViewをアニメーションさせてみます。
まずはコードでアニメーションを設定する方法を紹介します。
以下のようなImageViewがあったとします。
<ImageView id="@+id/img" android:src="@drawable/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" />
ImageViewオブジェクトを生成
ImageView img = (ImageView)findViewById(R.id.img);
移動するアニメーション【TranslateAnimation】
//TranslateAnimation(float fromX, float toX, float fromY, float toY) TranslateAnimation translate = new TranslateAnimation(0, 10, 0, 0); //動作時間を設定(単位ms) translate.setDuration(1000); //繰り返す回数を設定(1度でよい場合は設定しない) translate.setInterpolator(new CycleInterpolator(3)); //アニメーションを開始 img.startAnimation(translate);
ActivityのonCreateで初期設定をおこなう
// アダプターを登録(レイアウトは割愛します) ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item); // 適当にアイテムを追加します adapter.add("alpha"); adapter.add("beta"); ListView listView = (ListView)findViewById(R.id.list); listView.setAdapter(adapter); // リストビューのアイテムがクリックされた時に呼び出されるコールバックリスナーを登録 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ListView listView = (ListView) parent; // クリックされたアイテムを取得します String item = (String) listView.getItemAtPosition(position); Log.v("test", item); } }); }
別にイベントクラスを作成する場合
続きを読む…»
【Listactivity.java】
public class ListActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // データの作成 List<CustomData> objects = new ArrayList<CustomData>(); Bitmap image; image = BitmapFactory.decodeFile(getResources(), R.drawable.ic_lancher); CustomData item = new CustomData(); item.setImage(image); for ( int i = 1; i <= 3; i++ ) { item.setId(i); item.setNumber(String.valueOf(i)); objects.add(item); } CustomAdapter customAdapter = new CustomAdapter(this, 0, objects); ListView listView = (ListView)findViewById(R.id.list); listView.setAdapter(customAdapter); } } class CustomAdapter extends ArrayAdapter<CustomData> { private LayoutInflater layoutInflater_; public CustomAdapter(Context context, int textViewResourceId, List<CustomData> 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.list_item, null); } // CustomDataのデータをViewの各Widgetにセットする ImageView imageView; imageView = (ImageView)convertView.findViewById(R.id.imageView1); imageView.setImageBitmap(item.getImage()); TextView textView; textView = (TextView)convertView.findViewById(R.id._id); textView.setText(String.valueOf(item.getId())); TextView textView2; textView2 = (TextView)convertView.findViewById(R.id.number); textView2.setText(item.getNumber()); return convertView; } } class CustomData { private Bitmap image_; private int id_; private String number_; public void setImage(Bitmap image) { image_ = image; } public Bitmap getImage() { return image_; } public void setId(int id) { id_ = id; } public int getId() { return id_; } public void setNumber(String number) { number_ = number; } public String getNumber() { return number_; } }