wjc
2024-12-04 23d38b1e7374c20698702b6ab3feb1e92e82c4d3
app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java
@@ -4,6 +4,8 @@
import static com.hdl.photovoltaic.ui.home.aachart.CustomStyleChartComposer.configureColorfulColumnChart;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.text.SpannableString;
import android.text.Spanned;
@@ -13,6 +15,7 @@
import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
@@ -57,6 +60,7 @@
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.lang.ref.WeakReference;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@@ -403,7 +407,7 @@
    /**
     * 图表加载
     */
    private void setUpAAChartView() {
    private void setUpAAChartView(boolean needDelay) {
        aaChartView = viewBinding.autoSizeMyAAChart;
        aaChartView.callBack = this;
        if (TimeType.day.equals(timeType)) {
@@ -411,8 +415,47 @@
        } else if (TimeType.month.equals(timeType) || TimeType.year.equals(timeType) || TimeType.all.equals(timeType)) {
            aaChartModel = configureColorfulColumnChart(getString(R.string.generation), fieldNames, fieldValues);
        }
        aaChartView.aa_drawChartWithChartOptions(aaChartModel.aa_toAAOptions());
        if(needDelay) {
            viewBinding.autoSizeMyAAChart.setX(10000);//直接打开有闪屏,在不显示的地方先显示,再移动到正常的位置。TODO 后续找到根源问题后去掉这个用法
            aaChartView.aa_drawChartWithChartOptions(aaChartModel.aa_toAAOptions());
            mHandler.sendEmptyMessageDelayed(100,1000);
        }
        else{
            aaChartView.aa_drawChartWithChartOptions(aaChartModel.aa_toAAOptions());
        }
    }
    FHandler mHandler=new FHandler(this);
    private static class FHandler extends Handler{
        //定义弱引用实例
        private WeakReference<HomePageFragment> reference;
        //在构造方法中传入需要持有的fragment实例
        public FHandler(HomePageFragment fragment) {
            reference = new WeakReference<HomePageFragment>(fragment); }
        //通过复写handlerMessage()从而决定如何进行更新UI操作
        @Override
        public void handleMessage(Message msg) {
            //省略代码
            switch (msg.what){
                case 100:
                    if(reference.get()!=null) {
                        reference.get().viewBinding.autoSizeMyAAChart.setX(0);//移动到正确的位置
                    }
                    break;
            }
        }
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        mHandler.removeCallbacksAndMessages(null);
    }
    private void initView() {
@@ -447,7 +490,7 @@
        viewBinding.v2.setVisibility(View.VISIBLE);
        viewBinding.v3.setVisibility(View.VISIBLE);
        viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE);
        setUpAAChartView();//图表加载
        setUpAAChartView(true);//图表加载
    }
@@ -589,7 +632,7 @@
                        }
                        fieldNames = keys;
                        fieldValues = values;
                        setUpAAChartView();
                        setUpAAChartView(false);
                    }
                });
@@ -625,4 +668,4 @@
    }
}
}