這篇文章主要介紹Android怎樣實現(xiàn)左上角傾斜的標(biāo)簽效果,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)建站專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、科爾沁右翼中網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、商城系統(tǒng)網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為科爾沁右翼中等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
實現(xiàn)的思路大致如下圖:
主頁面的布局結(jié)構(gòu)如下:
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:background="#fff" android:layout_height="match_parent" tools:context=".MainActivity"> <RelativeLayout android:layout_width="300dp" android:layout_height="200dp" android:background="#fff" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="5dp" android:background="#33B7F3" android:elevation="2dp"></RelativeLayout> <com.zc.labeldemo.LabelView android:id="@+id/labelView" android:layout_alignParentTop="true" android:layout_width="75dp" android:elevation="3dp" android:layout_height="75dp"/> </RelativeLayout></androidx.constraintlayout.widget.ConstraintLayout>
繪制傾斜標(biāo)簽的代碼如下:
package com.zc.labeldemo;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.util.AttributeSet;import android.view.View;import androidx.annotation.Nullable;/** * @author wenchao * @version 1.0.1 * @className LabelView * @date 2019/9/20 * @description */public class LabelView extends View { /** * 畫筆 */ private Paint paint; /** * Path */ private Path path; /** * View寬度 */ private float width; /** * View高度 */ private float height; /** * 標(biāo)簽背景寬度 */ private float labelWidth; /** * 標(biāo)簽折疊區(qū)域?qū)挾?nbsp; */ private float pointWidth; /** * 標(biāo)簽折疊區(qū)域高度 */ private float pointHeight; /** * 標(biāo)簽背景顏色 */ private int labelColor; /** * 標(biāo)簽折疊區(qū)域背景顏色 */ private int pointColor; /** * 中心點x坐標(biāo) */ private float centerX; /** * 中心點y坐標(biāo) */ private float centerY; /** * 標(biāo)簽文字內(nèi)容 */ private String text; /** * 標(biāo)簽文字顏色 */ private int textColor; public LabelView(Context context) { super(context); } public LabelView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } private void init() { labelWidth = 120; pointWidth = 10; pointHeight = 17; paint = new Paint(); path = new Path(); paint.setAntiAlias(true); paint.setStrokeWidth(10); setBackgroundColor(Color.TRANSPARENT); labelColor = Color.parseColor("#EA6724"); pointColor = Color.parseColor("#C43200"); text = "測試內(nèi)容"; textColor = Color.WHITE; } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); width = w; height = h; centerX = w/2; centerY = h/2; } @Override public void draw(Canvas canvas) { super.draw(canvas); //畫標(biāo)簽區(qū)域背景上邊的折疊區(qū)域(小三角區(qū)域) path.reset(); path.moveTo(width-pointWidth,0); path.lineTo(width,pointHeight); path.lineTo(width-pointWidth-26,pointHeight); path.close(); paint.setColor(pointColor); canvas.drawPath(path,paint); //畫標(biāo)簽背景區(qū)域下邊的折疊區(qū)域 path.reset(); path.moveTo(0,height-pointWidth); path.lineTo(pointHeight,height); path.lineTo(pointHeight,height-pointWidth-26); path.close(); paint.setColor(pointColor); canvas.drawPath(path,paint); //畫標(biāo)簽背景區(qū)域 path.reset(); paint.setColor(labelColor); paint.setStyle(Paint.Style.FILL); path.moveTo(width-labelWidth-pointWidth,0); path.lineTo(width-pointWidth,0); path.lineTo(0,height-pointWidth); path.lineTo(0,height-labelWidth-pointWidth); canvas.drawPath(path,paint); //畫文字 逆時針選擇45度 canvas.rotate(-45,centerX,centerY); //文字中心點橫坐標(biāo) float textX = width / 2; //文字中心點縱坐標(biāo) float textY = (height-pointWidth-(labelWidth / 2f)) / 2f; paint.setColor(textColor); paint.setStyle(Paint.Style.FILL); paint.setTextSize(38); //設(shè)置文字居中繪制 paint.setTextAlign(Paint.Align.CENTER); canvas.drawText(text,textX,textY,paint); }}
以上是“Android怎樣實現(xiàn)左上角傾斜的標(biāo)簽效果”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享名稱:Android怎樣實現(xiàn)左上角傾斜的標(biāo)簽效果
路徑分享:http://muchs.cn/article10/pgopdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、網(wǎng)站維護、手機網(wǎng)站建設(shè)、虛擬主機、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)