本文介绍了AndroID 带箭头的指引tipLayout实现示例代码,分享给大家,具体如下:
如上是从UI接过来的设计图,要求三角形指示器需要动态对齐上面的文本,需要动态的实现对其三角形。
引用方式
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,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()重新绘制;
实现效果如下
github: 源码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
以上是内存溢出为你收集整理的Android 带箭头的指引tipLayout实现示例代码全部内容,希望文章能够帮你解决Android 带箭头的指引tipLayout实现示例代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)