Android折線圖,曲線圖,柱狀圖,餅狀圖

ChartView

ChartView是一個Android開源圖表庫纬傲。目前僅支持折線圖襟衰,曲線圖贴铜,柱狀圖,餅狀圖瀑晒,以及折線圖和曲線圖點擊之后的狀態(tài)變化绍坝,可以選擇是畫一個圖片還是一個背景框。

Screens

折線圖和曲線圖:

chartview.gif

餅狀圖有內(nèi)圓:

piechart_inside.gif

餅狀圖沒有內(nèi)圓:

piechart.gif

Usage

Gradle

  • Step 1. Add LineChartView
    dependencies {
           compile 'com.veken:chart_view:1.0.2'
    }

折線圖

XML

  <com.veken.linecharviewmodule.LineChartView
            android:id="@+id/chart_view"
            android:layout_width="match_parent"
            android:layout_height="300dp"
            app:showPicResource="@mipmap/ic_launcher"
            app:defaultStrokeWidth="0.5dp"
            app:pointClickRadius="3dp"
            app:defaultTextSize="16sp"
            app:pointDefaultRadius="2dp"
            app:isNeedBg="true"
            app:clickable="true"
            app:startColor="@color/startColor"
            app:endColor="@color/endColor" />

折線圖自定義屬性

attrs description
showPicResource 點擊之后顯示的圖片資源
defaultTextSize 默認(rèn)文字大小
yLableTextColor Y軸lable文字顏色
xLableTextColor X軸Lable文字顏色
defaultColor 默認(rèn)顏色
axisColor 坐標(biāo)軸顏色
defaultStrokeWidth 默認(rèn)畫筆的StrokeWidth
axisMarginHeight X軸下的文字和X軸之間的間隔高度
yLableText Y軸的文字描述
isNeedBg 是否需要背景(默認(rèn)為不需要=false)
isNeedDrawConnectYDataLine 是否需要點和Y軸之間的連接線(默認(rèn)為不需要=false)
dottedLineWidth 連接線為虛線時的寬度
connectLineColor 連接線的顏色
pointMarginHeight 點和文字之間的間隔高度
pointDefaultRadius 點默認(rèn)半徑
pointClickRadius 點擊之后圓的半徑
textAndClickBgMargin 點擊之后文字和點擊背景上下左右的間隔
clickBgColor 點擊之后的背景顏色
startColor 背景顏色的起始色
endColor 背景顏色的結(jié)束色
clickable 是否可以點擊

Java

LineChartView lineChartView = view.findViewById(R.id.line_chart_view);
lineChartView.setyLableText("折線圖");
//設(shè)置點擊背景(可以為圖片苔悦,也可以為一個顏色背景轩褐,大小根據(jù)textAndClickBgMargin設(shè)置)
lineChartView.setDrawBgType(DrawBgType.DrawBitmap);
//設(shè)置圖片資源
lineChartView.setShowPicResource(R.mipmap.click_icon);
//連接線為虛線(也可以為實現(xiàn))
lineChartView.setDrawConnectLineType(DrawConnectLineType.DrawDottedLine);
lineChartView.setClickable(true);
//是否需要畫連接線
lineChartView.setNeedDrawConnectYDataLine(true);
//連接線的顏色
lineChartView.setConnectLineColor(getResources().getColor(R.color.default_color));
//是否需要背景
lineChartView.setNeedBg(true);
//畫曲線圖(也可以為折線圖)
lineChartView.setDrawLineType(DrawLineType.Draw_Curve);

Data

private ArrayList<ChartBean> lineChartBeanList;
if(lineChartBeanList ==null){
    lineChartBeanList = new ArrayList<>();
}
lineChartView.setDefaultTextSize(24);
Random random = new Random();
for(int i=0;i<7;i++){
    ChartBean lineChartBean = new ChartBean();
    lineChartBean.setValue(String.valueOf(random.nextInt(10000)));
    lineChartBean.setDate(String.valueOf(i));
    lineChartBeanList.add(lineChartBean);
}
lineChartView.setData(lineChartBeanList);
}

柱狀圖

XML

  <com.veken.chartview.view.BarChartView
        android:id="@+id/bar_chart_view"
        android:layout_width="match_parent"
        android:layout_height="300dp"/>

柱狀圖自定義屬性

attrs description
axisXItemWidth 每一個Item的寬度
axisXItemMargin Item之間的間隔
isNeedDrawYScale 是否需要畫Y軸的刻度
bgColor 柱狀圖背景顏色

其他同折線圖

Java

private BarChartView barChartView;
barChartView = view.findViewById(R.id.bar_chart_view);
//是否需要柱狀圖的背景
barChartView.setNeedBg(true);
//Y軸文字
barChartView.setyLableText("柱狀圖");
//是否需要連接線
barChartView.setNeedDrawConnectYDataLine(true);
//是否需要畫Y軸刻度
barChartView.setNeedDrawYScale(true);
//連接線的樣式為虛線(也可以為直線)
barChartView.setDrawConnectLineType(DrawConnectLineType.DrawDottedLine);

Data

private ArrayList<ChartBean> barChartBeanList;
if(barChartBeanList == null){
    barChartBeanList = new ArrayList<>();
}
Random random = new Random();
for (int i = 0; i < 7; i++) {
    ChartBean bean = new ChartBean();
    bean.setDate(i+"");
    bean.setValue(100*random.nextInt(10)+"");
    barChartBeanList.add(bean);
}
barChartView.setData(barChartBeanList);

餅狀圖

XML

  <com.veken.chartview.view.PieChartView
        android:id="@+id/piechart_view"
        android:layout_width="200dp"
        android:layout_height="200dp"
        app:insideText="Hello"
        app:insideTextColor="@color/default_color"
        app:insideRadiusPercent="0.5"/>

餅狀圖自定義屬性

attrs description
textColor 百分比文字顏色
textOutCircleMargin 文字和圓之間的間距
isNeedInside 是否需要內(nèi)圓
insideText 內(nèi)圓顯示的文字
insideBgColor 內(nèi)圓背景顏色
insideTextSize 內(nèi)圓文字大小
insideTextColor 內(nèi)圓文字顏色
insideRadiusPercent 內(nèi)圓半徑占外圓半徑的大小,默認(rèn)(0.5)

Java

private PieChartView pieChartView;
pieChartView = view.findViewById(R.id.piechart_view);
//內(nèi)圓中間文字
pieChartView.setInsideText("Hello");
//是否需要加載動畫
pieChartView.setIsNeedAnimation(true,5000);
//是否需要背景
pieChartView.setNeedInside(false);

Data

private List<PieChartBean> mList;
if(mList==null){
    mList = new ArrayList<>();
}
//各個扇形的背景顏色
int[] colors = new int[]{getResources().getColor(R.color.colorAccent),
    getResources().getColor(R.color.default_color),
    getResources().getColor(R.color.colorPrimary),
    getResources().getColor(R.color.endColor)};
Random random = new Random();
for(int i = 0;i<4;i++){
    PieChartBean pieChartBean = new PieChartBean();
    pieChartBean.setValue(random.nextInt(10)+i);
    pieChartBean.setColor(colors[i]);
    mList.add(pieChartBean);
}
pieChartView.setData(mList);

License

Copyright (C) 2018 Veken

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About Me

github地址:https://github.com/Veken/LineChartView

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市玖详,隨后出現(xiàn)的幾起案子把介,更是在濱河造成了極大的恐慌勤讽,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拗踢,死亡現(xiàn)場離奇詭異脚牍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)巢墅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門诸狭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人君纫,你說我怎么就攤上這事驯遇。” “怎么了蓄髓?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵叉庐,是天一觀的道長。 經(jīng)常有香客問我双吆,道長眨唬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任好乐,我火速辦了婚禮匾竿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蔚万。我一直安慰自己岭妖,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布反璃。 她就那樣靜靜地躺著昵慌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪淮蜈。 梳的紋絲不亂的頭發(fā)上斋攀,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天,我揣著相機(jī)與錄音梧田,去河邊找鬼淳蔼。 笑死,一個胖子當(dāng)著我的面吹牛裁眯,可吹牛的內(nèi)容都是我干的鹉梨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼穿稳,長吁一口氣:“原來是場噩夢啊……” “哼存皂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逢艘,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤旦袋,失蹤者是張志新(化名)和其女友劉穎骤菠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猜憎,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡娩怎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了胰柑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡爬泥,死狀恐怖柬讨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情袍啡,我是刑警寧澤踩官,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站境输,受9級特大地震影響蔗牡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嗅剖,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一辩越、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧信粮,春花似錦黔攒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旅掂,卻和暖如春赏胚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背商虐。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工觉阅, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人称龙。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓留拾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鲫尊。 傳聞我的和親對象是個殘疾皇子痴柔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,515評論 2 359