Android开源:suitline-小巧且高效的线性图表组件
MinFields
7年前
<h2>SuitLines</h2> <p>suitline是一个小巧且高效的线性图表组件。</p> <p><img src="https://simg.open-open.com/show/36c1f8db6cf815a8578788cd178d5110.png"> <img src="https://simg.open-open.com/show/78a6a479dd12e475093e0c329cf4d5e5.png"></p> <p><img src="https://simg.open-open.com/show/afa6c836fb9c3bbba66d0b3da3165b80.gif"> <img src="https://simg.open-open.com/show/d1041214ccd3a5935d7db8536cc2cda2.gif"></p> <h2>功能特性</h2> <p>suitline基于实用性目的而打造,相较于其它图表库,suitlines在多线段、性能体验以及视觉反馈等几个方面进行了支持和优化,使其更适合用于实际项目中。suitLines的所有特性如下:</p> <ul> <li>可以为line指定一或多种颜色;</li> <li>支持多条line;</li> <li>支持线段 / 曲线 / 虚线 相互切换;</li> <li>支持边缘拖动反馈效果;</li> <li>支持y轴自定义分隔区间、x轴自定义文本;</li> <li>支持点击反馈;</li> <li>美而不腻的动画;</li> </ul> <h2>使用步骤</h2> <p>注意:SuitLines需要项目的 API >= 14</p> <h3>1.集成</h3> <ul> <li>第一种:通过build.gradle方式集成 <pre> <code class="language-java">compile 'tech.linjiang:suitlines:1.0.0'</code></pre> </li> <li>第二种:直接下载源文件到项目。(推荐)由于所有的逻辑代码都在 SuitLines.java 中且拥有丰富的注释,所以可以方便地按照实际业务需求来调整或改造。</li> </ul> <h3>2.在xml布局中调用:</h3> <pre> <code class="language-java"><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"/></code></pre> <p>所有可静态配置的属性如上,以下是其对应的动态设置方法及其它API:</p> <table> <thead> <tr> <th>静态属性</th> <th>对应API</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>xySize</td> <td>setXySize</td> <td>xy轴文字大小</td> </tr> <tr> <td>xyColor</td> <td>setXyColor</td> <td>xy轴文字的颜色,包含轴线</td> </tr> <tr> <td>lineType</td> <td>setLineType</td> <td>指定line类型:CURVE / SEGMENT(曲线/线段)</td> </tr> <tr> <td>Style</td> <td>setLineStyle</td> <td>指定line的风格:DASHED / SOLID(虚线/实线)</td> </tr> <tr> <td>needEdgeEffect</td> <td>disableEdgeEffect</td> <td>关闭边缘效果,默认开启</td> </tr> <tr> <td>colorEdgeEffect</td> <td>setEdgeEffectColor</td> <td>指定边缘效果的颜色,默认为Color.GRAY</td> </tr> <tr> <td>needClickHint</td> <td>disableClickHint</td> <td>关闭点击提示信息,默认开启</td> </tr> <tr> <td>colorHint</td> <td>setHintColor</td> <td>设置提示辅助线、文字颜色</td> </tr> <tr> <td>maxOfVisible</td> <td>/</td> <td>一组数据在可见区域中的最大可见点数,至少>=2</td> </tr> <tr> <td>countOfY</td> <td>/</td> <td>y轴刻度数,至少>=1</td> </tr> <tr> <td>/</td> <td>setLineSize</td> <td>设置line在非填充形态时的大小</td> </tr> <tr> <td>/</td> <td>setLineForm</td> <td>设置line的形态:是否填充,默认为false</td> </tr> </tbody> </table> <h3>3.填充数据</h3> <p>对于一条line,可以直接调用feed或feedWithAnim方法:</p> <pre> <code class="language-java">List<Unit> lines = new ArrayList<>(); for (int i = 0; i < 14; i++) { lines.add(new Unit(new SecureRandom().nextInt(48), i + "")); } suitLines.feedWithAnim(lines);</code></pre> <p>如果是多条数据,则需要通过Builder来实现:</p> <pre> <code class="language-java">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);</code></pre> <h2> </h2> <p> </p> <p>项目主页:<a href="http://www.open-open.com/lib/view/home/1493348019651">http://www.open-open.com/lib/view/home/1493348019651</a></p> <p> </p>