タブレット用プログラムの書き止め

android OS & iPadOS の記録。

基礎。imageButton でアイコンを並べる。

2021-11-13 19:30:41 | Android studio 日記

サムネイルを recyclerView で表示し、seekbar と連動させる。
そして、アイコンを並べて機能別に処理をさせる。その基本部分の実装と処理分岐を記述する。
実際は、mainActivity でOnClickListener() に実装、ページクラスに処理部分を記述。

【activity_main.xml】



        < LinearLayout
            android:id="@+id/icon_layout"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            < ImageButton
                android:id="@+id/icon_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_1" />

            < ImageButton
                android:id="@+id/icon_2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_2" />

            < ImageButton
                android:id="@+id/icon_3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_3" "/>

        </ LinearLayout>

 

【MainActivity.java】


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        ImageButton ib = (ImageButton)findViewById( R.id.icon_1 );
        ib.setOnClickListener( iconButtonClick );

        ib = (ImageButton)findViewById( R.id.icon_2 );
        ib.setOnClickListener( iconButtonClick );

        ib = (ImageButton)findViewById( R.id.icon_3);
        ib.setOnClickListener( iconButtonClick );

        略

    }

 

// 処理部分は別クラスにあっても問題なさそう。別クラスでは、public で宣言か、メソッドで受け渡し。

    private View.OnClickListener iconButtonClick = new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                switch ( v.getId() ) {
                    case R.id.icon_1:
                        // 処理
                        break;
                    case R.id.icon_2:
                        break;
                    case R.id.icon_3:
                        break;
                }
            }
    };

 

実装部分と処理部分を分けるとスッキリする。
まだ、onClick()が呼ばれる条件?範囲?グループ?よく理解できていない。クリックされたら全てが1つのonClick()で呼ばれる のではなさそう。う~ん、今回は3つのボタンクリックをグループとして実装した。この3つはクリックされると、ここのonClick()が呼ばれる。みたい。

個々に実装したら、それぞれのonClick()が呼ばれる?。Activity で implements View.OnClickListener を使うとまた違う動作となる。面倒くさい。

とりあえず、v.getID() で処理を分岐させたいので今回の手法を使う。実装と処理を別クラスに記述できるから都合が良い。