2017-04-21 6 views
0

이미지를 1 초 동안 표시해야합니다. 그 시간이 끝나면 1 초 동안 보이지 않게하고, 다시 보게하려면 다시보아야합니다. 더 이상 내게 다음 사진을 표시하지 않습니다.몇 초 동안 이미지 표시 및 제거

그러나 내 코드는 이미지를 1 초만 표시하지만 다음 이미지는 나에게 표시되지 않습니다.

이 내 코드 :

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) 
private void showNextImage() { 
    // loads the image at position currentPosition 
    final Bits item = L.get(currentPosition); 
    imageBit.setImageBitmap(BitmapFactory.decodeFile(item.getbImage())); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      imageBit.setImageBitmap(BitmapFactory.decodeFile(item.getbImage())); 
     } 
    },1000); 

      handler.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         nameBit.setText(item.getbText()); 

         imageBit.setVisibility(View.GONE); 

        } 
       },1000); 
      currentPosition++; // updates the current position 
      if (L.size() > currentPosition) { // more images to show? 

       // loads the next image after some delay 
       handler.postDelayed(new Runnable() { 
        @Override 
        public void run() { 

         showNextImage(); 
        } 
       }, 1000); // in millis, 1000 for one second delay 

      } 
} 
+0

문제가 무엇인가요? –

+1

여기에 문제가 없다고 생각합니다. 우리 친구가 우리에게 알리기 위해 편지를 썼습니다 : P : –

+0

ViewFlipper를 사용해보십시오. 한 아이에서 이미지를 설정하고 다른 아이에서 빈 뷰를 설정하고 간격을 1 초로 설정할 수 있습니다. – Tasneem

답변

0

당신은 Handler를 사용하여 작업을 수행 할 수 있습니다. 그냥 깃발을 가져가 isShowing. 아래는 대략적인 아이디어이며 필요에 따라 변경할 수 있습니다.

Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     showHideImage(); 
    } 
}; 

private void showHideImage() { 
    if(isShowing) { 
     isShowing = false; 
     showImage(); //Do whatever you want to 
    } else { 
     isShowing = true; 
     hideImage(); 
    } 
    yourImageView.postDelayed(runnable, ONE_SECOND); 
} 

시작시 한 번만 showHideImage()으로 전화하면 휴식이 처리됩니다. 이런 식으로

0

그것은 일 :

선언 ...

private int currentPosition = 0; 
public ArrayList<Bitmap> ItemsBitmap; 
public Bitmap bitmap; 

public Bits items; 

초기화 :

ItemsBitmap = new ArrayList<>(); 

    for(int i = 0; i < L.size(); i++){ 
     Bits item = L.get(i); 
     ItemsBitmap.add(BitmapFactory.decodeFile(item.getbImage())); 

    } 
    for (int x = 0; x < L.size(); x++){ 
     Bits item = L.get(x); 
     nameBit.setText(item.getbText()); 
    } 
    showImages(); 

방법 : 도움 당신을위한

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) 
private void showImages() { 
    new CountDownTimer(2000, 1000) { 
     boolean continuar = true; // Si quieres que se detenga, vuelve continuar false en algun momento 
     int number = 0; 
     public void onTick(long millisUntilFinished) { 
      if(number % 2 != 0) { 
       if(number == 101) 
        number = -1; // esto hace que la bandera no crezca mucho 
       imageBit.setVisibility(View.VISIBLE); 
       nameBit.setVisibility(View.GONE); 
      } 
      else { 
       bitmap = ItemsBitmap.get(currentPosition); 
       imageBit.setImageBitmap(bitmap); 
       items = L.get(currentPosition); 
       nameBit.setText(items.getbText()); 
       currentPosition++; 
       if (ItemsBitmap.size() == currentPosition) { 
        currentPosition = 0; // Esto hace que se vuelva a repetir la lista de Bitmaps 
       } 
       imageBit.setVisibility(View.GONE); 
       if (L.size() == currentPosition){ 
        currentPosition = 0; 
       } 
       nameBit.setVisibility(View.VISIBLE); 
      } 
      number++; 
     } 
     public void onFinish() { 

      if (continuar) { 
       this.start(); 
      } 
     } 
    }.start(); 
} 

감사합니다!