我正在创建一个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);
}
}
}
聚苯乙烯。别介意这些字母。我只是用字母来改变它,因为我做了试验和错误。抱歉我的英语。我希望你明白。很大的帮助。感谢
答案 0 :(得分:0)
我建议您不要将GIF放在drawable文件夹中,而是放在assets
文件夹中。您可以像这样创建InputStream
:
final InputStream in = getAssets().open("a.gif");
gifDecoderView.playGif(in);
不要忘记正确处理IOException
。