1

移動とズームのジェスチャーとボタンを備えた ImageView カスタムがあります。Button を最初にクリックしたときに ImageVIew のタッチ イベントを無効にし、次に Button をクリックしたときに ImageViewew のタッチ イベントを有効にする方法。ありがとう。

4

2 に答える 2

2

試したことはありませんが、次の方法で実行できます。

公開ブール変数を作成する

public boolean isClickedFirstTime = true;

xml で imageView を true に設定し、

あなたのボタンのonClick

 @Override
        public void onClick(View v) {
    if (v.getId() == R.id.button_id) { //whatever your id of button

    if(isClickedFirstTime)
                {
                imageView.setEnabled(false);
                isClickedFirstTime = false;
                }
                else
                {
                  imageView.setEnabled(true);
                  isClickedFirstTime = true;
                }
}
于 2013-10-18T05:09:55.440 に答える
1

アクティビティの状態を管理するのに役立つブール値または列挙型 (以下の ViewState) を使用することをお勧めします。onTouchEvent コールバックに入ったら、アクティビティが目的の状態にない場合は単純に戻ります。

これを行う方法の非常に簡単な例を次に示します。

private enum ViewState {
    LOADING,    // Just an example of other states you could have
    VIEWING,
    EDITING;
}

private ViewState eViewState = ViewState.VIEWING;

/**
 * Event attached to your button.
 */
@Override
public void onClick(View v) {
    if (eViewState == ViewState.EDITING)
        eViewState = ViewState.VIEWING;
    else
        eViewState = ViewState.EDITING;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    // Touch events should not be recorded if you're not editing anything.
    if (eViewState != ViewState.EDITING)
        return false;

    // ...
    // The rest of your code to scale, zoom, translate, etc
}
于 2013-10-18T05:25:52.950 に答える