-1

グリッドビューを作成し、すべての画像をドローアブルに追加しました。これらの画像は、グリッドビューにある9つの画像ビューにランダムに表示されます。たとえば、1秒で、ユーザーが触れるとすぐに1つの画像が表示されなくなります。 、別の画像を別の画像ビューで表示し、続行します。誰かがアイデアを持っている場合は、plsヘルプ。画像をランダムに画像ビューに表示する方法を説明します。

<
import android.content.Context;
import android.database.DataSetObserver;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListAdapter;

public class ImageAdapter extends BaseAdapter {
    private Context mContext;

    public ImageAdapter(Context c) {
        mContext = c;
    }

    public int getCount() {
        return mThumbIds.length;
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }

    // references to our images
    private Integer[] mThumbIds = {
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7,
            R.drawable.sample_0, R.drawable.sample_1,
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7,
            R.drawable.sample_0, R.drawable.sample_1,
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7
    };
}
>
4

2 に答える 2

1

CountDownTimer(または必要に応じてハンドラー)のようなものを使用する必要があります。CountDownTimerの使用方法の例を含めました。このカウントダウンタイマーを使用して、何が表示されているか(表示されていないか)、いつ表示されているかに関するイベントを発生させる必要があります。頭のてっぺんから、それを行う1つの方法は、すべてのImageView(グリッドのアダプターから取得する必要があります)を配列に入れ、その配列を5秒ごとに(タイマーを使用して)反復して決定することです。どのImageViewをInvisibleに設定する必要がありますsetVisibility(View.Invisible)

**Activity**

// CountDownTimer Example

public class ExampleActivity extends Activity implements OnClickListener {

// Constants
private static final long DURATION = 5 * 1000; // 5 seconds
private static final long INTERVAL = 500; // 500 milliseconds
private static final String FINISHED = "finished";
private static final String CANCEL_MESSAGE = "Timer Cancelled";
private static final long START_TICK_VALUE = 0;
private static final String START = "Start";
private static final String STOP = "Stop";

// Timer
private MyTimer timer;
private long tick;

// UI
private TextView tv;
private Button startButton;
private Button stopButton;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout);

    tv = (TextView) findViewById(R.id.your_text_view);
    tv.setVisibility(View.VISIBLE);

    // start button
    startButton = (Button) findViewById(R.id.button1);
    startButton.setVisibility(View.VISIBLE);
    startButton.setOnClickListener(this);   
    startButton.setText(START);
    // stop button
    stopButton = (Button) findViewById(R.id.button2);
    stopButton.setVisibility(View.VISIBLE);
    stopButton.setOnClickListener(this);
    stopButton.setText(STOP);
    stopButton.setEnabled(false);

    timer = new MyTimer(DURATION, INTERVAL);
}

// CountDownTimer class
private class MyTimer extends CountDownTimer {

    public MyTimer(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
    }

    @Override
    public void onFinish() {
        tv.setText(FINISHED);
        setStartLayout();
    }

    @Override
    public void onTick(long millisUntilFinished) {
        tick += INTERVAL;
        String tickText = String.valueOf(tick);
        tv.setText(tickText);
    }
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    // start timer
    case R.id.button1:
        resetTick();
        setStopLayout();
        timer.start();
        break;
    // stop timer
    case R.id.button2:
        timer.cancel();
        setStartLayout();
        tv.setText(CANCEL_MESSAGE);
        break;
    }
}

private void resetTick() {
    tick = START_TICK_VALUE;
}

private void setStopLayout() {
    startButton.setEnabled(false);
    stopButton.setEnabled(true);
}

private void setStartLayout() {
    startButton.setEnabled(true);
    stopButton.setEnabled(false);
}
}
于 2012-08-01T18:20:05.650 に答える
0

さて、あなたの場合GridView、アダプタを使って実装することができますが、BaseAdapterそれは悪い選択ではありません。グリッド上の9つのランダムな場所に画像を配置します。ランダムな動作を取得するために、JavaのRandomメソッドを使用できます。グリッドにもを設定するonClickListenerので、ユーザーがそれをクリックすると、グリッド上の別のスポットに対応する別の乱数を選択します。バム。私はあなたが質問に対してしたのと同じくらい多くの仕事をこの答えに置いたと思います:)

ああ、私はあなたがタイマーが欲しいことに気づきました。その場合は、JavaドキュメントでTimerクラスを確認してください。ネイティブとそうでないものの両方で、いくつかのオプションがあると確信しています。好きなものを選んでください。しかし、私の実装は同じままです。タイマーがオフになるたびに、Math.randomを使用してグリッド上のランダムな画像配置でグリッドを更新するだけです:)

于 2012-08-01T18:19:38.413 に答える