我設定的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();
}
});
}
};
}
#
參考這個函式庫:https://github.com/hongyangAn...