Android圖表庫MPAndroidChart(十四)——在ListView種使用相同的圖表

來源:互聯網
上載者:User

標籤:code   javascrip   chart   listview   false   component   sample   shadow   context   

Android圖表庫MPAndroidChart(十四)——在ListView種使用相同的圖表

各位好久不見,最近挺忙的,所有部落格更新的比較少,這裡今天說個比較簡單的圖表,那就是在ListView中使用相同的表徵圖,因為我們在下篇會講解使用不同的圖表,相同的圖表還是比較簡單的,我們來看下

具體怎麼去實現呢,這裡我們先寫點鋪墊,比如我們需要一個基類的Activity

ViewPagerBaseActivity
package com.liuguilin.mpandroidchartsample.activity;/* *  項目名:  MPAndroidChartSample  *  包名:    com.liuguilin.mpandroidchartsample.activity *  檔案名稱:   ViewPagerBaseActivity *  建立者:   LGL *  建立時間:  2016/12/13 16:28 *  描述:    TODO */import android.os.Bundle;import android.support.v4.app.FragmentActivity;import com.liuguilin.mpandroidchartsample.R;public abstract class ViewPagerBaseActivity extends FragmentActivity {    protected String[] mMonths = new String[] {            "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"    };    protected String[] mParties = new String[] {            "Party A", "Party B", "Party C", "Party D", "Party E", "Party F", "Party G", "Party H",            "Party I", "Party J", "Party K", "Party L", "Party M", "Party N", "Party O", "Party P",            "Party Q", "Party R", "Party S", "Party T", "Party U", "Party V", "Party W", "Party X",            "Party Y", "Party Z"    };    @Override    protected void onCreate( Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    protected float getRandom(float range, float startsfrom) {        return (float) (Math.random() * range) + startsfrom;    }    @Override    public void onBackPressed() {        super.onBackPressed();        overridePendingTransition(R.anim.move_left_in_activity, R.anim.move_right_out_activity);    }}

這個基類只是作為我們使用很多重複的東西包括年月日的換算,可以不用理會,我們本篇就只需要用到一個方法就好了,這裡寫了兩個動畫

move_left_in_activity
<?xml version="1.0" encoding="utf-8"?><translate       xmlns:android="http://schemas.android.com/apk/res/android"      android:duration="300"      android:fromXDelta="-100%p"       android:toXDelta="0%p"></translate>
move_right_out_activity
<?xml version="1.0" encoding="utf-8"?><translate       xmlns:android="http://schemas.android.com/apk/res/android"      android:duration="300"      android:fromXDelta="0%p"       android:toXDelta="100%p"></translate>

就是簡單的平移動畫,好的,我們正式開始實現了,在我們的xml中,我們只需要實現一個ListView就行

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

正在的邏輯其實還是在適配器的getView裡

ListViewBarChartActivity
package com.liuguilin.mpandroidchartsample.activity;/* *  項目名:  MPAndroidChartSample  *  包名:    com.liuguilin.mpandroidchartsample.activity *  檔案名稱:   ListViewBarChartActivity *  建立者:   LGL *  建立時間:  2016/12/2 13:41 *  描述:    在ListView中使用相同圖表 */import android.content.Context;import android.graphics.Color;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ListView;import com.github.mikephil.charting.charts.BarChart;import com.github.mikephil.charting.components.XAxis;import com.github.mikephil.charting.components.YAxis;import com.github.mikephil.charting.data.BarData;import com.github.mikephil.charting.data.BarDataSet;import com.github.mikephil.charting.data.BarEntry;import com.github.mikephil.charting.interfaces.datasets.IBarDataSet;import com.github.mikephil.charting.utils.ColorTemplate;import com.liuguilin.mpandroidchartsample.R;import java.util.ArrayList;import java.util.List;public class ListViewBarChartActivity extends ViewPagerBaseActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_listview_char);        initView();    }    private void initView() {        ListView lv = (ListView) findViewById(R.id.mListView);        ArrayList<BarData> list = new ArrayList<BarData>();        // 20 items        for (int i = 0; i < 20; i++) {            list.add(generateData(i + 1));        }        ChartDataAdapter cda = new ChartDataAdapter(getApplicationContext(), list);        lv.setAdapter(cda);    }    private class ChartDataAdapter extends ArrayAdapter<BarData> {        public ChartDataAdapter(Context context, List<BarData> objects) {            super(context, 0, objects);        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            BarData data = getItem(position);            ViewHolder holder = null;            if (convertView == null) {                holder = new ViewHolder();                convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item_barchart, null);                holder.chart = (BarChart) convertView.findViewById(R.id.chart);                convertView.setTag(holder);            } else {                holder = (ViewHolder) convertView.getTag();            }            data.setValueTextColor(Color.BLACK);            holder.chart.getDescription().setEnabled(false);            holder.chart.setDrawGridBackground(false);            XAxis xAxis = holder.chart.getXAxis();            xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);            xAxis.setDrawGridLines(false);            YAxis leftAxis = holder.chart.getAxisLeft();            leftAxis.setLabelCount(5, false);            leftAxis.setSpaceTop(15f);            YAxis rightAxis = holder.chart.getAxisRight();            rightAxis.setLabelCount(5, false);            rightAxis.setSpaceTop(15f);            holder.chart.setData(data);            holder.chart.setFitBars(true);            holder.chart.animateY(700);            return convertView;        }        private class ViewHolder {            BarChart chart;        }    }    private BarData generateData(int cnt) {        ArrayList<BarEntry> entries = new ArrayList<BarEntry>();        for (int i = 0; i < 12; i++) {            entries.add(new BarEntry(i, (float) (Math.random() * 70) + 30));        }        BarDataSet d = new BarDataSet(entries, "New DataSet " + cnt);        d.setColors(ColorTemplate.VORDIPLOM_COLORS);        d.setBarShadowColor(Color.rgb(203, 203, 203));        ArrayList<IBarDataSet> sets = new ArrayList<IBarDataSet>();        sets.add(d);        BarData cd = new BarData(sets);        cd.setBarWidth(0.9f);        return cd;    }}

可以看到,這裡我們只是實現了一個listview,在適配器裡面寫上我資料的實現,然後隨機20個item就OK了,還是相當的簡單的,對吧,這隻是一種思路,可以這樣理解,為我們下篇做鋪墊,我們下篇講述的是不同的圖表,這樣才有搞頭

Sample:下篇提供

Android圖表庫MPAndroidChart(十四)——在ListView種使用相同的圖表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.