個(gè)人博客地址: 斯科特安的時(shí)間
CurveView 是一個(gè)輕量級(jí)悔橄、可高度定制化的折線圖項(xiàng)目蔚万。
效果演示
顯示全部 | 滾動(dòng)支持 |
---|---|
特點(diǎn)
- 支持樣式定制
- 使用 adapter 方式集成數(shù)據(jù),用法簡(jiǎn)單,極易理解
- 支持點(diǎn)上 8 個(gè)方向同時(shí)添加文字
- 支持顯示全部長(zhǎng)度或手動(dòng)拖動(dòng)
用法
1. 導(dǎo)入依賴
在項(xiàng)目build.gradle
中添加:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
添加依賴
dependencies {
compile 'com.github.auv1107:CurveView:a0e576c041'
}
2. 添加 CurveView
<com.sctdroid.app.uikit.CurveView
android:id="@+id/curve_view"
android:layout_width="match_parent"
android:layout_height="150dp"
app:backgroundColor="#16b7df"
app:corner="1px"
app:contentPaddingStart="40dp"
app:contentPaddingEnd="40dp"
app:contentPaddingBottom="20dp"
app:contentPaddingTop="20dp"
app:strokeWidth="1px"
app:showXLine="false"
app:showXText="true"
app:contentColor="@android:color/white"
app:dotTextColor="@android:color/white"
app:dotTextSize="8sp"
app:axisTextSize="9sp"
app:axisTextColor="@android:color/white"
app:dotTextGravity="center_horizontal|bottom"
app:showAll="true"
app:unitWidth="100dp"
/>
屬性說明
屬性 | 類型 | 說明 |
---|---|---|
backgroundColor | color | 背景色科平,暫只支持顏色背景 |
corner | dimension | 折線平滑度,0 為尖銳的折線榔组,越大越平滑 |
contentPaddingStart | dimension | 左(開始點(diǎn))內(nèi)容邊距 |
contentPaddingEnd | dimension | 右(結(jié)束點(diǎn))內(nèi)容邊距 |
contentPaddingBottom | dimension | 下內(nèi)容邊距 |
contentPaddingTop | dimension | 上內(nèi)容邊距 |
strokeWidth | dimension | 折線寬度 |
showXLine | boolean | 是否繪制 x 軸 |
showXText | String | 是否顯示 x 軸文字 |
contentColor | color | 折線和坐標(biāo)軸顏色 |
dotTextColor | color | 點(diǎn)標(biāo)記文字顏色 |
dotTextSize | dimension | 點(diǎn)標(biāo)記文字尺寸 |
axisTextSize | dimension | 坐標(biāo)軸文字尺寸 |
axisTextColor | color | 坐標(biāo)軸文字顏色 |
showAll | boolean | 是否顯示所有點(diǎn)雳殊。true ,顯示所有點(diǎn)臀晃。false 觉渴,每格寬度由 unitWidth 指定,支持手指拖動(dòng) |
unitWidth | dimension | x 軸上相鄰兩點(diǎn)寬度徽惋,僅在 showAll 為 false 時(shí)有效 |
3. 添加 Adapter
CurveView curveView = (CurveView) findViewById(R.id.curve_view);
curveView.setAdapter(new CurveView.Adapter() {
String text = "吾生也有涯案淋,而知也無涯";
/**
* @return 點(diǎn)的數(shù)量
*/
@Override
public int getCount() {
return 7;
}
/**
* level 是 y 軸高度,在 minLevel 和 maxLevel 之間
* @param position
* @return 返回當(dāng)前 position 的 level
*/
@Override
public int getLevel(int position) {
return (int) (15 + (Math.random() * 20));
}
/**
* @return y 軸下限
*/
@Override
public int getMinLevel() {
return 15;
}
/**
* @return y 軸上限
*/
@Override
public int getMaxLevel() {
return 35;
}
/**
* 設(shè)置點(diǎn)上的文字险绘,每個(gè)mark是一個(gè)踢京,可同時(shí)設(shè)置點(diǎn)的 8 個(gè)方向的文字
* 注意: Gravity 應(yīng)使用 CurveView.Gravity 類
*
* @param position
* @return
*/
@Override
public Set<CurveView.Mark> onCreateMarks(int position) {
Set<CurveView.Mark> marks = new HashSet<CurveView.Mark>();
CurveView.Mark mark = new CurveView.Mark(getLevel(position) + "°", Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 20, 0, 0);
CurveView.Mark mark1 = new CurveView.Mark(getLevel(position) + "°", Gravity.START | Gravity.CENTER_HORIZONTAL, 0, 0, 0, 20);
marks.add(mark);
marks.add(mark1);
return marks;
}
/**
* 獲取第 i 個(gè)點(diǎn) x 軸上的文字
* @param i
* @return
*/
@Override
public String getXAxisText(int i) {
return text.substring(i, i + 1);
}
});
項(xiàng)目地址: 輕量級(jí)、可高度定制化的折線圖]
2017.6.15
斯科特安