饼图账单案例开发

视频网址: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这个整理代码的快捷键。

 

 

猜你喜欢

转载自dingfan.iteye.com/blog/2386329
今日推荐