-1

색상을 변경하는 gmail 앱과 비슷한 진행 표시 줄 (중간 진행률 막대)을 만들고 싶습니다. sdk/platforms에서 progress_indeterminate_horizontal.xml을 유지하고 업데이트하여이 작업을 수행 할 수 있습니다. 애니메이션 (다중 컬러 이미지)을 사용하고 싶지 않습니다. 나는 이것을 사용하여 xml (나는 그라데이션을 사용하고 싶다)을 사용하고 싶다. 어떤 도움을 주시면 감사하겠습니다. 사전다중 색상 진행 표시 줄

+0

이 링크 [포스트]를 읽고 [1] [1] : http://stackoverflow.com/questions/16413633/seekbar-progress-bar-with-multiple-colors – Fortran

답변

2

여기 내 구현의 : 애니메이션 무지개 그라데이션을 그립니다. 멋지다, 내가 그렇게 말하면 나 자신. 이것은 XML 기반이 아니지만, 만들어 질 수 있고 그라디언트를 사용합니다. 아마도 그것은 당신에게 몇 가지 아이디어를 줄 것입니다.

설정 :

pb = (ProgressBar) findViewById(R.id.progressbar_Horizontal); 
    GradientDrawable rainbow = new GradientDrawable(Orientation.LEFT_RIGHT, 
      new int[] {Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED}); 

    AnimationDrawable ad = getProgressBarAnimation(); 
    pb.setBackgroundDrawable(ad); 

그리고 애니메이션 :

private AnimationDrawable getProgressBarAnimation(){ 

    GradientDrawable rainbow1 = new GradientDrawable(Orientation.LEFT_RIGHT, 
      new int[] {Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW}); 

    GradientDrawable rainbow2 = new GradientDrawable(Orientation.LEFT_RIGHT, 
      new int[] { Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN});   

    GradientDrawable rainbow3 = new GradientDrawable(Orientation.LEFT_RIGHT, 
      new int[] { Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE, Color.CYAN }); 

    GradientDrawable rainbow4 = new GradientDrawable(Orientation.LEFT_RIGHT, 
      new int[] { Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA, Color.BLUE }); 

    GradientDrawable rainbow5 = new GradientDrawable(Orientation.LEFT_RIGHT, 
      new int[] { Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA }); 

    GradientDrawable rainbow6 = new GradientDrawable(Orientation.LEFT_RIGHT, 
      new int[] {Color.MAGENTA, Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.RED }); 


    GradientDrawable[] gds = new GradientDrawable[] {rainbow1, rainbow2, rainbow3, rainbow4, rainbow5, rainbow6}; 

    AnimationDrawable animation = new AnimationDrawable(); 

    for (GradientDrawable gd : gds){ 
     animation.addFrame(gd, 100); 

    } 

    animation.setOneShot(false); 

    return animation; 


} 
1

This is what you are looking for.에서

덕분에 프로젝트에서이 라이브러리를 추가하고 당신이 그것을 사용할 수 있습니다.

그런 다음 일반 프로세스 막대로 사용할 수 있습니다. 예 :

private SmoothProgressBar mProgressBar; 

에서 OnCreate :

mProgressBar = (SmoothProgressBar) findViewById(R.id.progressbar); 
mProgressBar.progressiveStart(); 

OnPause :

mProgressBar.progressiveStop(); 
+0

감사를위한 Tushar를 지원하지만 라이브러리를 찾고 있지 않습니다. 접근 방법을 찾고 있습니다. Addin g이 라이브러리는 내가 필요로하는 코드를 무겁게 만들 것입니다. @CommonsWare가 위에서 언급 한 접근법을 사용할 수있었습니다. – CodingRat

+0

저는이 라이브러리를 사용하고 있습니다. 그것은 그렇게 무거운 것이 아닙니다. 그것을 시도하고 직접보십시오. –

+0

이 링크는 질문에 대답 할 수 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. – Taifun