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 }
});
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를 설정하는 방법이 있습니까? 도움이 될 것입니다 !!
는'나는 GifWebView이 View'를 확장의'fragment'에 웹보기를 넣어하지만 - 코드에서 ** 웹보기 **이 있다면, 그것은 정말 잘입니다 숨겨진. ** WebView는 볼 수 없기 때문에 **. –
좋습니다. **보기는 "GifWebView"**로 표시됩니다. – Tony86