如何使用Android Studio将数组包含到输入流中?

时间:2018-02-13 13:00:03

标签: android

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


    }
}

聚苯乙烯。别介意这些字母。我只是用字母来改变它,因为我做了试验和错误。抱歉我的英语。我希望你明白。很大的帮助。感谢

1 个答案:

答案 0 :(得分:0)

我建议您不要将GIF放在drawable文件夹中,而是放在assets文件夹中。您可以像这样创建InputStream

final InputStream in = getAssets().open("a.gif");
gifDecoderView.playGif(in);

不要忘记正确处理IOException