简体   繁体   English

从资产文件夹加载 ViewFlipper 中的多个图像

[英]load multiple images in ViewFlipper from assets folder

I want to load all the images placed into assets subfolder in imageview and then add to ViewFlipper .我想将所有图像加载到 imageview 中的 assets 子文件夹中,然后添加到 ViewFlipper 。 It worked using drawable resource, but I need to locate the images in assets subfolders.它使用可绘制资源工作,但我需要在资产子文件夹中找到图像。 This is a part of my code.这是我的代码的一部分。 The Android Studio don't show any error but the result only show the last image of the image list. Android Studio 没有显示任何错误,但结果只显示图像列表的最后一张图像。 When I uncomment the myViewFlipper.addView(imageView) line located into for loop and comment the last myViewFlipper.addView, then applicatios is crash.当我取消注释位于 for 循环中的 myViewFlipper.addView(imageView) 行并注释最后一个 myViewFlipper.addView 时,应用程序崩溃。 Sorry for my bad english.对不起,我的英语不好。 Thank you for help.谢谢你的帮助。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.photos_layout);


        myViewFlipper = (ViewFlipper) findViewById(R.id.myflipper);
        ImageView imageView = new ImageView(PhotosActivity.this);

        final AssetManager am;
        am=getAssets();
        InputStream inputStream = null ;

        try {

            String[] images = am.list("hotel/vedado");

           for (int i = 0; i < images.length; i++) {


               try {

                   inputStream = am.open("hotel/vedado/vedado"+i+".jpg");
                   Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                   imageView.setImageBitmap(bitmap);
                   // Drawable drawable = Drawable.createFromStream(inputStream, null);
                   //imageView.setImageDrawable(drawable);
                   //myViewFlipper.addView(imageView);

               }
               catch (IOException e) {
                   e.printStackTrace();
               }


           }
           myViewFlipper.addView(imageView);

        }
        catch (IOException e) {
            e.printStackTrace();
        }



}
@Override
public boolean onTouchEvent(MotionEvent event) {
     switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            initialXPoint = event.getX();
            break;
        case MotionEvent.ACTION_UP:
            float finalx = event.getX();
            if (initialXPoint > finalx) {
                if (myViewFlipper.getDisplayedChild() == 4)
                    break;
                myViewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_right));
                myViewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_left));
                myViewFlipper.showNext();
            } else {
               // if (myViewFlipper.getDisplayedChild() == 0)
                 //   break;
                myViewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_left));
                myViewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_right));
                myViewFlipper.showPrevious();
            }
            break;
    }
    return true;
}
public void to_left(View v) {
    myViewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_right));
    myViewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_left));
    myViewFlipper.showNext();
}
public void to_right(View v) {
    myViewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_left));
    myViewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_right));
    myViewFlipper.showPrevious();

You are only creating one ImageView .您只创建了一个ImageView You are then trying to add that ImageView multiple times to the ViewFlipper .然后,您尝试将该ImageView多次添加到ViewFlipper This will not work.这是行不通的。

If you want multiple images in a ViewFlipper , you either need one ImageView per image, or to switch AdapterViewFlipper (so you can recycle ImageView widgets and save a lot on memory).如果您希望在ViewFlipper包含多个图像,则每个图像需要一个ImageView ,或者切换AdapterViewFlipper (这样您就可以回收ImageView小部件并节省大量内存)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM