根据徐宜生在大神在慕课网上视频敲出的代码,效果与大神不一样,明明四个圆角,运行出来却只有一个。很郁闷。。。以下是代码,求路过大神指教!
package com.interjoy.demoguagualka.CustomView;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
import com.interjoy.demoguagualka.R;
/**
* Created by ylwang on 2017/1/23.
*/
public class FailView extends View {
private Bitmap mBitmap;//从资源文件中获取图片
private Bitmap mOut;//真正输出显示的图片,android中原始资源图片是不支持修改的
private Paint mPaint;
public FailView(Context context) {
super(context);
// this(context, null);
initView();
}
public FailView(Context context, AttributeSet attrs) {
super(context, attrs);
// this(context, attrs, 0);
initView();
}
public FailView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
}
private void initView() {
setLayerType(LAYER_TYPE_SOFTWARE, null);//关闭硬件加速,Xfermode部分属性不支持硬件加速
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.forest);//获取资源图片
mOut = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(),
Bitmap.Config.ARGB_8888);//通常都设置最高8888,或者与原图相同mBitmap.getConfig()
Canvas canvas = new Canvas(mOut);//获取画布对象,以输出图片为画布底版
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);//获取画笔对象,抗锯齿效果
//Android默认先画上去为Dst,然后Xfermode,最后Src
//Dst
canvas.drawRoundRect(new RectF(0, 0, mBitmap.getWidth(), mBitmap.getHeight()), 100, 100, mPaint);
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
//Src
canvas.drawBitmap(mBitmap, 0, 0, mPaint);
mPaint.setXfermode(null);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(mOut, 0, 0, null);
}
}
本文描述了一个基于Android平台自定义视图实现圆角图片显示的问题。作者试图复现慕课网教程中的圆角图片效果,但实际运行结果仅显示一个圆角。文中提供了出现问题的代码示例,并寻求解决方案。


被折叠的 条评论
为什么被折叠?



