繁体   English   中英

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

[英]load multiple images in ViewFlipper from assets folder

我想将所有图像加载到 imageview 中的 assets 子文件夹中,然后添加到 ViewFlipper 。 它使用可绘制资源工作,但我需要在资产子文件夹中找到图像。 这是我的代码的一部分。 Android Studio 没有显示任何错误,但结果只显示图像列表的最后一张图像。 当我取消注释位于 for 循环中的 myViewFlipper.addView(imageView) 行并注释最后一个 myViewFlipper.addView 时,应用程序崩溃。 对不起,我的英语不好。 谢谢你的帮助。

@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();

您只创建了一个ImageView 然后,您尝试将该ImageView多次添加到ViewFlipper 这是行不通的。

如果您希望在ViewFlipper包含多个图像,则每个图像需要一个ImageView ,或者切换AdapterViewFlipper (这样您就可以回收ImageView小部件并节省大量内存)。

暂无
暂无

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

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