在圆形的imageview android中显示来自url的图像

时间:2015-05-28 13:12:07

标签: android

我想在listview中显示我的图像,其中imageview是四舍五入的,我在网络中搜索并在stackoverflow中我发现他们使用位图或我不喜欢使用它因为我从webservice获取我的信息。是否有任何方法或例子以这种方式显示它。

这是我显示图像矩形边框的方式


/app_dev.php/myapp/path/ HTTP/1.1 Accept: / Accept-Encoding: gzip, deflate Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3 Cache-Control: no-cache Connection: keep-alive Content-Length: 11 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Cookie: PHPSESSID=qhou8f9lias0i9fh3besdpbii7 Host: localhost:8000 Pragma: no-cache Referer: http://localhost:8000/app_dev.php/myapp/path/ User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 X-Php-Ob-Level: 1 X-Requested-With: XMLHttpRequest MyInputData 

5 个答案:

答案 0 :(得分:1)

对于舍入的ImageView,请使用RoundedImageView

对于来自网址的显示图片,请使用Picasso

答案 1 :(得分:0)

试试这个,

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Bitmap.Config;
import android.graphics.PorterDuff.Mode;

public class ImageHelper {
    public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap
                .getHeight(), Config.ARGB_8888);
        Canvas canvas = new Canvas(output);

        final int color = 0xff424242;
        final Paint paint = new Paint();
        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        final RectF rectF = new RectF(rect);
        final float roundPx = pixels;

        paint.setAntiAlias(true);
        canvas.drawARGB(0, 0, 0, 0);
        paint.setColor(color);
        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);

        return output;
    }
}

您必须自定义图像加载器。

编辑:

如果您不想创建位图的副本,可以使用位图着色器。

参见此博客

http://www.curious-creature.com/2012/12/11/android-recipe-1-image-with-rounded-corners/

请参阅RoundedImageView以了解实施情况。

答案 2 :(得分:0)

是的,你可以通过自定义你的Imageview来解决它。请查看我的customImageview类,它可以帮助你。在这里输入代码。

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;

public class RoundedImageView extends ImageView {
public RoundedImageView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

public RoundedImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}

public RoundedImageView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    // TODO Auto-generated constructor stub
}

@Override
protected void onDraw(Canvas canvas) {

    Drawable drawable = getDrawable();

    if (drawable == null) {
        return;
    }

    if (getWidth() == 0 || getHeight() == 0) {
        return;
    }
    Bitmap b = ((BitmapDrawable) drawable).getBitmap();
    Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);
    int w = getWidth();
    Bitmap roundBitmap = getCroppedBitmap(bitmap, w);
    canvas.drawBitmap(roundBitmap, 0, 0, null);
}

public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) {
    Bitmap sbmp;
    if (bmp.getWidth() != radius || bmp.getHeight() != radius)
        sbmp = Bitmap.createScaledBitmap(bmp, radius, radius, false);
    else
        sbmp = bmp;
    Bitmap output = Bitmap.createBitmap(sbmp.getWidth(), sbmp.getHeight(),
            Config.ARGB_8888);
    Canvas canvas = new Canvas(output);

    final Paint paint = new Paint();
    final Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight());

    paint.setAntiAlias(true);
    paint.setFilterBitmap(true);
    paint.setDither(true);
    canvas.drawARGB(0, 0, 0, 0);
    paint.setColor(Color.parseColor("#BAB399"));
    canvas.drawCircle(sbmp.getWidth() / 2 + 0.7f,
            sbmp.getHeight() / 2 + 0.7f, sbmp.getWidth() / 2 + 0.1f, paint);
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
    canvas.drawBitmap(sbmp, rect, rect, paint);

    return output;
}

}

答案 3 :(得分:0)

试试此链接

public static Bitmap getCroppedBitmap(Bitmap bmp,int radius){

Bitmap sbmp;
if(bmp.getWidth() != radius || bmp.getHeight() != radius)
    sbmp = Bitmap.createScaledBitmap(bmp, radius, radius, false);
else
    sbmp = bmp;
Bitmap output = Bitmap.createBitmap(sbmp.getWidth(),
        sbmp.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);

final int color = 0xffa19774;

final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight());

paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(Color.parseColor("#BAB399"));

canvas.drawCircle(sbmp.getWidth() / 2+0.7f, sbmp.getHeight() / 2+0.7f,
        sbmp.getWidth() / 2+0.1f, paint);

paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(sbmp, rect, rect, paint);


        return output;

}

http://easyandroidexample.blogspot.in/2015/03/how-to-make-image-circle-view.html

可能对你有用

答案 4 :(得分:0)

在drawable

下创建一个新的 rounded.xml
 <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle" >
            <stroke
                android:width="10dp"
                android:color="#FFffffff" />
            <solid android:color="#00000000" />
            <padding
                android:bottom="0dp"
                android:left="0dp"
                android:right="0dp"
                android:top="0dp" />
        </shape>
    </item>
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android" >
            <stroke
                android:width="10dp"
                android:color="#FFffffff" />
            <solid android:color="#00000000" />
            <corners android:radius="30dp" />
        </shape>
    </item>
</layer-list>

并在xml图片视图中使用它,如下所示: android:src="@drawable/rounded"并根据需要设置图像背景,它将呈圆形

我希望这会有所帮助