//在这里有一个底部导航四个页面,现在只显示卡片切换页面
compile 'com.google.code.gson:gson:2.8.1' compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.squareup.retrofit2:retrofit:2.0.1' compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.squareup.okio:okio:1.13.0' compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' compile 'com.squareup.retrofit2:converter-gson:2.0.1' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1' compile 'com.hjm:BottomTabBar:1.1.1' compile 'com.facebook.fresco:fresco:1.5.0' compile 'com.xhb:xbanner:1.3.0' compile 'com.nineoldandroids:library:2.4.0' compile 'com.github.bumptech.glide:glide:3.7.0' compile 'jp.wasabeef:glide-transformations:1.0.6' compile 'org.greenrobot:eventbus:3.1.1' compile 'org.xutils:xutils:3.5.0' compile 'com.android.support:recyclerview-v7:26.0.0-alpha1' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'<android.support.v4.view.ViewPager android:layout_marginTop="20dp" android:id="@+id/viewpager" android:layout_width="450dp" android:layout_height="580dp" android:layout_gravity="center_horizontal" android:background="@drawable/card_bg_def" ></android.support.v4.view.ViewPager> <Button android:id="@+id/buton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="40dp" android:text="换一批" android:textColor="#f2ecec" android:background="#1c641f" />//api包下的两个API类<TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" /> <ImageView android:id="@+id/img" android:layout_width="340dp" android:layout_height="400dp" android:layout_gravity="center_horizontal" /> <TextView android:layout_marginTop="15dp" android:id="@+id/tv_text" android:layout_width="wrap_content" android:layout_height="wrap_content" />public class Api { public static final String URL = "http://api.svipmovie.com/front/"; public static final String catalogId = "402834815584e463015584e539330016"; }public interface ApiService { @POST Observable<MyBean> getDates(@Url String url, @QueryMap Map<String,String> map); } //APPimport android.app.Application; import android.graphics.Bitmap; import com.bawei.lianxi20171209.R; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); initImageLoder(); } /** * 图片加载 */ private void initImageLoder() { DisplayImageOptions options = new DisplayImageOptions.Builder() //.displayer(new RoundedBitmapDisplayer(360))//圆角问题:必须在xml里面指定具体大小 //设置下载的图片是否缓存在SD卡中 .cacheOnDisk(true) //设置下载的图片是否缓存在内存中 .cacheInMemory(true) //设置图片的解码类型 .bitmapConfig(Bitmap.Config.ARGB_8888) //设置图片Uri为空或是错误的时候显示的图片 .showImageForEmptyUri(R.mipmap.ic_launcher) //设置图片加载/解码过程中错误时候显示的图片 .showImageOnFail(R.mipmap.ic_launcher) //设置图片在下载期间显示的图片 .showImageOnLoading(R.mipmap.ic_launcher) //图像将被二次采样的整数倍 .imageScaleType(ImageScaleType.IN_SAMPLE_INT) //设置图片加入缓存前,对bitmap进行设置 // .preProcessor(BitmapProcessor preProcessor) //设置图片在下载前是否重置,复位 .resetViewBeforeLoading(true) //是否设置为圆角,弧度是多少 .displayer(new RoundedBitmapDisplayer(20)) //是否图片加载好后渐入的动画时间 .displayer(new FadeInBitmapDisplayer(100)) //构建完成 .build(); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) .defaultDisplayImageOptions(options) .build(); ImageLoader.getInstance().init(configuration); } }//model包下三个类public interface Imodel { void RequestSuccess(String url, String catalogId, int pnum, Onclick onclick); }public class model implements Imodel{ private ApiService apiService; private Observable<MyBean> dates; @Override public void RequestSuccess(String url, String catalogId, int pnum, final Onclick onclick) { final Map<String, String> map = new HashMap<>(); map.put("catalogId", catalogId); map.put("pnum", pnum + ""); Retrofit retrofit = new Retrofit.Builder() .baseUrl(url) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); apiService = retrofit.create(ApiService.class); dates = apiService.getDates("columns/getVideoList.do", map); dates.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<MyBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(MyBean bean) { List<MyBean.RetBean.ListBean> list = bean.getRet().getList(); onclick.dataSuccess(list); } }); }}public interface Onclick { void dataSuccess(List<MyBean.RetBean.ListBean> list); }//persenter包public class Persenter { Imodel imodel; Iview iview; public Persenter(Iview iview) { this.iview = iview; imodel = new model(); } public void getOk(String url, String catalogId, int pnum) { imodel.RequestSuccess(url, catalogId, pnum, new Onclick() { @Override public void dataSuccess(List<MyBean.RetBean.ListBean> list) { iview.showSuccess(list); } }); } }
//view包public interface Iview { void showSuccess(List<MyBean.RetBean.ListBean> list);}public class ZoomOutPageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.85f; private static final float MIN_ALPHA = 0.5f; public void transformPage(View view, float position) { int pageWidth = view.getWidth(); int pageHeight = view.getHeight(); if (position < -1) { // [-Infinity,-1) 不可见状态 // This page is way off-screen to the left. view.setAlpha(0); //透明度设置为0 } else if (position <= 1) { // [-1,1] 可见状态,设置动画效果 // Modify the default slide transition to shrink the page as well float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); float vertMargin = pageHeight * (1 - scaleFactor) / 2; float horzMargin = pageWidth * (1 - scaleFactor) / 2; if (position < 0) { view.setTranslationX(horzMargin - vertMargin / 2); } else { view.setTranslationX(-horzMargin + vertMargin / 2); } // Scale the page down (between MIN_SCALE and 1) view.setScaleX(scaleFactor); view.setScaleY(scaleFactor); // Fade the page relative to its size. view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA)); } else { // (1,+Infinity] 不可见状态 // This page is way off-screen to the right. view.setAlpha(0); } } }
//主页面public class ZixuanFragment extends Fragment implements Iview{ private ViewPager viewPager; private Button button; private Persenter presenter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view=View.inflate(getContext(), R.layout.home_item,null); viewPager = (ViewPager)view.findViewById(R.id.viewpager); button = (Button) view.findViewById(R.id.buton); presenter = new Persenter(this); presenter.getOk(Api.URL, Api.catalogId, 1); viewPager.setPageTransformer(true, new ZoomOutPageTransformer()); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { presenter.getOk(Api.URL, Api.catalogId, getpage()); } }); return view; } @Override public void showSuccess(final List<MyBean.RetBean.ListBean> list) { viewPager.setAdapter(new PagerAdapter() { @Override public int getCount() { return list.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { MyBean.RetBean.ListBean lb = list.get(position); View v = View.inflate(getActivity(), R.layout.item, null); ImageView img = (ImageView) v.findViewById(R.id.img); TextView title = (TextView) v.findViewById(R.id.tv_title); TextView tvt = (TextView) v.findViewById(R.id.tv_text); title.setText(lb.getTitle()); tvt.setText(lb.getDescription()); ImageLoader.getInstance().displayImage(lb.getPic(), img); container.addView(v); return v; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }); } private int getpage() { int max = 108; int min = 1; Random random = new Random(); int s = random.nextInt(max) % (max - min + 1) + min; return s; } }