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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android绘制(一):来用shape绘出想要的图形吧!

發(fā)布時(shí)間:2023/12/10 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android绘制(一):来用shape绘出想要的图形吧! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 前言
  • shape繪制
  • 矩形
  • 橢圓
  • 環(huán)
  • 用shape繪制SeekBar
  • 最后

前言

在沒有UI設(shè)計(jì)師的時(shí)候, 或者是想簡單看下效果的時(shí)候, 用shape進(jìn)行快速繪制是極好的! 官方文檔.


shape繪制

一共有四種shape: rectangle, oval, line, ring.

矩形

我們一個(gè)一個(gè)來看, 首先是矩形:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><!-- 尺寸 --><sizeandroid:width="160dp"android:height="80dp" /><!-- 顏色 --><!--<solid android:color="@color/colorPrimary" />--><!-- 內(nèi)間距 --><paddingandroid:bottom="8dp"android:left="8dp"android:right="8dp"android:top="8dp" /><!-- 漸變 --><gradientandroid:angle="45"android:endColor="@color/colorPrimary"android:startColor="@color/colorAccent"android:type="linear" /><!-- 圓角 --><!--<corners android:radius="200dp" />--><!-- 圓角單獨(dú)設(shè)置 --><cornersandroid:bottomLeftRadius="0dp"android:bottomRightRadius="0dp"android:topLeftRadius="40dp"android:topRightRadius="40dp" /><!-- 描邊 --><strokeandroid:width="2dp"android:color="#666"android:dashGap="4dp"android:dashWidth="4dp" /> </shape> 復(fù)制代碼
  • 漸變gradient是會覆蓋顏色的, 如果你想要純色, 直接設(shè)置顏色值即可, 就是設(shè)置solid中的color.
  • 順帶一提, solid只有color一個(gè)參數(shù).
  • 如果你沒有漸變gradient, 也不寫solid, 那么將會是空心的.
  • 漸變gradienttype參數(shù)有3個(gè):
  • linear 線性漸變
  • sweep 掃描漸變
  • radial 放射漸變, 需要配合參數(shù)gradientRadius
  • 圓角corners可以直接設(shè)置radius, 也可以一個(gè)一個(gè)指定.
  • 描邊stroke的話不寫dashGap, dashWidth就會是實(shí)線, dashWidth代表虛線寬度, dashGap代表虛線間隔.
  • 內(nèi)間距padding和尺寸size就不提了, 大家都懂的.

橢圓

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="oval"><!-- 尺寸 --><sizeandroid:width="160dp"android:height="80dp" /><!-- 顏色 --><!--<solid android:color="@color/colorPrimary" />--><!-- 內(nèi)間距 --><paddingandroid:bottom="8dp"android:left="8dp"android:right="8dp"android:top="8dp" /><!-- 漸變 --><gradientandroid:centerColor="@color/colorPrimary"android:endColor="@color/colorPrimaryDark"android:startColor="@color/colorAccent"android:type="sweep" /><!-- 描邊 --><strokeandroid:width="1dp"android:color="#333" /> </shape> 復(fù)制代碼
  • 漸變是最多可以設(shè)置三種顏色, 意思一看便知了:
  • startColor
  • centerColor
  • endColor
  • 一般橢圓都會用來繪制實(shí)心的小圓點(diǎn).

線就很簡單了:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="line"><!-- 描邊 --><strokeandroid:width="8dp"android:color="@color/colorPrimary"android:dashGap="8dp"android:dashWidth="6dp" /> </shape> 復(fù)制代碼

環(huán)

最后來看環(huán), 它有些特有屬性:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"android:innerRadiusRatio="4"android:shape="ring"android:thicknessRatio="100"android:useLevel="false"><!-- 尺寸 --><sizeandroid:width="200dp"android:height="200dp" /><!-- 漸變 --><gradientandroid:angle="0"android:centerColor="@color/colorPrimaryDark"android:endColor="@color/colorPrimary"android:startColor="@color/colorAccent"android:type="sweep" /><!-- 描邊 --><strokeandroid:width="1dp"android:color="#777"android:dashGap="4dp"android:dashWidth="4dp" /> </shape> 復(fù)制代碼
  • thicknessRatio 指的是環(huán)厚度百分比, 默認(rèn)是9, 比如說這里寬度是200dp, thicknessRatio是100, 環(huán)厚度就是200dp / 100 = 2dp. 當(dāng)然, 你可以直接用thickness設(shè)置厚度.
  • innerRadiusRatio 是內(nèi)環(huán)百分比, 默認(rèn)是3, 就是指用寬度 / 百分比得到的值就是內(nèi)環(huán)半徑. 同樣可以用innerRadius直接設(shè)置.

用shape繪制SeekBar

我知道有很多非常好看的自定義進(jìn)度條, 但是我寫這個(gè)SeekBar是想補(bǔ)充下shape的使用, 用非常少量的代碼實(shí)現(xiàn)自定義進(jìn)度條. 來看看效果圖:

  • 實(shí)現(xiàn)
<SeekBarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="@dimen/eight_dp"android:max="200"android:maxHeight="@dimen/eight_dp"android:minHeight="@dimen/eight_dp"android:progressDrawable="@drawable/layout_progress"android:thumb="@drawable/shape_circle" /> 復(fù)制代碼

簡單解釋下幾個(gè)要點(diǎn)屬性:

  • max代表進(jìn)度條最大的值.
  • maxHeight, minHeight可以設(shè)置進(jìn)度條寬度, 我喜歡稍微寬一點(diǎn)的.
  • thumb設(shè)置滑塊, 可以是圖片, 可以是shape寫的設(shè)置.
  • progressDrawable代表進(jìn)度條的外觀, 可以是圖片, 可以是shape寫的設(shè)置.

再來看看滑塊和進(jìn)度條外觀具體代碼, 進(jìn)度條可以設(shè)置背景, 進(jìn)度, 和第二進(jìn)度. 滑塊的話, 你想畫成什么樣都行.

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@android:id/background"><shape><corners android:radius="@dimen/four_dp" /><solid android:color="@android:color/darker_gray" /></shape></item><item android:id="@android:id/secondaryProgress"><clip><shape><corners android:radius="@dimen/four_dp" /><solid android:color="@color/colorAccent" /></shape></clip></item><item android:id="@android:id/progress"><clip><shape><corners android:radius="@dimen/four_dp" /><solid android:color="@android:color/holo_blue_light" /></shape></clip></item> </layer-list> 復(fù)制代碼<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="oval"><solid android:color="@android:color/holo_blue_light" /><strokeandroid:width="@dimen/one_dp"android:color="@android:color/holo_blue_light" /><sizeandroid:width="@dimen/sixteen_dp"android:height="@dimen/sixteen_dp" /> </shape> 復(fù)制代碼

java部分的話, 用Handler實(shí)例postDelayed方法讓進(jìn)度條跑起來就可以看到效果了. 這里設(shè)定50ms發(fā)一次消息.

findViewById(R.id.cv_start).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mRunnable == null) {mRunnable = new MyRunnable();mHandler.postDelayed(mRunnable, 0);}} });findViewById(R.id.cv_stop).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mHandler.removeCallbacks(mRunnable);mRunnable = null;} }); 復(fù)制代碼private class MyRunnable implements Runnable {@Overridepublic void run() {int progress = mSbTest.getProgress();mTvProgress.setText(String.valueOf(progress));mSbTest.setProgress(++progress);mSbTest.setSecondaryProgress(progress + 10);int progress2 = mSbTest2.getProgress();mTvProgress2.setText(String.valueOf(progress2));mSbTest2.setProgress(++progress2);mSbTest2.setSecondaryProgress(progress2 + 20);mHandler.postDelayed(this, 50);} } 復(fù)制代碼

最后

我個(gè)人還是偏向用shape繪制的, 圖片一出理不好就是內(nèi)存溢出啊, 形變啊, 還要注意分辨率, 真心頭大. 喜歡記得點(diǎn)贊哦, 暗中關(guān)注我也是可以的~


總結(jié)

以上是生活随笔為你收集整理的Android绘制(一):来用shape绘出想要的图形吧!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 制服av网 | 大乳村妇的性需求 | 久久久久美女 | 久操视频免费观看 | 亚洲在线看 | 欧美福利电影 | 操日本老太太 | 精品人妻一区二区三区四区久久 | 床上激情网站 | 欧美亚洲精品在线 | 最新啪啪网站 | 国产特级片 | av导航福利| 伊人网大 | 亚洲国产日韩在线一区 | 六月婷婷综合网 | 好吊色青青草 | 国产精品一 | 一区二区国产在线 | 色综合狠狠 | 色综合久久88 | 136福利视频导航 | 国产福利片在线观看 | 九色首页 | 久久免费少妇高潮99精品 | 成人欧美视频在线观看 | 国产男男gay体育生网站 | 99re在线观看 | 黑人满足娇妻6699xx | 不卡二区| 非洲一级片 | 99视频在线观看免费 | www色日本 | 欧美精品免费一区二区 | 在线亚洲+欧美+日本专区 | av加勒比在线 | 午夜小视频在线播放 | 无码国产伦一区二区三区视频 | 久久av一区二区三区漫画 | 国产亚洲女人久久久久毛片 | 美女视频黄色在线观看 | 97人妻人人澡人人爽人人精品 | 欧美777| 韩国一级片在线观看 | av噜噜色 | 国产剧情演绎av | 综合久久久久久 | av先锋在线 | 欧美一区二区三区激情 | 日韩成人高清视频 | 久久精品国产亚洲av久一一区 | 四虎成人网 | 91亚洲精品久久久蜜桃 | 国产电影免费观看高清完整版视频 | 理论片91| 国产精品久久中文字幕 | 国产在线一区不卡 | 男人天堂色 | 男女视频在线 | 天天干天天操天天玩 | 国产愉拍 | 日本中文字幕在线视频 | 水蜜桃色314在线观看 | 国产影视一区二区三区 | 色综合久久久久久 | 69视频在线观看免费 | 日本一二三区在线 | 国产精品高潮av | 久久久福利 | 亚洲精品视屏 | 中文字幕高清视频 | jizz精品| 伊人日韩 | 久久国产欧美 | 熟女俱乐部一区二区 | 3d动漫啪啪精品一区二区中文字幕 | 亚洲熟女乱综合一区二区三区 | 永久免费精品视频 | 亚洲一区欧美激情 | 偷拍亚洲| 国产日韩视频在线观看 | 亚洲の无码国产の无码步美 | 亚洲美女爱爱 | 成熟了的熟妇毛茸茸 | 少妇三级全黄 | 亚洲精品中文字幕在线 | 国产精品国产三级国产普通话蜜臀 | 久久久wwww| 操白虎逼 | 亚洲欧美另类中文字幕 | 色噜噜色狠狠 | 久久精品视频91 | 日本人妻换人妻毛片 | 不卡在线一区二区 | 大屁股白浆一区二区 | 天天视频黄| 欧美黑人三级 | 欧美成人三级视频 | 波多野结衣视频在线播放 |