三:将需要展示的两张图片绘制在ImageView上,先绘制的会置于底部显示
重写
onMeasure()
函数获取View的宽高并解析图片
private int[] images = {R.drawable.waller_three, R.drawable.waller};
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
/获取view的高宽/
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
//以view的大小绘制一个矩形,
RectF rectF = new RectF(0, 0, width, height);
/解析图片/
Bitmap background = ((BitmapDrawable) getResources().getDrawable(images[0])).getBitmap();//置于底部的图片
Bitmap frontImage = ((BitmapDrawable) getResources().getDrawable(images[1])).getBitmap();//置于顶部的图片
/创建一个空bitmap/
Bitmap frontBg = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
//在frontBg 上做画
Canvas frontCanvas = new Canvas(frontBg);
}
四:接下就是绘制bitmap显示在ImageView上
@Override
@SuppressLint(“DrawAllocation”)
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//将显示于顶部的图片绘制到frontCanvas画布上
frontCanvas.drawBitmap(frontImage, null, rectF, null);
//绘制背景广告
canvas.drawBitmap(background, null, rectF, null);
//绘制前景广告
canvas.drawBitmap(frontBg, null, rectF, null);
//请注意canvas绘制的顺序,为什么上层广告需要 空bitmap呢? 因为执setXfermode操作需要canvas,需要创建新的canvas中介
//一句话,canvas正常绘制,对上层图片操作,因此需要Canvas frontCanvas = new Canvas(frontBg);
//frontCanvas给空的frontBg附上bitmap内容(真实的frontImage),执行Xfermode操作,使用frontCanvas
}
这里就是依赖于paint的一个 Xfermode 属性Xfermode 教学 —>paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
取两层绘制交集,显示下层内容
五:初始化我们的paint,并在滑动的时候画圆这样就可以使得底部的图片显示出来
private void init() {
paint = new Paint();
paint.setAlpha(0);
/*在已有的图像上绘图将会在其上面添加一层新的图层,如果新图层的paint是不透明的,那么它将遮挡住下面的paint;
如果新图层它是部分透明的,那么它不透明的地方将会被染上下面的颜色*/
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
paint.setStyle(Paint.Style.FILL);
paint.setAntiAlias(true);
paint.setStrokeWidth(0);
//设置笔触和连接处能更加圆滑
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
}
最后
那我们该怎么做才能做到年薪60万+呢,对于程序员来说,只有不断学习,不断提升自己的实力。我之前有篇文章提到过,感兴趣的可以看看,到底要学习哪些知识才能达到年薪60万+。
通过职友集数据可以查看,以北京 Android 相关岗位为例,其中 【20k-30k】 薪酬的 Android 工程师,占到了整体从业者的 30.8%!
北京 Android 工程师「工资收入水平 」
今天重点内容是怎么去学,怎么提高自己的技术。
1.合理安排时间
2.找对好的系统的学习资料
3.有老师带,可以随时解决问题
4.有明确的学习路线
当然图中有什么需要补充的或者是需要改善的,可以在评论区写下来,一起交流学习。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!