如何在数组中加载图像以更快地显示android

时间:2016-08-25 02:33:19

标签: java android multithreading load

你好我在一个线程中运行一个onuithread它有一些时间,每次都会随机变化,直到它从列表中选择2个项目。我的问题是这个项目有图片,我的想法是每次更改图片应更改的名称,但添加图片时,它将显示如下所示: 跳过66帧!应用程序可能在其主线程上做了太多工作。

有没有办法在数组中加载图像,然后在runuithread中只显示它们而不再加载它们?在我的runuithread中:

 while (i < 400) {
                try {
                    Thread.sleep(i);
                    // here you check the value of getActivity() and break up if needed
                    if (getActivity() == null) {
                        return;
                    }
                    getActivity().runOnUiThread(new Runnable() // start actions in UI thread
                    {

                        @Override
                        public void run() {
                            start_btn.setEnabled(false);
                            Collections.shuffle(numbers);
                            Collections.shuffle(players_list);
                            player1_tv.setText(players[players_list.get(0)]);
                            player2_tv.setText(players[players_list.get(1)]);
                            group1_tv.setText(all_teams.get(numbers.get(0)));

                            player1_iv.setImageResource(getResources().getIdentifier(pictures.get(numbers.get(0)),"drawable",con.getPackageName()));
                            group2_tv.setText(group.get(numbers.get(1)));
                            i += 30;

                            if (i > 420) {
                                start_btn.setEnabled(true);
                            }
                        }
                    });
                } catch (InterruptedException e) {
                    // ooops
                }

1 个答案:

答案 0 :(得分:1)

可以加载图像并将其存储为Bitmap对象。您可以从以下资源加载Bitmap:

Bitmap bm = BitmapFactory.decodeResource(getResources(), {resourceId});

然后你可以设置图像:

player1_iv.setImageBitmap(bm);

希望这有帮助