Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以画两层饼图吗?_Java_Android_Pie Chart_Mpandroidchart - Fatal编程技术网

Java 可以画两层饼图吗?

Java 可以画两层饼图吗?,java,android,pie-chart,mpandroidchart,Java,Android,Pie Chart,Mpandroidchart,嗨,我正在尝试实现如下图表。请看图片,并帮助我找到一个合适的解决方案。这是我用的 现在我的饼图如下图所示 我正在使用下面的xml 我仍然无法创建饼图的内线。我想要上面已经提到的图表。我怎样才能画出那条线 首先需要在项目中添加库。这是我写的基本代码,您需要根据您的使用进行更改 MainActivity.java package com.devdwl.stackdemo; import android.graphics.Color; import android.support.v7.app.

嗨,我正在尝试实现如下图表。请看图片,并帮助我找到一个合适的解决方案。这是我用的

现在我的饼图如下图所示

我正在使用下面的xml

我仍然无法创建饼图的内线。我想要上面已经提到的图表。我怎样才能画出那条线

首先需要在项目中添加库。这是我写的基本代码,您需要根据您的使用进行更改

MainActivity.java

package com.devdwl.stackdemo;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.data.PieEntry;
import com.github.mikephil.charting.formatter.PercentFormatter;
import com.github.mikephil.charting.utils.ColorTemplate;
import com.github.mikephil.charting.utils.MPPointF;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    PieChart mChartOuter, mChartInner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        mChartOuter = (PieChart) findViewById(R.id.mChartOuter);
        mChartInner = (PieChart) findViewById(R.id.mChartInner);

        mChartOuter.getDescription().setEnabled(false);
        mChartInner.getDescription().setEnabled(false);


        mChartOuter.setCenterTextSize(10f);
        mChartInner.setCenterTextSize(10f);

        mChartOuter.setHoleRadius(75f);
        mChartInner.setHoleRadius(75f);

        mChartOuter.setTransparentCircleRadius(50f);
        mChartInner.setTransparentCircleRadius(50f);

        mChartOuter.getLegend().setEnabled(false);
        mChartInner.getLegend().setEnabled(false);

        setData();

    }

    private void setData() {

        ArrayList<PieEntry> entries = new ArrayList<PieEntry>();

        for (int i = 0; i < 5; i++) {
            entries.add(new PieEntry((float) ((Math.random() * (float) 5) + (float) 5 / 5), i));
        }

        PieDataSet dataSet = new PieDataSet(entries, "Election Results");

        dataSet.setDrawIcons(false);

        dataSet.setSliceSpace(3f);
        dataSet.setIconsOffset(new MPPointF(0, 40));
        dataSet.setSelectionShift(5f);

        ArrayList<Integer> colors = new ArrayList<Integer>();

        for (int c : ColorTemplate.VORDIPLOM_COLORS)
            colors.add(c);

        for (int c : ColorTemplate.JOYFUL_COLORS)
            colors.add(c);

        for (int c : ColorTemplate.COLORFUL_COLORS)
            colors.add(c);

        for (int c : ColorTemplate.LIBERTY_COLORS)
            colors.add(c);

        for (int c : ColorTemplate.PASTEL_COLORS)
            colors.add(c);

        colors.add(ColorTemplate.getHoloBlue());

        dataSet.setColors(colors);

        PieData data = new PieData(dataSet);
        data.setValueFormatter(new PercentFormatter());
        data.setValueTextSize(11f);
        data.setValueTextColor(Color.WHITE);
        mChartOuter.setData(data);
        mChartInner.setData(data);

        mChartOuter.highlightValues(null);
        mChartInner.highlightValues(null);

        mChartOuter.invalidate();
        mChartInner.invalidate();
    }

}
package com.devdll.stackdemo;
导入android.graphics.Color;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入com.github.mikephil.charting.charts.PieChart;
导入com.github.mikephil.charting.data.PieData;
导入com.github.mikephil.charting.data.PieDataSet;
导入com.github.mikephil.charting.data.pientry;
导入com.github.mikephil.charting.formatter.PercentFormatter;
导入com.github.mikephil.charting.utils.ColorTemplate;
导入com.github.mikephil.charting.utils.MPPointF;
导入java.util.ArrayList;
导入java.util.List;
公共类MainActivity扩展了AppCompatActivity{
皮查特·麦克哈特奥特、麦克哈特内尔;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
McHartour=(PieChart)findViewById(R.id.McHartour);
mChartInner=(PieChart)findViewById(R.id.mChartInner);
mchartouther.getDescription().setEnabled(false);
mChartInner.getDescription().setEnabled(false);
设置中心文本大小(10f);
设置中心文本大小(10f);
塞托莱拉迪乌斯(75f);
塞托雷拉迪乌斯(75f);
麦克哈特奥特.塞特透明圈(50f);
设置透明圈(50f);
mchartouther.getLegend().setEnabled(false);
mChartInner.getLegend().setEnabled(false);
setData();
}
私有void setData(){
ArrayList条目=新的ArrayList();
对于(int i=0;i<5;i++){
添加(新条目((float)((Math.random()*(float)5)+(float)5/5),i));
}
PieDataSet数据集=新的PieDataSet(条目,“选举结果”);
dataSet.setDrawIcons(false);
dataSet.setLiceSpace(3f);
setIconsOffset(新的MPPointF(0,40));
dataSet.setSelectionShift(5f);
ArrayList colors=新的ArrayList();
for(int c:ColorTemplate.VORDIPLOM_COLORS)
添加(c);
for(int c:ColorTemplate.journy_COLORS)
添加(c);
用于(int c:ColorTemplate.color\u颜色)
添加(c);
for(int c:ColorTemplate.LIBERTY_COLORS)
添加(c);
用于(int c:ColorTemplate.PASTEL_COLORS)
添加(c);
添加(ColorTemplate.getHoloBlue());
dataSet.setColors(颜色);
PieData数据=新的PieData(数据集);
data.setValueFormatter(新的PercentFormatter());
data.setValueTextSize(11f);
data.setValueTextColor(Color.WHITE);
设置数据(数据);
设置数据(数据);
mChartOuter.highlightvalue(null);
mChartInner.highlightvalue(null);
mchartouther.invalidate();
mChartInner.invalidate();
}
}
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/constraint_holder"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <com.github.mikephil.charting.charts.PieChart
        android:id="@+id/mChartOuter"
        android:layout_width="600dp"
        android:layout_height="600dp"
        android:layout_centerInParent="true" />


    <com.github.mikephil.charting.charts.PieChart
        android:id="@+id/mChartInner"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_centerInParent="true" />

</RelativeLayout>

结果


祝你好运

你有没有看到这个链接@Dilip是的,我用这个图表看了一遍,但无法实现,因为这是基于这个圆圈的两个独立圆圈的代码。但我的问题是,我想你们能从形象上看到我想要实现的目标吗?请尽快获得答案。你可以通过取两个具有相同中心点和不同大小的饼图来实现@APKAPPS@DwlRathod我尝试了这个方法,但没有成功,因为饼图有多个白色背景的值。这意味着主饼图隐藏在小饼图的后面。我用lib做了一个例子,效果很好@APKAPPSok谢谢你让我尝试一下,很快就会回来的。谢谢你,有些东西比什么都不好。这对我很有效
package com.devdwl.stackdemo;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.data.PieEntry;
import com.github.mikephil.charting.formatter.PercentFormatter;
import com.github.mikephil.charting.utils.ColorTemplate;
import com.github.mikephil.charting.utils.MPPointF;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    PieChart mChartOuter, mChartInner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        mChartOuter = (PieChart) findViewById(R.id.mChartOuter);
        mChartInner = (PieChart) findViewById(R.id.mChartInner);

        mChartOuter.getDescription().setEnabled(false);
        mChartInner.getDescription().setEnabled(false);


        mChartOuter.setCenterTextSize(10f);
        mChartInner.setCenterTextSize(10f);

        mChartOuter.setHoleRadius(75f);
        mChartInner.setHoleRadius(75f);

        mChartOuter.setTransparentCircleRadius(50f);
        mChartInner.setTransparentCircleRadius(50f);

        mChartOuter.getLegend().setEnabled(false);
        mChartInner.getLegend().setEnabled(false);

        setData();

    }

    private void setData() {

        ArrayList<PieEntry> entries = new ArrayList<PieEntry>();

        for (int i = 0; i < 5; i++) {
            entries.add(new PieEntry((float) ((Math.random() * (float) 5) + (float) 5 / 5), i));
        }

        PieDataSet dataSet = new PieDataSet(entries, "Election Results");

        dataSet.setDrawIcons(false);

        dataSet.setSliceSpace(3f);
        dataSet.setIconsOffset(new MPPointF(0, 40));
        dataSet.setSelectionShift(5f);

        ArrayList<Integer> colors = new ArrayList<Integer>();

        for (int c : ColorTemplate.VORDIPLOM_COLORS)
            colors.add(c);

        for (int c : ColorTemplate.JOYFUL_COLORS)
            colors.add(c);

        for (int c : ColorTemplate.COLORFUL_COLORS)
            colors.add(c);

        for (int c : ColorTemplate.LIBERTY_COLORS)
            colors.add(c);

        for (int c : ColorTemplate.PASTEL_COLORS)
            colors.add(c);

        colors.add(ColorTemplate.getHoloBlue());

        dataSet.setColors(colors);

        PieData data = new PieData(dataSet);
        data.setValueFormatter(new PercentFormatter());
        data.setValueTextSize(11f);
        data.setValueTextColor(Color.WHITE);
        mChartOuter.setData(data);
        mChartInner.setData(data);

        mChartOuter.highlightValues(null);
        mChartInner.highlightValues(null);

        mChartOuter.invalidate();
        mChartInner.invalidate();
    }

}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/constraint_holder"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <com.github.mikephil.charting.charts.PieChart
        android:id="@+id/mChartOuter"
        android:layout_width="600dp"
        android:layout_height="600dp"
        android:layout_centerInParent="true" />


    <com.github.mikephil.charting.charts.PieChart
        android:id="@+id/mChartInner"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_centerInParent="true" />

</RelativeLayout>