我正在尝试使用这个Android Gif编码器 https://github.com/nbadal/android-gif-encoder/blob/master/GifEncoder.java
我在我的Android应用程序中尝试实现此错误。
以下错误是:
outStream.write(generateGIF()); 描述资源路径位置类型 方法generateGIF()未定义类型new View.OnClickListener(){} Main.java / f / src / net / s / f line 197 Java问题
public boolean finish(){ 描述资源路径位置类型 返回类型与Activity.finish()不兼容AnimatedGifEncoder.java / f / src / net / s / f第164行Java问题
公共字节[] onClick(查看v){ 描述资源路径位置类型 返回类型与View.OnClickListener.onClick(View)不兼容Main.java / f / src / net / s / f第180行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()函数是一种立即返回图像适配器中所有Bitmap文件的方法。因此输入是一个适配器中的所有Bitmap文件,输出是一个字节数组,您可以写入该文件。
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();
}
要使用此功能,请执行以下操作,然后将文件保存到SD卡中。
FileOutputStream outStream = null;
try{
outStream = new FileOutputStream("/sdcard/generate_gif/test.gif");
outStream.write(generateGIF());
outStream.close();
}catch(Exception e){
e.printStackTrace();
}
答案 0 :(得分: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();
}
答案 1 :(得分:0)
在click()上,返回类型必须为void。