在android中动态添加缩略图

时间:2012-02-15 05:26:12

标签: java android eclipse android-layout

我正在尝试动态添加缩略图到我的相对布局。这是代码

public void showViewOfReceipt(String fileName)
         {
             byte[] imageData = null;

             try
             {

             final int THUMBNAIL_SIZE = 64;

             FileInputStream fis = new FileInputStream(fileName);
             Bitmap imageBitmap = BitmapFactory.decodeStream(fis);

             Float width = new Float(imageBitmap.getWidth());
             Float height = new Float(imageBitmap.getHeight());
             Float ratio = width/height;
             imageBitmap = Bitmap.createScaledBitmap(imageBitmap, (int)(THUMBNAIL_SIZE * ratio), THUMBNAIL_SIZE, false);

             ByteArrayOutputStream baos = new ByteArrayOutputStream();
             imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
             imageData = baos.toByteArray();
             ImageView image = new ImageView(this); 

             image.setImageBitmap(imageBitmap);
             RelativeLayout layout = (RelativeLayout) findViewById(R.id.expLayout5);
             layout.addView(image); 
             }
             catch(Exception ex) {
             } 
         }

它从不显示任何内容

此致

4 个答案:

答案 0 :(得分:1)

更改以下代码行

catch(Exception ex) 
{
} 

要,

catch(Exception ex) 
{
      e.printStack();
} 

因此,如果有的话,你会收到错误。

答案 1 :(得分:1)

1-将您的相对布局更改为线性布局 2-使用下面的代码获取位图图像

Uri photoUri = data.getData();
                     String[] filePathColumn = {MediaStore.Images.Media.DATA};
                     Cursor cursor = getContentResolver().query(photoUri, filePathColumn, null, null, null); 
                        if (cursor.moveToFirst())
                        {
                            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                            String filePath = cursor.getString(columnIndex);
                            cursor.close();
                            Bitmap imageReturned = BitmapFactory.decodeFile(filePath);

                            showImageInLayout(imageReturned);

然后定义一个函数showImageInLayout(Bitmap imageReturned)

public void showViewOfReceiptInLayout(Bitmap imageBitmap)
         {
             byte[] imageData = null;
                 imageBitmap = Bitmap.createScaledBitmap(imageBitmap, yourWidth, yourHeight, false);
                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
                 imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
                 imageData = baos.toByteArray();
                 ImageView image = new ImageView(this); 
                 image.setImageBitmap(imageBitmap);
                 layout.addView(image);

         } 

答案 2 :(得分:0)

评论代码行:

// image =(ImageView)findViewById(R.id.imageView1);

答案 3 :(得分:0)

请使用错误或异常日志代码更新问题,以便我们为您提供帮助。

根据Altaaf在fileName中回答错误。所以请检查它或给代码传递它。

感谢。