|
@@ -1,8 +1,15 @@
|
|
|
package com.ynstkz.shitu.android.fragment;
|
|
|
|
|
|
+import android.annotation.SuppressLint;
|
|
|
import android.content.Intent;
|
|
|
import android.os.Bundle;
|
|
|
+import android.os.Handler;
|
|
|
+import android.os.Message;
|
|
|
+import android.support.v4.view.ViewCompat;
|
|
|
import android.support.v4.view.ViewPager;
|
|
|
+import android.util.DisplayMetrics;
|
|
|
+import android.util.Log;
|
|
|
+import android.util.TypedValue;
|
|
|
import android.view.LayoutInflater;
|
|
|
import android.view.View;
|
|
|
import android.view.ViewGroup;
|
|
@@ -11,19 +18,28 @@ import android.widget.LinearLayout;
|
|
|
import android.widget.ScrollView;
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
+import com.common.library.okhttp.callback.Callback;
|
|
|
import com.common.library.pulltorefresh.PullToRefreshBase;
|
|
|
import com.common.library.pulltorefresh.PullToRefreshScrollView;
|
|
|
+import com.google.gson.Gson;
|
|
|
import com.ynstkz.shitu.android.R;
|
|
|
import com.ynstkz.shitu.android.activity.LocationSelectActivity;
|
|
|
+import com.ynstkz.shitu.android.adapter.HomeBannerAdapter;
|
|
|
import com.ynstkz.shitu.android.base.BaseFragment;
|
|
|
+import com.ynstkz.shitu.android.bean.HomeBannerBean;
|
|
|
+import com.ynstkz.shitu.android.data.RequestGroup;
|
|
|
import com.ynstkz.shitu.android.event.LocationChangedEvent;
|
|
|
|
|
|
import org.greenrobot.eventbus.EventBus;
|
|
|
import org.greenrobot.eventbus.Subscribe;
|
|
|
import org.greenrobot.eventbus.ThreadMode;
|
|
|
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
import butterknife.Bind;
|
|
|
import butterknife.ButterKnife;
|
|
|
+import okhttp3.Call;
|
|
|
+import okhttp3.Response;
|
|
|
|
|
|
/**
|
|
|
* 作者:fuchangle on 2018/1/29 11:38
|
|
@@ -42,26 +58,31 @@ public class HomeFragment extends BaseFragment implements PullToRefreshBase.OnRe
|
|
|
@Bind(R.id.ll_location_select)
|
|
|
LinearLayout llLocationSelect;
|
|
|
|
|
|
+ //banner
|
|
|
+ private final int BANNER_DELAYED = 3000;
|
|
|
+ private List<HomeBannerBean.DataBean> listBanner;
|
|
|
+ private int bannerIndex;
|
|
|
+
|
|
|
@Override
|
|
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
|
|
View view = inflater.inflate(R.layout.fm_home, null);
|
|
|
ButterKnife.bind(this, view);
|
|
|
initView();
|
|
|
+ initData();
|
|
|
setListener();
|
|
|
return view;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public void onDestroyView() {
|
|
|
- super.onDestroyView();
|
|
|
- ButterKnife.unbind(this);
|
|
|
- }
|
|
|
-
|
|
|
private void initView() {
|
|
|
EventBus.getDefault().register(this);
|
|
|
svMain.setOnRefreshListener(this);
|
|
|
}
|
|
|
|
|
|
+ private void initData(){
|
|
|
+ //获取banner
|
|
|
+ getBannerData();
|
|
|
+ }
|
|
|
+
|
|
|
private void setListener() {
|
|
|
|
|
|
viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
|
@@ -72,7 +93,7 @@ public class HomeFragment extends BaseFragment implements PullToRefreshBase.OnRe
|
|
|
|
|
|
@Override
|
|
|
public void onPageSelected(int position) {
|
|
|
-
|
|
|
+ bannerIndex = position;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -90,6 +111,111 @@ public class HomeFragment extends BaseFragment implements PullToRefreshBase.OnRe
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取banner数据
|
|
|
+ */
|
|
|
+ private void getBannerData(){
|
|
|
+
|
|
|
+ RequestGroup.getBannerList(new Callback() {
|
|
|
+ @Override
|
|
|
+ public Object parseNetworkResponse(Response response, int id) throws Exception {
|
|
|
+ return new Gson().fromJson(response.body().string(), HomeBannerBean.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onError(Call call, Exception e, int id) {
|
|
|
+ showToast(getActivity(), getString(R.string.error_msg));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onResponse(Object response, int id) {
|
|
|
+ HomeBannerBean bannerBean = (HomeBannerBean)response;
|
|
|
+ if(bannerBean != null){
|
|
|
+ if("200".equals(bannerBean.getCode())){
|
|
|
+ if(bannerBean.getData() != null){
|
|
|
+ List<HomeBannerBean.DataBean> listData = bannerBean.getData();
|
|
|
+ listBanner = listData;
|
|
|
+ initBannerView();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ showToast(getActivity(), bannerBean.getMsg());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 初始化Banner数据
|
|
|
+ */
|
|
|
+ private void initBannerView(){
|
|
|
+ if(listBanner == null || listBanner.size() == 0){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ DisplayMetrics metrics = new DisplayMetrics();
|
|
|
+ getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
|
|
|
+ viewpager.setPageMargin((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 25, metrics));
|
|
|
+ viewpager.setPageTransformer(true, new MyPageTransform());
|
|
|
+ viewpager.setOffscreenPageLimit(listBanner.size());
|
|
|
+
|
|
|
+ HomeBannerAdapter homeBannerAdapter = new HomeBannerAdapter(getActivity(), listBanner);
|
|
|
+ viewpager.setAdapter(homeBannerAdapter);
|
|
|
+ bannerIndex = 0;
|
|
|
+ viewpager.setCurrentItem(bannerIndex);
|
|
|
+ handler.sendEmptyMessageDelayed(10, BANNER_DELAYED);
|
|
|
+ }
|
|
|
+
|
|
|
+ class MyPageTransform implements ViewPager.PageTransformer {
|
|
|
+
|
|
|
+ final float SCALE_MAX = 0.8f;
|
|
|
+ final float ALPHA_MAX = 0.5f;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void transformPage(View page, float position) {
|
|
|
+ if ((int) position < -1 || (int) position > 1) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ float scale = (position < 0)
|
|
|
+ ? ((1 - SCALE_MAX) * position + 1)
|
|
|
+ : ((SCALE_MAX - 1) * position + 1);
|
|
|
+ float alpha = (position < 0)
|
|
|
+ ? ((1 - ALPHA_MAX) * position + 1)
|
|
|
+ : ((ALPHA_MAX - 1) * position + 1);
|
|
|
+ if (position < 0) {
|
|
|
+ ViewCompat.setPivotX(page, page.getWidth());
|
|
|
+ ViewCompat.setPivotY(page, page.getHeight() / 2);
|
|
|
+ } else {
|
|
|
+ ViewCompat.setPivotX(page, 0);
|
|
|
+ ViewCompat.setPivotY(page, page.getHeight() / 2);
|
|
|
+ }
|
|
|
+ Log.d("error", "position: " + position + ",scale:" + scale);
|
|
|
+
|
|
|
+ ViewCompat.setScaleX(page, scale);
|
|
|
+ ViewCompat.setScaleY(page, scale);
|
|
|
+ ViewCompat.setAlpha(page, Math.abs(alpha));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @SuppressLint("HandlerLeak")
|
|
|
+ Handler handler = new Handler(){
|
|
|
+ @Override
|
|
|
+ public void handleMessage(Message msg) {
|
|
|
+ switch (msg.what){
|
|
|
+ case 10:
|
|
|
+ bannerIndex ++;
|
|
|
+ if(bannerIndex < listBanner.size()){
|
|
|
+ viewpager.setCurrentItem(bannerIndex);
|
|
|
+ } else {
|
|
|
+ viewpager.setCurrentItem(0);
|
|
|
+ bannerIndex = 0;
|
|
|
+ }
|
|
|
+ handler.sendEmptyMessageDelayed(10, BANNER_DELAYED);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
|
|
public void onMessageEvent(LocationChangedEvent event) {
|
|
|
tvLocation.setText(event.getAmapLocation().getDistrict());
|
|
@@ -113,8 +239,9 @@ public class HomeFragment extends BaseFragment implements PullToRefreshBase.OnRe
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void onDestroy() {
|
|
|
- super.onDestroy();
|
|
|
+ public void onDestroyView() {
|
|
|
+ super.onDestroyView();
|
|
|
+ ButterKnife.unbind(this);
|
|
|
EventBus.getDefault().unregister(this);
|
|
|
}
|
|
|
}
|