我是Android编程的新手,最近一直在学习开发一些应用程序。直到我遇到处理图像时才出现问题。我正在尝试开发一个简单的应用程序,更像是一本电子书,显示存储在drawable文件夹中的图片(JPEG / PNG)。
我的第一种方法是使用Gallery小部件,但我无法使用它实现适当的缩放。因此,我现在使用简单的Imageview一次显示一个位图,并在触摸事件上更改或缩放位图。为了做到这一点,我必须在活动启动期间将所有位图解码为位图数组,以便我可以随时使用它们。
我的应用程序在我的Galaxy Tab上开始正常,但每个手机除了大约需要3-5秒才启动。我只是想知道在启动时是否有一种简单的方法来加载位图。如果我的问题已被提出,请原谅我,但我搜索了stackoverflow很多,但无法找到我的问题的具体答案。这是我的代码。希望有人能提供帮助。
package ....
imports ....
public class ImageViewFlipper extends Activity {
private ViewFlipper viewFlipper;
private Bitmap[] bMap= new Bitmap[15];
private TextView currentpage;
private ImageViewZoom iv;
private imagenum=3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bMap[0] =BitmapFactory.decodeResource(getResources(), R.drawable.page);
bMap[1] =BitmapFactory.decodeResource(getResources(), R.drawable.page1);
bMap[2] =BitmapFactory.decodeResource(getResources(), R.drawable.page10);
bMap[3] =BitmapFactory.decodeResource(getResources(), R.drawable.page11);
bMap[4] =BitmapFactory.decodeResource(getResources(), R.drawable.page12);
bMap[5] =BitmapFactory.decodeResource(getResources(), R.drawable.page13);
bMap[6] =BitmapFactory.decodeResource(getResources(), R.drawable.page14);
bMap[7] =BitmapFactory.decodeResource(getResources(), R.drawable.page2);
bMap[8] =BitmapFactory.decodeResource(getResources(), R.drawable.page3);
bMap[9] =BitmapFactory.decodeResource(getResources(), R.drawable.page4);
bMap[10] =BitmapFactory.decodeResource(getResources(), R.drawable.page5);
bMap[11] =BitmapFactory.decodeResource(getResources(), R.drawable.page6);
bMap[12] =BitmapFactory.decodeResource(getResources(), R.drawable.page7);
bMap[13] =BitmapFactory.decodeResource(getResources(), R.drawable.page8);
bMap[14] =BitmapFactory.decodeResource(getResources(), R.drawable.page9);
currentpage=(TextView)findViewById(R.id.textview);
iv = (ImageViewZoom) findViewById(R.id.zero);
iv.setImageBitmapReset( bMap[imagenum], 0, true );
viewFlipper = (ViewFlipper) findViewById(R.id.flipper);
......
imagenum的值根据onFling方法而变化,ImageViewZoom是自定义的ImageView类。我希望这些信息足够。
答案 0 :(得分:2)
我建议将所有位图加载移动到你在onCreate中开始的AsyncTask。设计您的活动,以便在加载所有图像之前显示合理的内容。 AsyncTask可以加载所有图像并在onPostExecute
中传递,或者使用onProgressUpdate
加载每个图像。
答案 1 :(得分:1)
为什么不尝试先加载2或3张图像,然后在后面加载其他图像?
答案 2 :(得分:0)
您还可以考虑在后台加载图片的服务。 http://developer.android.com/guide/topics/fundamentals/services.html