2012-08-01 27 views
-1

我做了网格视图,并都在绘制现在我想的是这些图像来随机图像9图像视图的我已经在网格视图,如以1秒之尽快感动用户显示一个图像它会消失,它在不同的图像视图中显示另一个图像,并继续。 请帮助,如果任何机构有想法。之后dis如何使图像随机出现在图像视图中。如何在android中使用timer来在gridview的不同图像视图中随机显示图像?

< 
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 
    }; 
} 
> 
+2

你尝试过这么远吗?你遇到什么问题?请在你的问题上留出更多时间。 – Benoir 2012-08-01 18:00:05

+0

喜请检查一下我已经修改了疑问句我希望这是更清楚你 – 2012-08-01 18:03:23

+0

我觉得Benoir问你做了什么。我们不能为你做这个工作,哈哈。 – Andy 2012-08-01 18:15:15

回答

1

您将不得不使用类似CountDownTimer(或者如果您喜欢的处理程序)。我已经包含了一个如何使用CountDownTimer的例子。你将不得不使用这个倒数计时器来关闭显示什么(而不是显示)以及什么时候发生的事件。就在我头顶的时候,一种方法是将所有的ImageViews(你应该从网格的适配器中获得)放入一个数组中,并且每隔5秒(使用定时器)迭代该数组,并确定哪些ImageViews应该被设置为隐形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); 
} 
} 
0

那么,在你的情况你可以实现GridView与适配器,BaseAdapter是个不错的选择。你把图像放在网格上的9个随机位置。您可以使用Java中的随机方法来获得一些随机行为。您还在网格上设置了一个onClickListener,所以当用户点击它时,您会选择另一个随机数,它将对应网格上的另一个点。巴姆。我想,我把这个答案多的工作,你做的问题:)

哦,我只是意识到你想有一个计时器。那么在这种情况下,请检查定时器类的Java文档。我很确定有几个选项,不论是本机还是非本机。拿你的选择。但是我的实现依然如此。每次计时器关闭时,只需使用Math.random在网格上随机放置图像即可刷新网格:)

+0

在网格视图中实现图像的随机化..我已经发布了我现在使用的代码。你可以做一些改变它随机图像 – 2012-08-01 18:23:45

相关问题