Android開源:suitline-小巧且高效的線性圖表組件

MinFields 7年前發布 | 14K 次閱讀 安卓開發 Android開發 移動開發

SuitLines

suitline是一個小巧且高效的線性圖表組件。

功能特性

suitline基于實用性目的而打造,相較于其它圖表庫,suitlines在多線段、性能體驗以及視覺反饋等幾個方面進行了支持和優化,使其更適合用于實際項目中。suitLines的所有特性如下:

  • 可以為line指定一或多種顏色;
  • 支持多條line;
  • 支持線段 / 曲線 / 虛線 相互切換;
  • 支持邊緣拖動反饋效果;
  • 支持y軸自定義分隔區間、x軸自定義文本;
  • 支持點擊反饋;
  • 美而不膩的動畫;

使用步驟

注意:SuitLines需要項目的 API >= 14

1.集成

  • 第一種:通過build.gradle方式集成
    compile 'tech.linjiang:suitlines:1.0.0'
  • 第二種:直接下載源文件到項目。(推薦)由于所有的邏輯代碼都在 SuitLines.java 中且擁有豐富的注釋,所以可以方便地按照實際業務需求來調整或改造。

2.在xml布局中調用:

<tech.linjiang.suitlines.SuitLines
    xmlns:line="http://schemas.android.com/apk/res-auto"
    android:id="@+id/suitlines"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    line:xySize="8"
    line:xyColor="@color/colorAccent"
    line:lineType="curve"
    line:Style="solid"
    line:needEdgeEffect="true"
    line:colorEdgeEffect="@color/colorPrimaryDark"
    line:needClickHint="true"
    line:colorHint="@color/colorPrimary"
    line:maxOfVisible="7"
    line:countOfY="6"/>

所有可靜態配置的屬性如上,以下是其對應的動態設置方法及其它API:

靜態屬性 對應API 說明
xySize setXySize xy軸文字大小
xyColor setXyColor xy軸文字的顏色,包含軸線
lineType setLineType 指定line類型:CURVE / SEGMENT(曲線/線段)
Style setLineStyle 指定line的風格:DASHED / SOLID(虛線/實線)
needEdgeEffect disableEdgeEffect 關閉邊緣效果,默認開啟
colorEdgeEffect setEdgeEffectColor 指定邊緣效果的顏色,默認為Color.GRAY
needClickHint disableClickHint 關閉點擊提示信息,默認開啟
colorHint setHintColor 設置提示輔助線、文字顏色
maxOfVisible / 一組數據在可見區域中的最大可見點數,至少>=2
countOfY / y軸刻度數,至少>=1
/ setLineSize 設置line在非填充形態時的大小
/ setLineForm 設置line的形態:是否填充,默認為false

3.填充數據

對于一條line,可以直接調用feed或feedWithAnim方法:

List<Unit> lines = new ArrayList<>();
for (int i = 0; i < 14; i++) {
    lines.add(new Unit(new SecureRandom().nextInt(48), i + ""));
}
suitLines.feedWithAnim(lines);

如果是多條數據,則需要通過Builder來實現:

SuitLines.LineBuilder builder = new SuitLines.LineBuilder();
for (int j = 0; j < count; j++) {
    List<Unit> lines = new ArrayList<>();
    for (int i = 0; i < 50; i++) {
        lines.add(new Unit(new SecureRandom().nextInt(128), "" + i));
    }
    builder.add(lines, new int[]{...});
}
builder.build(suitLines, true);

 

 

項目主頁:http://www.baiduhome.net/lib/view/home/1493348019651

 

 本文由用戶 MinFields 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!