国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android 帶箭頭的指引tipLayout實(shí)現(xiàn)示例代碼

2019-10-22 18:16:33
字體:
供稿:網(wǎng)友

本文介紹了Android 帶箭頭的指引tipLayout實(shí)現(xiàn)示例代碼,分享給大家,具體如下:

Android,指引箭頭,tipLayout

如上是從UI接過來的設(shè)計(jì)圖,要求三角形指示器需要動態(tài)對齊上面的文本,需要動態(tài)的實(shí)現(xiàn)對其三角形。

引用方式

compile 'com.xiaowei:TriangleTipLayout:1.0.0'

實(shí)現(xiàn)思路

準(zhǔn)備一個三角形指引的圖片即可。

先上代碼

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);    }  }

核心代碼如上,其思路是先繪制一個矩形,預(yù)留出三角形所需要的高度,最后將其三行圖片繪制出來。

配置指示器

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("您今日收入已到達(dá)10W+,牛逼。保持努力");

注意:當(dāng)調(diào)用setText之后會invalidate()重新繪制;

實(shí)現(xiàn)效果如下

Android,指引箭頭,tipLayout

github: 源碼

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 四子王旗| 阿拉善盟| 白水县| 扶余县| 枣阳市| 高邑县| 独山县| 海淀区| 榆社县| 定襄县| 弥勒县| 云南省| 宜黄县| 屏南县| 乌兰浩特市| 盘山县| 施甸县| 汶上县| 武安市| 乐至县| 科技| 洞口县| 丰镇市| 修水县| 南丹县| 格尔木市| 深州市| 缙云县| 和林格尔县| 湖南省| 金沙县| 固阳县| 略阳县| 鲁山县| 合江县| 革吉县| 锡林郭勒盟| 玛曲县| 台南县| 云梦县| 太原市|