日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android新闻类导航栏

發布時間:2025/4/5 Android 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android新闻类导航栏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個新聞導航欄,可以自定義文字顏色、選中文字和未選中文字大小、文字間距、拖拽效果等效果。


一、先上效果圖(A、B)

二、GitHub

代碼地址,歡迎指正 https://github.com/MNXP/FlexTitle

三、A的使用

1)A的引用

<com.xp.different.ViewPagerTitleandroid:id="@+id/pager_title"flexTitle:background_content_color="@android:color/white"flexTitle:line_start_color="@android:color/holo_red_dark"flexTitle:line_end_color="@android:color/holo_blue_light"flexTitle:line_height="5dp"flexTitle:line_bottom_margins="10dp"flexTitle:item_top_margins="10dp"flexTitle:item_bottom_margins="8dp"flexTitle:item_margins="40dp"flexTitle:selected_text_Size="16sp"flexTitle:default_text_size="14sp"flexTitle:selected_text_color="@android:color/holo_orange_dark"flexTitle:title_center="false"flexTitle:line_drag="true"flexTitle:line_margins="5dp"android:layout_width="match_parent"android:layout_height="wrap_content"/> 復制代碼

2)A的自定義

<declare-styleable name="FlexTitle"><attr name="default_text_size" format="dimension" /> <attr name="selected_text_Size" format="dimension" />//選中文字大小<attr name="default_text_color" format="color" />//未選擇文字顏色<attr name="selected_text_color" format="color" />//選擇文字顏色<attr name="background_content_color" format="color" />//背景顏色<attr name="line_start_color" format="color" />//線 起始顏色<attr name="line_end_color" format="color" />//線 終止顏色<attr name="line_margins" format="dimension" />//線的間距<attr name="item_margins" format="dimension" />//item間距<attr name="item_top_margins" format="dimension" />//據上高度<attr name="item_bottom_margins" format="dimension" />//距下高度<attr name="line_bottom_margins" format="dimension" />//線 距下高度<attr name="line_height" format="dimension" />// 線的高度<attr name="title_center" format="boolean" />//文字是否左右均留空隙<attr name="line_drag" format="boolean" />//線是否有拖拽效果</declare-styleable> 復制代碼

3)A的實現

根據titleCenter和lineDrag來判斷線的起始點和終點繪制 if (titleCenter) {if (lineDrag) {if (lastPosition > position) {for (int i = 0; i < position; i++) {leftAll = leftAll + getDefaultWidth(i);}for (int i = 0; i < lastPosition; i++) {rightAll = rightAll + getDefaultWidth(i);}left = leftAll + (position * 2 + 1) * dis + positionOffset * (getDefaultWidth(position) + 2 * dis) + lineMargins;right = rightAll + (lastPosition * 2 + 1) * dis + getDefaultWidth(lastPosition) + lineMargins;dynamicLine.updateView(left, right);} else {if (positionOffset > 0.5f) {positionOffset = 0.5f;}for (int i = 0; i < position; i++) {leftAll = leftAll + getDefaultWidth(i);}for (int i = 0; i <= position; i++) {rightAll = rightAll + getDefaultWidth(i);}left = leftAll + (position * 2 + 1) * dis + lineMargins;right = rightAll + (position * 2 + 1) * dis + lineMargins + positionOffset * 2 * (getDefaultWidth(position + 1) + 2 * dis);dynamicLine.updateView(left, right);}} else {if (lastPosition > position) {for (int i = 0; i < position; i++) {leftAll = leftAll + getDefaultWidth(i);}for (int i = 0; i < lastPosition; i++) {rightAll = rightAll + getDefaultWidth(i);}left = leftAll + (position + positionOffset) * 2 * dis + dis + lineMargins + positionOffset * (lastWidth - lastDis);right = rightAll + (position + positionOffset) * 2 * dis + dis + lineMargins + positionOffset * lastWidth;dynamicLine.updateView(left, right);} else {for (int i = 0; i < position; i++) {leftAll = leftAll + getDefaultWidth(i);}for (int i = 0; i <= position; i++) {rightAll = rightAll + getDefaultWidth(i);}left = dis + leftAll + position * 2 * dis + lineMargins + positionOffset * 2 * dis + positionOffset * (lastWidth - lastDis);right = dis + rightAll + position * 2 * dis + lineMargins + positionOffset * 2 * dis + positionOffset * lastWidth;dynamicLine.updateView(left, right);}}} else {if (lineDrag) {if (lastPosition > position) {for (int i = 0; i < position; i++) {leftAll = leftAll + getDefaultWidth(i);}for (int i = 0; i < lastPosition; i++) {rightAll = rightAll + getDefaultWidth(i);}left = leftAll + (position + 1) * dis + positionOffset * (getDefaultWidth(position) + dis) + lineMargins;right = rightAll + (lastPosition + 1) * dis + getDefaultWidth(lastPosition) + lineMargins;dynamicLine.updateView(left, right);} else {if (positionOffset > 0.5f) {positionOffset = 0.5f;}for (int i = 0; i < position; i++) {leftAll = leftAll + getDefaultWidth(i);}for (int i = 0; i <= position; i++) {rightAll = rightAll + getDefaultWidth(i);}left = leftAll + (position + 1) * dis + lineMargins;right = rightAll + (position + 1) * dis + lineMargins + positionOffset * 2 * (getDefaultWidth(position + 1) + dis);dynamicLine.updateView(left, right);}} else {if (lastPosition > position) {for (int i = 0; i < position; i++) {leftAll = leftAll + getDefaultWidth(i);}for (int i = 0; i < lastPosition; i++) {rightAll = rightAll + getDefaultWidth(i);}left = leftAll + (position + positionOffset) * dis + dis + lineMargins + positionOffset * (lastWidth - lastDis);right = rightAll + (position + positionOffset) * dis + dis + lineMargins + positionOffset * lastWidth;dynamicLine.updateView(left, right);} else {for (int i = 0; i < position; i++) {leftAll = leftAll + getDefaultWidth(i);}for (int i = 0; i <= position; i++) {rightAll = rightAll + getDefaultWidth(i);}left = dis + leftAll + position * dis + lineMargins + positionOffset * dis + positionOffset * (lastWidth - lastDis);right = dis + rightAll + position * dis + lineMargins + positionOffset * dis + positionOffset * lastWidth;dynamicLine.updateView(left, right);}}} 通過判斷,進行不同的邏輯處理(代碼位置com.xp.different.MyOnPageChangeListener) 復制代碼

四、B的使用

這種是借鑒的,如有侵犯,請聯系,會及時刪除

1)B的引用

<com.xp.shadow.ShadowTabandroid:id="@+id/indicator"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#11000000"flexTitle:item_padding="15dp"flexTitle:text_size="16sp"flexTitle:default_color="#000000"flexTitle:changed_color="#ff0000"/> 復制代碼

2)B的自定義

<declare-styleable name="ShadowTab"><attr name="text_size"/><attr name="default_color"/><attr name="changed_color"/><attr name="item_padding_l" format="dimension"/><attr name="item_padding_r" format="dimension"/><attr name="item_padding_t" format="dimension"/><attr name="item_padding_b" format="dimension"/><attr name="item_padding" format="dimension"/><attr name="line_start_colors" format="color" />//線 起始顏色<attr name="line_end_colors" format="color" />//線 終止顏色<attr name="line_heights" format="dimension" />// 線的高度<attr name="line_bottom_margin" format="dimension" />//線 距下高度</declare-styleable> 復制代碼

3)B的實現

根據位置繪制文字和線//畫正常的文字內容paint.setTextSize(textSize);Paint.FontMetrics fontMetrics = paint.getFontMetrics();canvas.save();paint.setColor(defaultColor);canvas.drawText(text, textLeft, textBottom - fontMetrics.descent, paint);canvas.restore();//畫漸變部分的文字canvas.save();paint.setColor(changeColor);canvas.clipRect(startX, 0, endX, getMeasuredHeight());canvas.drawText(text, textLeft, textBottom - fontMetrics.descent, paint);canvas.restore(); (代碼位置com.xp.shadow.ShadowTextView) 復制代碼

初次嘗試,海涵。如有意見和建議,及時溝通。

轉載于:https://juejin.im/post/5a952633f265da4e8700f709

總結

以上是生活随笔為你收集整理的Android新闻类导航栏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品88av | 国产精品亚洲欧美 | 男同av在线观看一区二区三区 | 白浆一区 | 成人首页 | 亚洲春色一区二区三区 | 欧美怡红院一区二区三区 | 国产精品羞羞答答在线 | 色婷婷综合五月 | 久久久久久夜 | 色站在线 | 国产伦精品一区二区三区照片91 | 中文字幕在线播放视频 | 久久国产精品久久精品国产 | 诱夫1v1高h| 午夜在线观看影院 | 91精品免费在线 | 老熟妇高潮一区二区三区 | 精品一区日韩 | 美女视频免费在线观看 | 国产成人精品免高潮在线观看 | 日韩精品免费观看 | 500部大龄熟乱视频 亚洲乱码精品 | 欧美日韩国产免费 | 成人午夜激情网 | 在线a网| 91成人国产 | 欧美精品高清 | 国产一区二区三区视频免费在线观看 | 国产精品嫩草影院av蜜臀 | 暖暖成人免费视频 | 人人妻人人澡人人爽人人精品 | 色呦呦官网 | 韩国伦理在线看 | 黄色一级片 | 中文字幕在线视频播放 | 黄色伊人 | 国产资源久久 | 免费视频黄色 | 白丝久久 | 91射射| 性色av一区二区三区免费 | 麻豆成人入口 | aaaa免费视频 | 18禁一区二区三区 | 欧美另类在线观看 | 一个人看的www片免费高清中文 | 欧美一区二区三区久久精品 | www操操操| 一级少妇女片 | 天海翼av在线播放 | 国产精品一区二区视频 | 已满十八岁免费观看全集动漫 | 国产喷水视频 | 中文字幕+乱码+中文 | 少妇超碰 | 亚洲免费国产视频 | 色眯眯av | 香蕉中文网 | 黄色亚洲精品 | 尹人综合在线 | www在线观看免费视频 | 在线免费观看麻豆 | 欧美日韩久 | 成人免费视频一区二区三区 | 日韩中文字幕网站 | 国产精品麻豆一区二区三区 | 三级av毛片 | 狂野少女电影在线观看国语版免费 | 亚洲视频一区在线播放 | 中文字幕一区二区三区在线观看 | 亚洲天堂av网站 | 日本高清视频在线播放 | 国产女主播福利 | 香蕉视频官方网站 | 黄色在线免费观看 | 韩国三级hd中文字幕有哪些 | 一边摸内裤一边吻胸 | 亚洲性生活大片 | 超碰成人免费电影 | 欧美囗交做爰视频 | 超碰网址 | 日本黄色大片在线观看 | 国产做受高潮 | 香蕉久久夜色精品升级完成 | 人人妻人人澡人人爽精品欧美一区 | 久久久久网 | 国产色婷婷一区二区三区竹菊影视 | 91桃色在线观看 | 欧美激情黑人 | 一级不卡 | 国产精品国产成人国产三级 | www一起操 | av一二三区| 黄av在线播放 | 国产精品无码免费播放 | 91免费黄色 | 97久久久久 | 亚洲免费av一区二区 |