我正在尝试创建一个半透明的帮助叠加层,以在用户首次打开该应用程序时显示在我的活动的主屏幕上.我想通过“切出”覆盖层中与按钮位置相对应的部分来突出显示主布局中的按钮(并使用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中的视图中创建透明圆形切口所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)