如何在ViewFlipper中添加动态图像?

时间:2011-09-27 14:42:13

标签: android image-processing viewflipper

我正在使用此代码。访问特定文件夹以获取图像列表并将其添加到ViewFlipper。但我有这个问题,我无法将其添加到ViewFlipper.So请,如果任何人知道如何解决这个问题,我将不胜感激他的帮助。抱歉我的英语不好。

public ImageView[] imageView;
byte[] mByte = null;            

public BufferedInputStream mBufferedInputStream;
Bitmap[] bMap; 
File dir=new File("/sdcard/image folder");
      System.out.println("Dir is"+dir);
        String[] file_name = dir.list(new FilenameFilter() {

            @Override
            public boolean accept(File dir, String name) {
                // TODO Auto-generated method stub
                if(new File(dir,name).isDirectory())
                return true;
                return name.toLowerCase().endsWith(".jpg");
            }
        });
        for(String singleFile : file_name){
            System.out.println("---------->"+dir.toString()+"/"+singleFile);
            try {
                FileInputStream     mFileInputStream = new FileInputStream(dir+"/"+singleFile);
                mBufferedInputStream = new BufferedInputStream(mFileInputStream);
                mByte = new byte[mBufferedInputStream.available()+(16*1024)];
                mBufferedInputStream.read(mByte);
                bMap = new Bitmap[file_name.length];
                bMap[position] = BitmapFactory.decodeByteArray(mByte, 0, mByte.length); 
                imageView[file_name.length] = new ImageView(this);
                imageView[position].setImageBitmap(bMap[position]);
                mViewFlipper.addView(imageView[position]);
                bMap[position].recycle();
                position++;
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

        mViewFlipper.startFlipping();
        mViewFlipper.setOnTouchListener(this);     

在LogCat中:

09-27 19:27:17.490: WARN/System.err(9910): java.lang.NullPointerException
09-27 19:27:17.490: WARN/System.err(9910):     at     com.android.SD_Card_Img_Reader.SD_CardImageReaderActivity.onCreate(SD_CardImageReaderActivity.java:76)
 09-27 19:27:17.501: WARN/System.err(9910):     at  android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
 09-27 19:27:17.501: WARN/System.err(9910):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
 09-27 19:27:17.501: WARN/System.err(9910):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
 09-27 19:27:17.511: WARN/System.err(9910):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
 09-27 19:27:17.511: WARN/System.err(9910):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
 09-27 19:27:17.541: WARN/System.err(9910):     at android.os.Handler.dispatchMessage(Handler.java:99)
 09-27 19:27:17.584: WARN/System.err(9910):     at android.os.Looper.loop(Looper.java:123)
 09-27 19:27:17.584: WARN/System.err(9910):     at android.app.ActivityThread.main(ActivityThread.java:4627)
 09-27 19:27:17.584: WARN/System.err(9910):     at java.lang.reflect.Method.invokeNative(Native Method)
 09-27 19:27:17.584: WARN/System.err(9910):     at java.lang.reflect.Method.invoke(Method.java:521)
 09-27 19:27:17.584: WARN/System.err(9910):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
 09-27 19:27:17.584: WARN/System.err(9910):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
 09-27 19:27:17.590: WARN/System.err(9910):     at dalvik.system.NativeStart.main(Native Method)
 09-27 19:27:17.590: INFO/System.out(9910): ---------->/sdcard/image folder/darkred.jpg
 09-27 19:27:17.590: INFO/global(9910): Default buffer size used in BufferedInputStream constructor. It would be better to be explicit if an 8k buffer is required.
 09-27 19:27:17.721: DEBUG/dalvikvm(9910): GC_EXTERNAL_ALLOC freed 406 objects / 125952 bytes in 125ms
 09-27 19:27:18.571: WARN/System.err(9910): java.lang.NullPointerException
 09-27 19:27:18.651: WARN/System.err(9910):     at com.android.SD_Card_Img_Reader.SD_CardImageReaderActivity.onCreate(SD_CardImageReaderActivity.java:76)
 09-27 19:27:18.651: WARN/System.err(9910):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
 09-27 19:27:18.771: WARN/System.err(9910):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
 09-27 19:27:18.771: WARN/System.err(9910):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
 09-27 19:27:18.771: WARN/System.err(9910):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
 09-27 19:27:18.771: WARN/System.err(9910):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
 09-27 19:27:18.771: WARN/System.err(9910):     at android.os.Handler.dispatchMessage(Handler.java:99)
 09-27 19:27:18.771: WARN/System.err(9910):     at android.os.Looper.loop(Looper.java:123)
 09-27 19:27:18.771: WARN/System.err(9910):     at android.app.ActivityThread.main(ActivityThread.java:4627)
 09-27 19:27:18.771: WARN/System.err(9910):     at java.lang.reflect.Method.invokeNative(Native Method)
09-27 19:27:18.771: WARN/System.err(9910):     at java.lang.reflect.Method.invoke(Method.java:521)
 09-27 19:27:18.771: WARN/System.err(9910):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-27 19:27:18.771: WARN/System.err(9910):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
 09-27 19:27:18.771: WARN/System.err(9910):     at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:0)

ViewFlipper只允许每个视图拥有一个子节点。在那个孩子里面,您可以根据需要添加任意数量的图像。您可能想要添加一个LinearLayout并开始在其中添加图像。