网络加载回来之后,控件的样式不对。

发布于 2022-09-04 21:56:44 字数 5143 浏览 19 评论 0

我设置的viewpager中间的为大,两边的为小。可是,第一次网络请求回来的,中间的和右边的一样大。
我已经放到子线程了,还是不行。望大神解答。。。

public class ImpressCardFragment extends Fragment {


    @BindView(R.id.vp_pager)
    ViewPager mPager;
    private List<Impress.ObjectBean.DataBean> mList;
    private Unbinder bind;
    private List<PageFragment> fragmentList;
    private ImpressCardAdapter cartAdapter;
    private ACache aCache;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_impress_card, container, false);
        bind = ButterKnife.bind(this, rootView);
        transformerPager();
        aCache = ACache.get(getContext());
        mList = new ArrayList<>();
        DisplayMetrics metric = new DisplayMetrics();
        getActivity().getWindowManager().getDefaultDisplay().getMetrics(metric);
        int width = metric.widthPixels;     // 屏幕宽度(像素)
        int height = metric.heightPixels;   // 屏幕高度(像素)
        float density = metric.density;      // 屏幕密度(0.75 / 1.0 / 1.5)
        int densityDpi = metric.densityDpi;
        mPager.setOffscreenPageLimit(4);
        mPager.setPageMargin(-width / 4);
        fragmentList = new ArrayList<>();
        cartAdapter = new ImpressCardAdapter(getChildFragmentManager(), getContext(), fragmentList);
        mPager.setAdapter(cartAdapter);
        return rootView;
    }

    @Override
    public void onResume() {
        super.onResume();
        //缓存
        Impress impress = (Impress) aCache.getAsObject("impressCart");
//        if (impress == null) {
//            getData();
//        } else {
//
//            mList.clear();
//            mList.addAll(impress.object.get(0).data);
//            fragmentList.clear();
//            for (int i = 0; i < mList.size(); i++) {
//                fragmentList.add(new PageFragment(mList.get(i)));
//            }
//            cartAdapter.notifyDataSetChanged();
//        }
        handler.post(mRunnable);
    }

    /**
     * viewPager的转换效果
     */
    void transformerPager() {
        mPager.setPageTransformer(true, new ViewPager.PageTransformer() {
            public float position;

            public void transformPage(View page, float position) {
                this.position = position;
                if (position < -1) {
                    // This page is way off-screen to the left.
                } else if (position <= 1) {
                    if (position < 0) {
                        if (position < -0.4f)
                            position = -0.4f;
                        page.setScaleY(1.4f + position);
                        page.setScaleX(1.4f + position);
                    } else {
                        if (position > 0.4)
                            position = 0.4f;
                        page.setScaleY(1.4f - position);
                        page.setScaleX(1.4f - position);
                    }
                } else {
                    // This page is way off-screen to the right.
                }
            }
        });
    }

    @Override
    public void onDestroyView() {
        bind.unbind();
        handler.removeCallbacks(mRunnable);
        super.onDestroyView();
    }

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 1:
                    Impress body = (Impress) msg.obj;
                    aCache.put("impressCart", body, 2);
                    mList.clear();
                    mList.addAll(body.object.get(0).data);
                    fragmentList.clear();
                    for (int i = 0; i < mList.size(); i++) {
                        fragmentList.add(new PageFragment(mList.get(i)));
                    }
                    cartAdapter.notifyDataSetChanged();
                    break;
            }

        }
    };
  private Runnable mRunnable = new Runnable() {
        @Override
        public void run() {
            HttpClient.createRequest(HttpTask.class).impressIndex(String.valueOf(0), String.valueOf(10)).enqueue(new Callback<Impress>() {

                @Override
                public void onResponse(Call<Impress> call, Response<Impress> response) {
                    if (response.body().code.equals(Constants.REQUESTID_SUCCESS)) {
                        Impress body = response.body();
                        Message message = handler.obtainMessage(1);
                        message.obj = body;
                        handler.sendMessage(message);
                    }
                }

                @Override
                public void onFailure(Call<Impress> call, Throwable t) {
                    Toast.makeText(getContext(), "服务器故障", Toast.LENGTH_SHORT).show();
                }
            });
        }
    };
}

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文