时间:2021-05-21
本文介绍了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, 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()重新绘制;
实现效果如下
github: 源码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文使用Matrix实现Android实现图片缩放与旋转。示例代码如下:复制代码代码如下:packagecom.android.matrix;importand
本文实例为大家分享了android自定义带箭头对话框的具体代码,供大家参考,具体内容如下importandroid.content.Context;import
本文实例讲述了Android弹出窗口实现方法。分享给大家供大家参考,具体如下:直接上代码:/***弹窗--新手指引*@paramcxt*@paramid资源编号
注释文本箭头结果展示:完整代码示例:importnumpyasnpimportmatplotlib.pyplotaspltfig,ax=plt.subplots
本文实例为大家分享了js实现带箭头进度流程的具体代码,供大家参考,具体内容如下html{{item}}css.cssNav{margin:100pxauto;b