2015-02-15 2 views
0

Я пытаюсь установить изображение и изменить его на другое изображение после небольшой паузы (например, мигание); И он должен запускаться автоматически после запуска приложения.Мне нужно установить SetImageResource, приостановить и изменить на другой setImageResource

public class MainActivity extends ActionBarActivity { 

ImageView image1; 

private void flash(){ 
    Thread flashing=new Thread(){ 
     public void run(){ 
      try { 
       image1.setImageResource(R.drawable.red_circle); 
       sleep(1000); 
       image1.setImageResource(R.drawable.white_circle); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 
    flashing.start(); 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    image1=(ImageView)findViewById(R.id.imageView1); 

    flash(); 

} 

} Это приводит к ошибке и приложение, чтобы остановить.

+0

Logcat пожалуйста. Возможная ошибка: 'Только исходный поток, создавший иерархию представлений, может коснуться его представлений. Рекомендуется использовать «обработчик». –

+0

02-15 22: 20: 02.821: E/ViewRootImpl (23819): com.HermesLee.memorygame.MainActivity: Только исходный поток, создавший иерархию представлений, может коснуться его представлений. –

ответ

1

попробовать этот один:

ImageView slide; 
private Handler handler; 
private int showPic = -1;// default value should be -1 
Integer[] ids = new Integer[] { R.drawable.red_circle, R.drawable.white_circle}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.slide_show); 
    slide = (ImageView) findViewById(R.id.slide); 
    handler = new Handler(); 
    handler.postDelayed(imageUpdate, 10); 
} 


private void setNextImage() { 
    showPic++; 
    if (showPic == ids.length) { 
     showPic = -1; 
     handler.removeCallbacks(imageUpdate); 
    } else { 
     slide.setImageResource(ids[showPic]); 
     handler.postDelayed(imageUpdate, 1000); 
    } 
} 

Runnable imageUpdate= new Runnable() { 
    @Override 
    public void run() { 
     setNextImage(); 
    } 
}; 

UPDATE: если вы хотите петлю на изображениях вы можете изменить setNextImage() метод к этому, также отметить, что я изменить значение по умолчанию для showPic -1 (если вы хотите цикл или нет его значение по умолчанию должно быть -1):

private void setNextImage() { 
    showPic++; 
    if (showPic == ids.length) { 
     showPic = 0; 
    } 
    slide.setImageResource(ids[showPic]); 
    handler.postDelayed(imageUpdate, 1000); 
} 

в onDestroy() метод удалить CALLBACK:

public void onDestroy(){ 
    handler.removeCallback(imageUpdate); 
    super.onDestroy(); 
} 
+0

Спасибо за ответ. Я не мог понять использование баннера, поскольку он не имеет ссылки ни на что другое. Извините, я довольно новичок в Android, поэтому мне может что-то не хватает. –

+0

извините мою ошибку пасты. Я отредактировал свой ответ – MHP

+0

@NguyenDoanTung благодарит вас за редактирование, я меняю свой ответ, чтобы показать индекс 0 тоже. ваше редактирование было хорошим, но они отвергают его. – MHP