android 动画懒加载,请教一个关于Fragment结合ViewPager懒加载,加载过渡动画统一的问题,我这样写有什么问题或者可以进一步优化吗?...

比如在LazyFragment里面mProgressBar.setVisibility(View.GONE);这个加载进度放在这里设置隐藏是否合适?总觉得进度圈消失得太快了.有更优的解决方法吗?下面是效果和LazyFragment,BaseFragment代码和BaseFragment的布局:

1.效果(加载中后加载成功后):

bVbtFft?w=1080&h=2160

bVbtFfu?w=1080&h=2160

2.BaseFragment布局:

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/toolbar"

android:background="#33ff0000"

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:id="@+id/iv_back"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:paddingTop="20dp"

android:paddingBottom="20dp"

android:paddingRight="20dp"

android:paddingLeft="10dp" />

android:id="@+id/tv_back"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_toRightOf="@id/iv_back"

android:textSize="15sp" />

android:id="@+id/tv_title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:textColor="#FF333333"

android:text="基类"

android:textSize="20sp" />

android:id="@+id/iv_title"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

android:id="@+id/tv_more"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:layout_gravity="end"

android:padding="16dp"

android:textSize="15sp" />

android:id="@+id/iv_more"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="end"

android:padding="16dp" />

android:id="@+id/content_container"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/rl_progress"

android:background="#ffffff"

android:visibility="gone"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_centerInParent="true"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

3.BaseFragment代码:

public abstract class BaseFragment extends Fragment {

private View rootView;

protected FrameLayout frameLayout;

protected TextView mTvTitle;

protected TextView mTvMore;

protected ImageView mIvBack;

protected ImageView mIvTitle;

protected ImageView mIvMore;

protected Toolbar mToolbar;

protected RelativeLayout mProgressBar;

private Unbinder unbinder;

private static final String TAG = "BaseFragment";

@Nullable

@Override

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

if (rootView != null) return rootView; //初始化布局后就不再重复加载

rootView = inflater.inflate(R.layout.fragment_base, container, false);

mProgressBar=rootView.findViewById(R.id.rl_progress);

mProgressBar.setVisibility(View.VISIBLE);

frameLayout = rootView.findViewById(R.id.content_container);

mToolbar = rootView.findViewById(R.id.toolbar);

mTvTitle = rootView.findViewById(R.id.tv_title);

mTvMore = rootView.findViewById(R.id.tv_more);

mIvBack = rootView.findViewById(R.id.iv_back);

mIvTitle = rootView.findViewById(R.id.iv_title);

mIvMore = rootView.findViewById(R.id.iv_more);

View view = View.inflate(getActivity(), getLayout(), null);

frameLayout.addView(view);

unbinder = ButterKnife.bind(this, view);

initView(savedInstanceState);

return rootView;

}

/**

* 绑定布局文件

*/

protected abstract int getLayout();

/**

* 初始化布局,但是不加载数据

*/

protected abstract void initView(Bundle savedInstanceState);

@Override

public void onDestroy() {

super.onDestroy();

if (unbinder != null) {

unbinder.unbind();

}

}

}

4.懒加载fragment代码:

public abstract class LazyFragment extends BaseFragment {

protected boolean isViewInitiated; //是否初始化过布局

protected boolean isVisibleToUser; //当前界面是否可见

protected boolean isDataInitiated; //是否加载过数据

private static final String TAG = "LazyFragment";

@Override

public void onActivityCreated(@Nullable Bundle savedInstanceState) {

super.onActivityCreated(savedInstanceState);

isViewInitiated=true;

prepareFetchData();

}

@Override

public void setUserVisibleHint(boolean isVisibleToUser) {

super.setUserVisibleHint(isVisibleToUser);

this.isVisibleToUser = isVisibleToUser;

if (isVisibleToUser) {

prepareFetchData();

}

}

/**

* 懒加载

*/

public abstract void fetchData();

public void prepareFetchData() {

prepareFetchData(false);

}

/**

* 判断懒加载条件,在这里访问服务器获取然后设置数据

*/

public void prepareFetchData(boolean forceUpdate) {

if (isVisibleToUser && isViewInitiated && (!isDataInitiated || forceUpdate)) {

mProgressBar.setVisibility(View.GONE); //隐藏加载进度

fetchData();

isDataInitiated = true;

}

}

@Override

public void onDetach() {

super.onDetach();

isDataInitiated = false;

}

}

5.具体使用类:

public class FragmentA extends LazyFragment {

@BindView(R.id.tv_a)

TextView mTextView;

@Override

protected void initView( Bundle savedInstanceState) {

mTextView.setText("11111111111111111");

}

@Override

protected int getLayout() {

return R.layout.fragment_a;

}

@Override

public void fetchData() {

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值