`

饼图账单案例开发

 
阅读更多

视频网址:http://www.imooc.com/learn/756

 

成功入坑Android Studio

 

1.实现主界面布局

2.json数据获取与解析

3.MPAndroidChart介绍

 

 

 

1.实现主界面布局

activity_main.xml

 

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

    <android.support.v4.view.ViewPager
        android:id="@+id/vp_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </android.support.v4.view.ViewPager>
</RelativeLayout>

 

遇到的第一个问题:

android.support.v4.view.ViewPager

是什么?

经查找得知是用来显示左右滑动的界面的。

下面这个博客链接详细讲了ViewPager的使用方法,还有一些不错的代码练习。

http://blog.csdn.net/wangjinyu501/article/details/8169924

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private ViewPager vpMain;

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

        vpMain= (ViewPager) findViewById(R.id.vp_main);
        initView();
    }

    private void initView() {
        vpMain.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                return PieFragment.newInstance(position+"");
            }

            @Override
            public int getCount() {
                return 4;//返回4就是有4个界面
            }
        });
    }
}

PieFragment.java

public class PieFragment extends Fragment {
    private static final String DATA_KEY ="piefragment_data_key";
    private String mData;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle arguments = getArguments();
        if (arguments != null) {
            mData=arguments.getString(DATA_KEY);
        }

    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) {
        TextView textView=new TextView(getContext());
        textView.setText(mData);
        return textView;
    }

    public static PieFragment newInstance(String data) {
        
        Bundle args = new Bundle();
        args.putString(DATA_KEY,data);
        PieFragment fragment = new PieFragment();
        fragment.setArguments(args);
        return fragment;
    }
}

这些代码对我目前来讲确实比较难,以后遇得多了应该会理解。

 

哎,编译器不幸的报错了,但我感觉我的代码是没有问题的,几经周折后终于发现是Fragment的包引用错了,应该引用

import android.support.v4.app.Fragment;
程序成功运行到手机上,android studio的界面很漂亮。

 

2.json数据获取与解析

获取:

MainActivity.java

 private String mJson="[{\"date\":\"2016年5月\",\"obj\":
[{\"title\":\"外卖\",\"value\":34}," +
            "{\"title\":\"娱乐\",\"value\":21},
{\"title\":\"其他\",\"value\":45}]}," +
            "{\"date\":\"2016年6月\",\"obj\":
[{\"title\":\"外卖\",\"value\":32}," +
            "{\"title\":\"娱乐\",\"value\":22},
{\"title\":\"其他\",\"value\":42}]}," +
            "{\"date\":\"2016年7月\",\"obj\":
[{\"title\":\"外卖\",\"value\":34}," +
            "{\"title\":\"娱乐\",\"value\":123},
{\"title\":\"其他\",\"value\":24}]}," +
            "{\"date\":\"2016年8月\",\"obj\":
[{\"title\":\"外卖\",\"value\":145}," +
            "{\"title\":\"娱乐\",\"value\":123},
{\"title\":\"其他\",\"value\":124}]}]";

解析:

下载gson-2.2.4.jar,复制粘贴到libs文件夹中,右键gson-2.2.4.jar点击Add As Library选择OK即可。

新建MonthBean.java

 

{"date":"2016年5月","obj":[{"title":"外卖","value":34}
 */
public class MonthBean {

    public String date;
    public ArrayList<PieBean> obj;

    @Override
    public String toString() {
        return "MonthBean{" +
                "date='" + date + '\'' +
                ", obj=" + obj.toString() +
                '}';
    }

    class PieBean {
        public String title;
        public int value;

        @Override
        public String toString() {
            return "PieBean{" +
                    "title='" + title + '\'' +
                    ", value=" + value +
                    '}';
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public int getValue() {
            return value;
        }

        public void setValue(int value) {
            this.value = value;
        }
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public ArrayList<PieBean> getObj() {
        return obj;
    }

    public void setObj(ArrayList<PieBean> obj) {
        this.obj = obj;
    }
}
get set toString快捷键右键选Generate。

 

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private ArrayList<MonthBean> mData;

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

        initData();
    }

    private void initData() {
        Gson gson=new Gson();
        mData=gson.fromJson(mJson,new TypeToken<ArrayList<MonthBean>>(){}.getType());
    }

    private void initView() {
        vpMain.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                return PieFragment.newInstance(mData.get(position).toString());
            }
            @Override
            public int getCount() {
                return mData.size();
            }
        });
    }
}

成功运行



 

3.MPAndroidChart介绍

https://github.com/PhilJay/MPAndroidChart

用法:在Android Stidio中

Add the following to your project level build.gradle:

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

Add this to your app build.gradle

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    testCompile 'junit:junit:4.12'
    compile files('libs/gson-2.2.4.jar')

    compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'
}

MPAndroidChart感觉特别不错,以后应多做上面的实践。

还有就是记住alt+ctrl+l这个整理代码的快捷键。

 

 

 

 

  • 大小: 12.5 KB
分享到:
评论

相关推荐

    数据分析和图标-Python统计年度消费账单-Python源码示例.zip

    在这个年度消费账单的案例中,可能用到了这些库来创建条形图展示每月支出,或者用饼图显示各类消费的占比。 此外,"游戏开发"标签暗示了Python在游戏行业的应用。虽然Python不是游戏开发的首选语言,但它可以用于...

    VC++案例精编(很好的实例).rar

    《VC++案例精编》是针对使用Microsoft Visual C++(简称VC++)开发应用程序的一份珍贵资源,包含多个实际项目案例,旨在帮助开发者提升在Windows平台上的编程技能。以下是四个核心案例的详细解读: 1. 酒店管理系统...

    基于 Android studio 开发的记账本,带有详细报告

    在Android Studio中开发一个记账本应用是一...总之,基于Android Studio的记账本项目涵盖了Android应用开发的多个方面,包括UI设计、数据存储、用户交互、数据分析和测试等,是一个全面了解和实践Android开发的好案例。

    jsp个人理财系统(论文).zip

    系统的功能可能包括但不限于:用户注册与登录、收支记录管理、预算设定、账单分类、图表展示(如饼图、柱状图)以直观呈现财务状况、定期提醒(例如信用卡还款、账单到期等)以及数据分析功能,帮助用户了解消费习惯...

    C# 家庭理财系统(源码+数据库).zip

    4. **报表统计**:提供图表化的收支分析,比如饼图、柱状图,展示收入与支出的比例,以及不同类别的支出占比。 5. **财务规划**:可能具备未来收入预测和储蓄目标设定功能,辅助用户进行长期的财务规划。 6. **...

    《个人财务管理系统》

    3. 报表分析:系统提供图表化的收支分析,如饼图、柱状图等,显示各项支出的占比,以及收入与支出的对比,使用户对财务状况有直观的理解。 4. 账户管理:用户可以创建多个虚拟账户,比如储蓄账户、信用卡账户等,...

    基于Springboot+Vue大学生智能消费记账系统的设计与实现源码案例设计.zip

    系统可能采用了ECharts、Highcharts等图表库,实现消费数据的可视化展示,如饼图、柱状图、折线图等,帮助用户直观理解消费情况。 六、毕业设计价值 此项目作为毕业设计,不仅锻炼了学生的编程能力,还提升了他们...

    基于安卓的家庭理财通Android全套源码-项目实战学习最佳选择

    这个项目是Android平台上的一个实战案例,对于正在学习Android开发或者Java编程的开发者来说,它提供了一个宝贵的实践机会。 【主要功能模块】 1. **登录/注册**:用户可以通过手机号或邮箱进行注册,设置密码,并...

    delphi家庭财务管理系统.zip

    总的来说,《Delphi家庭财务管理系统》是一个结合了Delphi技术与财务管理理念的实用项目,对于学习Delphi编程的学生来说,这是一个很好的实践案例,有助于提升他们的编程技能和项目经验。通过分析和理解这样的系统,...

    delphi家庭财务管理系统.rar

    4. 报表分析:生成图表展示收支情况,比如饼图、柱状图等,帮助用户直观理解财务状况。 5. 账户管理:管理多个账户,如储蓄账户、信用卡账户等,跟踪不同账户的余额。 6. 提醒功能:设置定期提醒,如还款日、账单日...

    vb家庭理财管理系统设计(论文+源代码).zip

    VB,全称为Visual Basic,是微软公司开发的一种可视化的编程工具,以其简单易学、功能强大而深受开发者喜爱。在本系统的设计中,VB起到了核心作用,为系统的用户界面和逻辑控制提供了基础。 该系统的主要功能可能...

    Money-Manager:金钱追踪小程序

    "Money-Manager:金钱追踪小程序"是一个基于Java技术开发的应用,用于个人财务管理,帮助用户记录和分析他们的支出。这个小程序采用Java Swing作为...对于想要提升Java应用开发技能的人来说,这是一个很好的实践案例。

    Budget_App-using-python

    标题 "Budget_App-using-python" 暗示我们讨论的是一个使用 Python 编程语言构建的预算应用程序。...此外,这个项目也可以作为一个很好的学习案例,了解如何将 Python 用于软件开发,特别是财务管理和数据分析领域。

Global site tag (gtag.js) - Google Analytics