重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
怎么在Android中利用tipLayout实现一个带箭头的指引代码?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
为新荣等地区用户提供了全套网页设计制作服务,及新荣网站建设行业解决方案。主营业务为做网站、成都网站建设、新荣网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!引用方式
compile 'com.xiaowei:TriangleTipLayout:1.0.0'
实现思路
准备一个三角形指引的图片即可。
先上代码
final TextPaint textPaint = mTextView.getPaint(); final int textHeight = (int) (textPaint.descent() - textPaint.ascent()); mRect.set(0, DEFAULT_TOP_HEIGHT, getWidth(), getHeight() + textHeight - DEFAULT_TOP_HEIGHT); canvas.drawRect(mRect, mRectPaint); final String text = mTextView.getText().toString(); float left = 0; if (mIsShowTriangle) { if (mGravity == Gravity.LEFT || mGravity == Gravity.START) { LayoutParams layoutParams = (LayoutParams) mTarget.getLayoutParams(); left = mTarget.getLeft() - layoutParams.rightMargin - layoutParams.leftMargin; } else { if (mTarget instanceof TextView) { ViewParent viewParent = mTarget.getParent(); float textWidth = textPaint.measureText(text); if (viewParent instanceof LinearLayout) { final float width = mTarget.getWidth() / 2; left = mTarget.getLeft() + width - (mBitmap.getWidth() / 2); } else if (viewParent instanceof RelativeLayout) { left = mTarget.getLeft() + textWidth / 2; } } else if (mTarget instanceof ImageView) { final float width = mTarget.getWidth(); left = mTarget.getLeft() + (width / 2) - (mBitmap.getWidth() / 2); } } canvas.drawBitmap(mBitmap, left, 0, mBitmapPaint); } }
核心代码如上,其思路是先绘制一个矩形,预留出三角形所需要的高度,最后将其三行图片绘制出来。
配置指示器
mTipsLayout.setRectBackgroundColor(Color.parseColor("#FFF8BE")); mTipsLayout.setTextColor(Color.parseColor("#FF9B33")); mTipsLayout.setTriangleBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_triangle_arrow)); mTipsLayout.setTriangleGravity(Gravity.START); mTipsLayout.bindView(findViewById(R.id.text2)); mTipsLayout.setText("您今日收入已到达10W+,牛逼。保持努力");
注意:当调用setText之后会invalidate()重新绘制;
看完上述内容,你们掌握怎么在Android中利用tipLayout实现一个带箭头的指引代码的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!