【问题标题】:Two bitmaps in one imageview with different scaletype一个图像视图中的两个位图具有不同的比例类型
【发布时间】:2018-05-22 19:37:16
【问题描述】:

你好,我有一个简单的问题..

我需要将两个不同的位图放入一个图像视图中。但是一个位图必须在ImageView.ScaleType.FIT_XY 上,第二个在ImageView.ScaleType.FIT_CENTER

我从互联网上找到了一些方法,但都使用相同的 scaletype。

感谢您的建议。

我需要在 imageview 中有这个..(图片没有 pageview..)

//////////解释我为什么需要。

@Override public Object instantiateItem(ViewGroup view, int position) {
    ImageView img= new ImageView(view.getContext());
    ImageLoader.getInstance().displayImage(listKone.get(pozicia).getCestaObrazok(), img);

    //
    ImageLoader.getInstance().displayImage(listKone.get(pozicia).getCestaObrazok(), img2);


    BitmapDrawable drawable = (BitmapDrawable) img2.getDrawable();
    Bitmap bitmap = null;
    try {
        bitmap = drawable.getBitmap();
    } catch (NullPointerException e){
    }



    while ((drawable==null)||(bitmap==null)) {
        ImageLoader.getInstance().displayImage(listKone.get(pozicia).getCestaObrazok(), img2); // Default options will be used

        drawable = (BitmapDrawable) img2.getDrawable();
        bitmap = drawable.getBitmap();
    }
    Bitmap blurred = blurRenderScript(act, bitmap, 25);



    view.addView(img, ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT);
    return img;
}

return img; 我需要一个 Imageview 中的 Bitmap blurred 和 Bitmap Bitmap。但是bitmap Blured FIT_XY和bitmap bitmap center。我需要像图像中一样查看视图↑

【问题讨论】:

  • 2 位图是什么意思?同时还是需要在它们之间切换?
  • 同时 => 背景位图 (FIT_XY) 有模糊效果,位图 FIT_CENTER 正常.. 没有效果。
  • 您不能将 scaletype 设置为背景。您可以使用developer.android.com/reference/android/graphics/drawable/… 只需为不同的位图设置不同的 android:gravity 属性
  • 我把图像放在我知道的地方。
  • 我认为您所看到的是一个带有基本 pageradapter 和每个页面上的 imageviews 的 viewpager。它还设置了一个查看器指示器。您看到的不是图像视图。

标签: android bitmap imageview scaletype


【解决方案1】:

使用两个图像视图一比一。

【讨论】:

  • 我本来是,但现在我需要一个图像视图。我需要返回 imageview 一个 imageView。
  • 您可以使用任何将背景设置为 1 图像的布局 或者在使用 relativelayout 时使用 RelativeLayout 它允许您将一个视图放在另一个视图上,这样您就可以将一个图像视图放在另一个上,如果您想要透明度,您也可以这样做
【解决方案2】:
    <layer-list>
   <item>
        <bitmap android:src="@drawable/bitmap1"
            android:gravity="fill" />
    </item>
    <item>
        <bitmap android:src="@drawable/bitmap2"
            android:gravity="center" />
    </item>
</layer-list>

您可以像这样使用 LayerDrawable 将两个图像设置在另一个图像上,然后在 ImageView 中设置它们

【讨论】:

    【解决方案3】:

    我找到了我编辑的方法..

    public static Bitmap CombineImages(Bitmap background, Bitmap foreground)  {
    
        int width = (int) act.getResources().getDimension(R.dimen.imageH);
        int height = (int) act.getResources().getDimension(R.dimen.imageH);
        Bitmap cs = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        Canvas comboImage = new Canvas(cs);
        background = Bitmap.createScaledBitmap(background, width, height, true);
        comboImage.drawBitmap(background, 0, 0, null);
    
        float Fwidth = foreground.getWidth();
        float Fheight = foreground.getHeight();
    
        if (Fheight>Fheight){
            Fwidth=(height/Fheight) * Fwidth;
            Fheight=height;
            foreground = Bitmap.createScaledBitmap(foreground,(int) Fwidth,(int) Fheight, true);
        }
    
        if (Fheight<=Fheight){
            Fheight=(width/Fwidth)*Fheight;
            Fwidth=width;
            foreground = Bitmap.createScaledBitmap(foreground,(int) Fwidth,(int) Fheight, true);
        }
    
        float top = (height-Fheight)/2;
        float left = (width-Fwidth)/2;
    
        comboImage.drawBitmap(foreground, left, top, null);
    
        return cs;
    }
    

    你有更好的解决方案吗? Ad iterim 使用此解决方案。但是如果以后有更多的图像将是无效的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多