Java-在Android中的视图中创建透明圆形切口
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java-在Android中的视图中创建透明圆形切口,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1533字,纯文字阅读大概需要3分钟。
内容图文
![Java-在Android中的视图中创建透明圆形切口](/upload/InfoBanner/zyjiaocheng/658/29f11d77dc5d4acba8f0b17d367b3318.jpg)
我正在尝试创建一个半透明的帮助叠加层,以在用户首次打开该应用程序时显示在我的活动的主屏幕上.我想通过“切出”覆盖层中与按钮位置相对应的部分来突出显示主布局中的按钮(并使用setContentView对其进行了放大),并使切口透明.
叠加层是通过程序创建的视图(扩展了RelativeLayout),该视图已添加到我的活动的主FrameLayout中,如下所示:
private void addHelpOverlay(){
HelpOverlay help = new HelpOverlay(this);
help.setBackgroundColor(Color.parseColor("#BB222222"));
mainLayer.addView(help);
}
public class HelpOverlay extends RelativeLayout{
public HelpOverlay(Context context){
super(context);
}
@Override
public void dispatchDraw(Canvas canvas){
canvas.drawColor(Color.parseColor("#BB222222"));
Paint mPaint = new Paint();
mPaint.setColor(0xFFFFFF);
mPaint.setAlpha(0);
mPaint.setAntiAlias(true);
canvas.drawCircle(buttonX, buttonY, 100, mPaint);
super.dispatchDraw(canvas);
}
}
上面的代码实际上并没有显示任何内容,只是没有圆形切口的半透明布局.我认为这是因为它只是在半透明布局上方绘制一个透明圆圈.我真的很难做到这一点,任何建议将不胜感激!
解决方法:
尝试将PorterDuff添加到绘画对象中.这将使特定区域透明
Paint mPaint = new Paint();
mPaint.setColor(0xFFFFFF);
mPaint.setAlpha(0);
mPaint.setAntiAlias(true);
mPaint.setColor(Color.TRANSPARENT);
mPaint.setXfermode(new PorterDuffXfermode(
PorterDuff.Mode.CLEAR));
canvas.drawCircle(buttonX, buttonY, 100, mPaint);
如果在圆形区域中出现黑色斑点,这一定是由于图形渲染问题所致,则可以在声明paint object之前使用以下代码启用它.
if (android.os.Build.VERSION.SDK_INT >= 11) {
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
我想这应该可以解决您的问题
内容总结
以上是互联网集市为您收集整理的Java-在Android中的视图中创建透明圆形切口全部内容,希望文章能够帮你解决Java-在Android中的视图中创建透明圆形切口所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。