package com.mm.android.deviceaddmodule.p_cloudconnect; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.graphics.drawable.Animatable; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.mm.android.deviceaddmodule.R; import com.mm.android.deviceaddmodule.base.BaseDevAddFragment; import com.mm.android.deviceaddmodule.contract.CloudConnectConstract; import com.mm.android.deviceaddmodule.helper.DeviceAddHelper; import com.mm.android.deviceaddmodule.helper.PageNavigationHelper; import com.mm.android.deviceaddmodule.mobilecommon.entity.deviceadd.DeviceAddInfo; import com.mm.android.deviceaddmodule.mobilecommon.widget.CircleCountDownView; import com.mm.android.deviceaddmodule.model.DeviceAddModel; import com.mm.android.deviceaddmodule.presenter.CloudConnectPresenter; public abstract class BaseCloudFragment extends BaseDevAddFragment implements CloudConnectConstract.View, CircleCountDownView.OnCountDownFinishListener { CloudConnectConstract.Presenter mPresenter; TextView mTipTxt; CircleCountDownView mCountdown_view; ImageView mProgressImg,mCloudImage1,mCloudImage2; Animatable mCloudAnimation; public abstract void goErrorTipPage(); public abstract void initAction(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_connect_process, container, false); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); DeviceAddHelper.updateTile(DeviceAddHelper.TitleMode.MORE); } protected void initView(View view){ mTipTxt= view.findViewById(R.id.tv_image_show_tip); mProgressImg= view.findViewById(R.id.cloud_progrees_img); mCloudImage1= view.findViewById(R.id.cloud_image1); mCloudImage2= view.findViewById(R.id.cloud_image2); mCountdown_view= view.findViewById(R.id.countdown_view); mCountdown_view.setCountDownListener(this); mCloudAnimation=(Animatable)mProgressImg.getDrawable(); startAnimation(); } protected void initData(){ mPresenter=new CloudConnectPresenter(this); initAction(); } private void startAnimation(){ mCloudAnimation.start(); AnimatorSet animatorSet=new AnimatorSet(); ObjectAnimator cloudImage1Anim=ObjectAnimator.ofFloat(mCloudImage1,"translationX",0f,150f,0f); cloudImage1Anim.setRepeatMode(ValueAnimator.RESTART); cloudImage1Anim.setRepeatCount(ValueAnimator.INFINITE); ObjectAnimator cloudImage2Anim=ObjectAnimator.ofFloat(mCloudImage2,"translationX",0f,150f,0f); cloudImage2Anim.setRepeatMode(ValueAnimator.RESTART); cloudImage2Anim.setRepeatCount(ValueAnimator.INFINITE); animatorSet.play(cloudImage1Anim).with(cloudImage2Anim); animatorSet.setDuration(3000); animatorSet.start(); } @Override public void onDestroyView() { super.onDestroyView(); mCountdown_view.stopCountDown(); if(mCloudAnimation.isRunning()){ mCloudAnimation.stop(); } mPresenter.recyle(); } @Override public void countDownFinished() { mPresenter.recyle(); DeviceAddModel.newInstance().setLoop(false); if(mPresenter.isWifiOfflineConfiMode()){ toast(R.string.add_device_config_failed); completeAction(); mPresenter.stopConnectTiming(); return; } goErrorTipPage(); } @Override public void completeAction() { if(getActivity() != null) getActivity().finish(); } @Override public void goOtherUserBindTipPage() { PageNavigationHelper.gotoErrorTipPage(this, DeviceAddHelper.ErrorCode.DEVICE_BIND_ERROR_BIND_BY_OTHER); } @Override public void goNotSupportBuindTipPage() { PageNavigationHelper.gotoErrorTipPage(this, DeviceAddHelper.ErrorCode.DEVICE_BIND_ERROR_NOT_SUPPORT_TO_BIND); } @Override public void goErrorTipPage(int errorCode) { PageNavigationHelper.gotoErrorTipPage(this, errorCode); } }