2014-10-28 3 views
0

GIF 애니메이션을 표시하기 위해 WebView를 조각에 넣습니다. 그건 완벽하게 작동합니다.스피너 선택을 통해 프로그래밍 방식으로 WebView Gif 변경

mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
 
\t   
 
     @Override 
 
\t public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {  
 
\t  
 
\t  int posit = parent.getSelectedItemPosition(); 
 
\t  \t \t \t 
 
\t  pertSpinner.setPopupBackgroundResource(R.color.white); 
 
\t  pertSpinner.setValConfirmed(true); 
 
\t     
 
\t  switch (posit) { 
 
\t  
 
       case 0 : 
 
\t  \t \t  \t \t \t 
 
\t  \t toplayout.removeAllViewsInLayout(); 
 
\t   view = new GifWebView(getActivity(), "acqua"); 
 
\t  \t toplayout.addView(view); 
 
\t  \t \t  \t \t \t 
 
\t   break; 
 
\t  \t \t  \t \t \t 
 
\t   case 1 : 
 

 
\t  \t toplayout.removeAllViewsInLayout(); 
 
\t  \t view = new GifWebView(getActivity(), "aria"); 
 
\t  \t toplayout.addView(view); 
 
\t  \t \t  \t \t 
 
\t  \t break; 
 
     } 
 

 
\t } 
 

 
    @Override 
 
\t public void onNothingSelected(AdapterView<?> parent) { 
 
\t  // Another interface callback 
 
\t   \t 
 
\t } 
 
});
: 나는 GIF 애니메이션을 중지하고 내 조각에 스피너 선택하여 다른 GIF로 변경하고자 할 때

public class GifWebView extends View { 
 
    private Movie mMovie; 
 
    InputStream is; 
 
    long moviestart; 
 

 
    public GifWebView(Context context, String gifName) { 
 
    \t 
 
    \t super(context); 
 
    \t Paint p = new Paint(); 
 
    \t p.setAntiAlias(true); 
 
    \t setLayerType(LAYER_TYPE_SOFTWARE, p); 
 
    \t 
 
    \t if(gifName.startsWith("acqua")){ 
 

 
    \t \t is=context.getResources().openRawResource(R.drawable.water); 
 

 
    \t } else if(gifName.startsWith("aria")) { 
 
    \t \t 
 
    \t \t is=context.getResources().openRawResource(R.drawable.air); 
 
    \t } 
 
    \t 
 
    \t mMovie=Movie.decodeStream(is); 
 
    } 
 

 
    @Override 
 
\t protected void onDraw(Canvas canvas) { 
 

 
\t \t canvas.drawColor(Color.WHITE); 
 
\t \t super.onDraw(canvas); 
 
\t \t long now=android.os.SystemClock.uptimeMillis(); 
 
\t \t //System.out.println("now="+now); 
 
\t \t if (moviestart == 0) { // first time 
 
\t \t \t 
 
\t \t \t moviestart = now; 
 
\t \t } 
 
\t \t //System.out.println("\tmoviestart="+moviestart); 
 
\t \t int relTime = (int)((now - moviestart) % mMovie.duration()) ; 
 
\t \t //System.out.println("time="+relTime+"\treltime="+movie.duration()); 
 
\t \t mMovie.setTime(relTime); 
 
\t \t mMovie.draw(canvas,(float)this.getWidth()/(float) mMovie.width(),(float)this.getHeight()/(float) mMovie.height()); 
 
\t \t this.invalidate(); 
 
\t } 
 
}

문제가 올 다음은 웹보기 클래스입니다

그리고 이것은 toplayout이있는 XML 레이아웃입니다. GIF를 포함 :

<?xml version="1.0" encoding="utf-8"?> 
 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 
    xmlns:custom="http://schemas.android.com/apk/res/com.example.firacalc" 
 
    android:layout_width="fill_parent" 
 
    android:layout_height="fill_parent" 
 
    android:background="#FFFFFF" 
 
    android:id="@+id/fragment_container" > 
 
    
 
    ... some buttons and the spinner... 
 

 
    <LinearLayout 
 
     android:id="@+id/toplayout" 
 
     android:layout_width="116dp" 
 
     android:layout_height="116dp" 
 
     android:layout_alignTop="@+id/btnInfo" 
 
     android:layout_marginLeft="27dp" 
 
     android:layout_toRightOf="@+id/btnInfo" 
 
     android:layout_alignRight="@+id/pert_spinner" 
 
     android:orientation="horizontal" > 
 
    </LinearLayout> 
 
    
 
</RelativeLayout>

를이 코드를 사용하면 응용 프로그램은 기본 GIF를 변경하지 않습니다. 회 전자를 통해 프로그래밍 방식으로 새 GIF를 설정하는 방법이 있습니까? 도움이 될 것입니다 !!

+0

는'나는 GifWebView이 View'를 확장의'fragment'에 웹보기를 넣어하지만 - 코드에서 ** 웹보기 **이 있다면, 그것은 정말 잘입니다 숨겨진. ** WebView는 볼 수 없기 때문에 **. –

+0

좋습니다. **보기는 "GifWebView"**로 표시됩니다. – Tony86

답변

0

해결 :

switch (posit) { 
 

 
\t case 0 : 
 

 
\t toplayout.removeAllViewsInLayout(); 
 
\t view = new GifWebView(getActivity(), "aria"); 
 
\t toplayout.addView(view); 
 
\t toplayout.setVisibility(View.VISIBLE); 
 
\t  \t \t  \t \t 
 
\t break; 
 
\t  \t \t  \t \t \t 
 
\t case 1 : 
 

 
\t toplayout.removeAllViewsInLayout(); 
 
\t view = new GifWebView(getActivity(), "acqua"); 
 
\t toplayout.addView(view); 
 
\t  \t \t  \t \t \t 
 
\t break; 
 

 
}

관련 문제