Android - Images from Assets folder in a GridView

后端 未结 2 907
慢半拍i
慢半拍i 2020-12-15 11:10

I have been working on creating a Grid View of images, with images being present in the Assets folder. Opening a File from assets folder in android link helped me with using

相关标签:
2条回答
  • 2020-12-15 11:28

    No need to read all the items every time. Read only the item at the position given in getView method call. And display only that item that time.

    BufferedInputStream buf = new BufferedInputStream(am.open(list[position]));
    
    0 讨论(0)
  • 2020-12-15 11:34

    Saran, below is what I use to show images in the assets folder with the gallery. I imagine it's the same deal with a gridview:

    public class myActivitye extends Activity
    {
        private Gallery mGallery;
    
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            mGallery = (Gallery) findViewById(R.id.mygalleryinxml);
    
            //load images into memory
            mBitArray = new Bitmap[4];
            try
            {
                //these images are stored in the root of "assets"
                mBitArray[0] = getBitmapFromAsset("pic1.png");
                mBitArray[1] = getBitmapFromAsset("pic2.png");
                mBitArray[2] = getBitmapFromAsset("pic3.png");
                mBitArray[3] = getBitmapFromAsset("pic4.png");
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
    
            mGallery.setAdapter(new GalleryAdapter(this, mBitArray));
        }
    
        public class GalleryAdapter extends BaseAdapter
        {
            //member variables
            private Context mContext;
            private Bitmap[] mImageArray;
    
            //constructor
            public GalleryAdapter(Context context, Bitmap[] imgArray)
            {
                mContext = context;
                mImageArray = imgArray;
            }
    
            public int getCount()
            {
                return mImageArray.length;
            }
    
            public Object getItem(int position)
            {
                return position;
            }
    
            public long getItemId(int position)
            {
                return position;
            }
    
            //returns the individual images to the widget as it requires them
            public View getView(int position, View convertView, ViewGroup parent)
            {
                final ImageView imgView = new ImageView(mContext);
    
                imgView.setImageBitmap(mImageArray[position]);
    
                //put black borders around the image
                final RelativeLayout borderImg = new RelativeLayout(mContext);
                borderImg.setPadding(20, 20, 20, 20);
                borderImg.setBackgroundColor(0xff000000);//black
                borderImg.addView(imgView);
                return borderImg;
            }
    
        }//end of: class GalleryAdapter
    
    
        /**
         * Helper Functions
         * @throws IOException 
         */
        private Bitmap getBitmapFromAsset(String strName) throws IOException
        {
            AssetManager assetManager = getAssets();
    
            InputStream istr = assetManager.open(strName);
            Bitmap bitmap = BitmapFactory.decodeStream(istr);
            istr.close();
    
            return bitmap;
        }
    }
    
    0 讨论(0)
提交回复
热议问题