編輯:關於Android編程
AndroidChart">MPAndroidChart是PhilJay大神給Android開發者帶來的福利。MPAndroidChart是一個功能強大並且使用靈活的圖表開源庫,支持Android和IOS兩種,這裡我們暫時只關注Android版本。
https://github.com/PhilJay/MPAndroidChart/wiki
https://jitpack.io/com/github/PhilJay/MPAndroidChart/v3.0.0-beta1/javadoc/
先看下效果壓壓驚,右邊的圖為左邊的圖橫向拉伸後的效果

實際靜態效果,上面那個是因為加了動畫,錄制Gif的時候不小心弄成了一直旋轉的效果<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPjxpbWcgYWx0PQ=="這裡寫圖片描述" src="/uploadfile/Collfiles/20160906/2016090609284137.png" title="\" /> 
布局文件
對於Chart,可以采用布局文件添加方式,也可以采用代碼添加方式。
代碼
public class MainActivity extends AppCompatActivity {
@Bind(R.id.piechart)
PieChart piechart;
private Random random;//用於產生隨機數字
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
random = new Random();
initPieChart();//初始化餅圖
}
private void initPieChart() {
ArrayList yVals = new ArrayList<>(); //值坐標
ArrayList xVals = new ArrayList<>();//對應的Lable,可以理解成X軸
for (int i = 0; i < 5; i++) {
xVals.add((i + 1) + "月");
yVals.add(new BarEntry(random.nextInt(10000), i));
}
PieDataSet pieDataSet = new PieDataSet(yVals, "小明每月支出");//創建餅圖的一個數據集
pieDataSet.setColors(ColorTemplate.COLORFUL_COLORS); //設置成豐富多彩的顏色
DisplayMetrics metrics = getResources().getDisplayMetrics();
float px = 10 * (metrics.densityDpi / 160f);
pieDataSet.setSelectionShift(px); //點擊後延伸出來的長度
PieData piedata = new PieData(xVals, pieDataSet);//生成PieData
piechart.setData(piedata);//給PieChart填充數據
piechart.getLegend().setPosition(Legend.LegendPosition.ABOVE_CHART_LEFT);
piechart.getLegend().setForm(Legend.LegendForm.CIRCLE);//設置注解的位置和形狀
piechart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {//設置值選擇時的Listener
@Override
public void onValueSelected(Entry entry, int i, Highlight highlight) {
Toast.makeText(MainActivity.this, "Something selected value = " + entry.getVal(), Toast.LENGTH_SHORT).show();//單純地顯示一個Toast
}
@Override
public void onNothingSelected() {
}
});
piechart.setCenterText("收支明細");//中間寫的文字
piechart.setCenterTextColor(Color.RED);//設置中間文字的顏色
piechart.setCenterTextRadiusPercent(0.5f);//設置文字顯示的角度,180橫著,默認是豎著
piechart.setCenterTextSize(12f);//設置中心文字的字體大小
piechart.setCenterTextTypeface(null);//設置字體
piechart.setDrawCenterText(true);//中心字使能開關,false時中間無法顯示文字
piechart.setTransparentCircleAlpha(100);//透明圈的透明度,分3圈,一個是外面的值,然後是這個,然後就是下面的那個Hole
piechart.setTransparentCircleColor(Color.RED); //設置顏色
piechart.setTransparentCircleRadius(50f);//設置半徑
piechart.setDrawHoleEnabled(true);//基本同上
piechart.setHoleColor(Color.GREEN);
piechart.setHoleRadius(30f);
piechart.setDescription("No Deal");//設置描述文字
piechart.setDescriptionTextSize(20.f);//設置描述文字的字體
piechart.animateXY(1000, 1000);
}
}
值選擇時的事件處理
上面的例子中其實已經有了
piechart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {//設置值選擇時的Listener
@Override
public void onValueSelected(Entry entry, int i, Highlight highlight) {
Toast.makeText(MainActivity.this, "Something selected value = " + entry.getVal(), Toast.LENGTH_SHORT).show();//單純地顯示一個Toast
}
@Override
public void onNothingSelected() {
}
});
選中和啥都沒干的回調,利用這個回調我們可以做一些跳轉操作,比如從國家級報表,跳轉到省級,然後市級 and so on.
Android中gson、jsonobject解析JSON的方法詳解
JSON的定義: 一種輕量級的數據交換格式,具有良好的可讀和便於快速編寫的特性。業內主流技術為其提供了完整的解決方案(有點類似於正則表達式 ,獲得了當今大部分語言的支持)
android精確繪制文字位置的方法
android 中使用Canvas的drawText繪制文本的位置,是基於基線的。如下圖: 其中字母Q的小尾巴在橫線下面了。 這裡面的關鍵是Paint.getT
Android開發之基本控件和四種布局方式詳解
Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驅動。給控件添加事件也有接口回調和委托代理的方式。今天這篇博客就總結一下Android中常用的基
Android多點觸摸交互處理
安卓手機中,多點觸摸是是最基本的操作,下面就使用程序進行演示多點觸摸操作一、獲取觸摸事件中的點擊,移動和抬起事件,創建新的安卓項目,如下面代碼所示,分別為MainActi