如何使用Android Studio将数组包括在输入流中



我正在创建一个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

最新更新