我正在创建一个Android应用程序,该应用程序在列表视图中显示带有国家图像的国家名称。我的应用程序的流程是当您单击以GIF格式显示其标志的国家名称时,将其显示为另一个活动。我现在的问题是,我无法将将GIF存储到输入流中的数组中。
我的listView代码:
public class MainActivity extends AppCompatActivity {
Toolbar mToolbar;
ListView mListView;
String[] countryNames = {"A", "B", "C", "D"};
int[] countryFlags = {
R.drawable.a,
R.drawable.b,
R.drawable.c,
R.drawable.d};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
mToolbar.setTitle(getResources().getString(R.string.app_name));
mListView = (ListView) findViewById(R.id.listview);
MyAdapter myAdapter = new MyAdapter(MainActivity.this, countryNames, countryFlags);
mListView.setAdapter(myAdapter);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent mIntent = new Intent(MainActivity.this, DetailActivity.class);
mIntent.putExtra("countryName", countryNames[i]);
mIntent.putExtra("countryFlag", countryFlags[i]);
startActivity(mIntent);
}
});
}
}
,这是我的代码,在其中单击的国家名称显示标志:
public class DetailActivity extends AppCompatActivity {
private GifDecoderView gifDecoderView;
Toolbar mToolbar;
ImageView mImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
mToolbar = (Toolbar) findViewById(R.id.toolbar2);
gifDecoderView = (GifDecoderView) findViewById(R.id.gif_decoder_view);
}
private void playGifByDecoderView() {
Bundle mBundle = getIntent().getExtras();
if (mBundle != null) {
mToolbar.setTitle(mBundle.getString("countryName"));
InputStream stream = null;
try {
stream= getString(mBundle.getInt("countryFlag"));
} catch (IOException e) {
e.printStackTrace();
}
gifDecoderView.playGif(stream);
}
}
}
ps。不要介意字母。我只是用字母更改它,因为我做了反复试验。对不起,我的英语。我希望你明白。很大的帮助。谢谢
我建议将您的gif放在可绘制的文件夹中,而是将其放在assets
文件夹中。您可以在这样创建一个InputStream
:
final InputStream in = getAssets().open("a.gif");
gifDecoderView.playGif(in);
不要忘记正确处理IOException
。