package au.id.teda.broadband.usage.fragments; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.ViewGroup.LayoutParams; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.widget.LinearLayout; import android.widget.TextView; import au.id.teda.broadband.usage.R; import au.id.teda.broadband.usage.chart.CustomDonughtChartStacked; public class UsageDoughnutFragment extends BaseFragment { // BaseFragment used to load the standard methods // View inflated by fragment private View mFragmentView; /** * Called 3rd in the fragment life cycle */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Set fragment layout to be inflated mFragmentView = inflater.inflate(R.layout.fragment_usage_doughnut, container, false); return mFragmentView; } @Override protected void loadFragmentView() { loadDonughtChart(); loadChartText(); } private void loadDonughtChart() { // Set layout container for chart final LinearLayout mContainerLayout = (LinearLayout) mFragmentView.findViewById(R.id.fragment_usage_donught); final TextView mLayoutUsed = (TextView) mFragmentView.findViewById(R.id.fragment_usage_donught_size); // Listen for view being inflated ViewTreeObserver mViewTreeObserver = mContainerLayout.getViewTreeObserver(); mViewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // Get layout parameters for container LayoutParams parms = mContainerLayout.getLayoutParams(); // Get reference to layout view View layout = getView(); // Get height of layout int iHeight = layout.getHeight(); // Get width of layout int iWidth = layout.getWidth(); if (mLayoutHelper.isLayout_w1024dp(mLayoutUsed) || mLayoutHelper.isLayout_w800dp(mLayoutUsed)){ // Set wdith equal to height parms.width = iHeight; // Add padding to center chart int padding = ((iWidth - iHeight) / 2); layout.setPadding(padding, 0, padding, 0); } else { // Set height equal to width parms.height = iWidth; } } }); // Initialize chart class CustomDonughtChartStacked mChart = new CustomDonughtChartStacked(mContext); mChart.setDays(mAccountStatus.getDaysSoFar(), mAccountStatus.getDaysToGo()); mChart.setPeakUsage(mAccountStatus.getPeakDataUsed(), mAccountInfo.getPeakQuota()); mChart.setOffpeakUsage(mAccountStatus.getOffpeakDataUsed(), mAccountInfo.getOffpeakQuota()); // Set layout parameters for chart view LayoutParams mChartViewParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); // Add chart view to layout view mContainerLayout.removeAllViews(); mContainerLayout.addView(mChart, mChartViewParams); } private void loadChartText() { // Set layout container for chart final LinearLayout mContainerLayout = (LinearLayout) mFragmentView.findViewById(R.id.fragment_usage_donught_text_container); // Listen for view being inflated ViewTreeObserver mViewTreeObserver = mContainerLayout.getViewTreeObserver(); mViewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // Get layout parameters LayoutParams parms = mContainerLayout.getLayoutParams(); // Set height equal to parent layout width parms.height = getView().getWidth(); } }); // Set TextView references final TextView mPeakPercent = (TextView) mFragmentView.findViewById(R.id.fragment_usage_donught_peak_percent); final TextView mOffpeakPercent = (TextView) mFragmentView.findViewById(R.id.fragment_usage_donught_offpeak_percent); // Set TextView values mPeakPercent.setText(mAccountStatus.getPeakDataUsedPercentString()); mOffpeakPercent.setText(mAccountStatus.getOffpeakDataUsedPercentString()); } }