2013-12-11 58 views
3

我想使用這個Android GIF編碼器 https://github.com/nbadal/android-gif-encoder/blob/master/GifEncoder.java如何在我的應用中實現android gif編碼器?

我有錯誤,想在我的Android應用程序來實現這一點。

以下錯誤是:

  1. outStream.write(generateGIF()); 描述資源路徑位置類型 方法generateGIF()是未定義的類型新View.OnClickListener(){} Main.java/F/SRC /淨/ S/F線197的Java問題

  2. 公共布爾光潔度(){ 描述資源路徑位置類型 返回類型是與Activity.finish()AnimatedGifEncoder.java/F/SRC /淨/ S/F線164的Java問題

  3. 公共字節[]的onClick(查看不相容v){ 描述資源路徑位置類型 返回類型與View.OnClickListener.onClick不兼容(View)Main.java/f/src/net/s/f第1行80的Java問題

我的代碼如下:

save.setOnClickListener(new OnClickListener() { 

@Override 
public byte[] onClick(View v) { 
    // TODO Auto-generated method stub    


    ArrayList<Bitmap> bitmaps = adapter.getBitmapArray(); 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    AnimatedGifEncoder encoder = new AnimatedGifEncoder(); 
    encoder.start(bos); 
    for (Bitmap bitmap : bitmaps) { 
     encoder.addFrame(bitmap); 
    } 
    encoder.finish(); 
    return bos.toByteArray(); 

    FileOutputStream outStream = null; 
    try{ 
     outStream = new FileOutputStream("/sdcard/generate_gif/test.gif"); 
     outStream.write(generateGIF()); 
     outStream.close(); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 

    Toast.makeText(Main.this, "Saved.", Toast.LENGTH_SHORT).show(); 

} 
}); 

//////////////////////////// ///////////////

要使用這個類,下面是一個示例幫助方法生成GIF字節數組。請注意,getBitmapArray()函數是一種立即返回圖像適配器中的所有位圖文件的方法。所以輸入是一個適配器中的所有位圖文件,輸出是一個可以寫入文件的字節數組。

public byte[] generateGIF() { 
    ArrayList<Bitmap> bitmaps = adapter.getBitmapArray(); 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    AnimatedGifEncoder encoder = new AnimatedGifEncoder(); 
    encoder.start(bos); 
    for (Bitmap bitmap : bitmaps) { 
     encoder.addFrame(bitmap); 
    } 
    encoder.finish(); 
    return bos.toByteArray(); 
} 

要使用此功能,請執行以下操作,然後將文件保存到SDcard中。

FileOutputStream outStream = null; 
     try{ 
      outStream = new FileOutputStream("/sdcard/generate_gif/test.gif"); 
      outStream.write(generateGIF()); 
      outStream.close(); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
+0

編譯器已經給了你一個答案。毫無意義的問題。 –

回答

0

On click()返回類型必須爲void。

2

如果您想直接保存GIF在一個文件中,您的onClick()方法應該看起來像這樣:

@Override 
public void onClick(View v) { 
    ArrayList<Bitmap> bitmaps = adapter.getBitmapArray(); 
    File outputFile = new File("/sdcard/generate_gif/test.gif"); 
    FileOutputStream fos = null; 
    try { 
     fos = new FileOutputStream(outputFile); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 

    if (fos != null) { 
     AnimatedGifEncoder gifEncoder = new AnimatedGifEncoder(); 
     gifEncoder.start(fos); 

     for (Bitmap bitmap : bitmaps) { 
      gifEncoder.addFrame(bitmap); 
     } 

     gifEncoder.finish(); 
    } 

    Toast.makeText(Main.this, "Saved.", Toast.LENGTH_SHORT).show(); 
} 
相關問題