2013-03-28 2 views
0

Я новый в android. Я хочу загрузить или воспроизвести изображение gif при нажатии кнопки. Я загружаю два файла gif на макет. Но когда я нажимаю следующую кнопку дальше, будет воспроизводиться следующее изображение, здесь, где мы пишем setonclickListener для нажатия кнопки ... как играть изображение gif при нажатии кнопки в android. Если вы знаете, пожалуйста, скажите мне.Как загрузить файл gif при нажатии кнопки в android?

Вот мой код ..

package com.androidqa; 

import java.io.ByteArrayOutputStream; 
import java.io.InputStream; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Movie; 
import android.util.AttributeSet; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 


public class AnimationView extends View 
{ 
    private Movie mMovie,mMovie1; 
    private long mMovieStart; 
    private long mMovieStart1; 
    Button btnFirst,btnSecond; 
    private static final boolean DECODE_STREAM = true; 
    private static byte[] streamToBytes(InputStream is) 
    { 
    ByteArrayOutputStream os = new ByteArrayOutputStream(1024); 
    byte[] buffer = new byte[1024]; 
    int len; 
    try 
    { 
     while ((len = is.read(buffer)) >= 0) { 
      os.write(buffer, 0, len); 
     } 
     } catch (java.io.IOException e) { 
     } 
     return os.toByteArray(); 
    } 
    @SuppressWarnings("unused") 
    private static byte[] streamToBytes1(InputStream is1) 
    { 
    ByteArrayOutputStream os1 = new ByteArrayOutputStream(1024); 
    byte[] buffer1 = new byte[1024]; 
    int len; 
    try 
    { 
     while ((len = is1.read(buffer1)) >= 0) { 
      os1.write(buffer1, 0, len); 
     } 
     } catch (java.io.IOException e) { 
     } 
     return os1.toByteArray(); 
    } 

    public AnimationView(Context context,AttributeSet attrs) 
    { 
     super(context,attrs); 
     setFocusable(true); 
     java.io.InputStream is; 
     java.io.InputStream is1; 
     is = context.getResources().openRawResource(R.drawable.th_welcome); 
     is1 = context.getResources().openRawResource(R.drawable.animimage); 
     if (DECODE_STREAM) 
     { 
     mMovie = Movie.decodeStream(is); 
     mMovie1=Movie.decodeStream(is1); 
     } else 
     { 
     byte[] array = streamToBytes(is); 
     mMovie = Movie.decodeByteArray(array, 0, array.length); 
     byte[] array1 = streamToBytes1(is1); 
     mMovie1= Movie.decodeByteArray(array1, 0, array1.length); 
     } 
    } 
    @Override 
    public void onDraw(Canvas canvas) 
    { 
    long now = android.os.SystemClock.uptimeMillis(); 

     if (mMovieStart == 0) { // first time 
     mMovieStart = now; 
     } 
     if (mMovie != null) 
     { 
     int dur = mMovie.duration(); 
     if (dur == 0) { 
      dur = 3000; 
     } 
     int relTime = (int) ((now - mMovieStart) % dur); 
     Log.d("", "real time :: " +relTime); 
     mMovie.setTime(relTime); 
     mMovie.draw(canvas, getWidth() - 200, getHeight()-200); 
     invalidate(); 
     } 
     if (mMovieStart1 == 0) { // first time 
      mMovieStart1 = now; 
     } 
     if (mMovie1 != null) 
     { 
      int dur = mMovie1.duration(); 
      if (dur == 0) { 
      dur = 3000; 
      } 
      int relTime = (int) ((now - mMovieStart1) % dur); 
     Log.d("", "real time :: " +relTime); 
      mMovie1.setTime(relTime); 
      mMovie1.draw(canvas, getWidth() - 200, getHeight()-200); 
      invalidate(); 
     } 
    } 
    } 
+0

Почему бы вам не использовать простую рамканизацию? AFAIK gif не будет играть в Android. –

+0

Android не поддерживает воспроизведение gif-файлов, и вам нужно будет использовать анимацию, если вы хотите играть. –

+0

Я хочу только загрузить изображение gif, а не jpg изображения ..... кадровая анимация много изображений может только анимировать .... – Bala

ответ

1

Android не поддерживает воспроизведение анимированных GIF-файлов. Если вам нужно их воспроизвести, вам нужно разбить их на кадры и оживить каждый кадр один за другим.

Также см ниже ссылку на более clearification: -

How to play a GIF file in Android?

Is it possible to play GIF format in Android?

+0

я ошибочно задал вопросы .... я не хочу воспроизводить изображение gif ... при нажатии кнопки gif-изображение будет загружено ..... gif-изображение загружает макет без нажатия кнопки ... мне нужно, когда я нажимаю кнопку, что изображение gif будет отображаться или загружаться .. спасибо заранее. @ HCD – Bala

0

В вашем MainActivity код записи, который обрабатывает нажатия кнопок. то есть:

static boolean clicked = false; 

public void onClick(View v) { 

clicked = true; 
AnimationView.invalidate(); 

/* When I am referring to AnimationView, I mean the name of your AnimationView and not the class. */ 

} 

И в вашем OnDraw метод сделать, если заявление о том, что точка зрения только признана недействительной, если нажата верно.

Удача

Смежные вопросы