ViewPager
以下图片就是Viewpager滑动的效果
// android:clipChildren="false"所有空间都有的属性设置内容是否受控件大小显示
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Day14.Main5Activity"
android:clipChildren="false"
>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="100dp"
android:clipChildren="false"
android:overScrollMode="never"
android:id="@+id/vp"
></android.support.v4.view.ViewPager>
</RelativeLayout>
package com.example.day12work.Day14;
import android.graphics.BitmapFactory;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import com.example.day12work.R;
import java.util.ArrayList;
public class Main5Activity extends AppCompatActivity {
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5);
viewPager=findViewById(R.id.vp);
ArrayList<ImageView> arrayList=new ArrayList<>();
ImageView imageView=new ImageView(this);
ImageView imageView1=new ImageView(this);
ImageView imageView2=new ImageView(this);
imageView.setImageBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.shuruima));
imageView1.setImageBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.debangercheng));
imageView2.setImageBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.demaxiya));
arrayList.add(imageView);
arrayList.add(imageView1);
arrayList.add(imageView2);
MyPager myPager = new MyPager(arrayList);
viewPager.setPageMargin(60);
viewPager.setAdapter(myPager);
//设置自定义滑动效果
viewPager.setPageTransformer(false,new Myhuadong());
}
}
package com.example.day12work.Day14;
import android.support.annotation.NonNull;
import android.support.v4.view.ViewPager;
import android.view.View;
public class Myhuadong implements ViewPager.PageTransformer {
@Override
public void transformPage(@NonNull View view, float v) {
//逻辑判断什么时候是右滑动什么是左滑动
if(v<-1){
v=-1;
}else if(v>1){
v=1;
}
float posittion = v<0? 1+v: 1-v;
//判断中间的图片来给 左右两个图片设置模糊度
float flag=0.0f;
if(v<=flag){
view.setAlpha(1+v);
}else if(v>=flag && v<=1){
view.setAlpha(1-v);
}
//给中间和两边图片设置大小 来实现滑动的时候中面大 傍边小的效果
if(posittion==0){
view.setScaleX(0.5f);
view.setScaleY(0.5f);
}else{
view.setScaleX(1.0f);
view.setScaleY(1.0f);
}
}
}
package com.example.day12work.Day14;
import android.media.Image;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.example.day12work.R;
import java.util.ArrayList;
public class MyPager extends PagerAdapter {
ArrayList<ImageView> arrayList;
public MyPager(ArrayList<ImageView> arrayList) {
this.arrayList = arrayList;
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view==o;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
container.addView(arrayList.get(position));
return arrayList.get(position);
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
Banner.
需要导一个依赖
implementation ‘com.youth.banner:banner:1.4.10’
//布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Day14.Banner123">
//直接声明控件
<com.youth.banner.Banner
android:id="@+id/ban"
android:layout_width="match_parent"
android:layout_height="150dp">
</com.youth.banner.Banner>
</LinearLayout>
package com.example.day12work.Day14;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import com.example.day12work.R;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.Transformer;
import com.youth.banner.loader.ImageLoader;
import java.util.ArrayList;
public class Banner123 extends AppCompatActivity {
Banner banner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_banner);
banner=findViewById(R.id.ban);
ArrayList<Integer> arrayList=new ArrayList<>();
arrayList.add(R.drawable.debangercheng);
arrayList.add(R.drawable.nuokesasi);
arrayList.add(R.drawable.demaxiya);
ArrayList<String> arrayList1=new ArrayList<>();
arrayList1.add("德邦尔城");
arrayList1.add("诺克萨斯");
arrayList1.add("德玛西亚");
banner.setImages(arrayList);
banner.setImageLoader(new ImagerBanners());
//设置文字 需要是集合
banner.setBannerTitles(arrayList1);
//设置每几秒轮播一次
banner.setDelayTime(1000);
//是否自动轮播 一般和上面的这个属性连用
banner.isAutoPlay(true);
//设置显示位置
banner.setIndicatorGravity(BannerConfig.CENTER);
//设置动画样式用Transformer.常量 有很多
banner.setBannerAnimation(Transformer.DepthPage);
//也是设置样式
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
//启动
banner.start();
}
}
//加载器
class ImagerBanners extends ImageLoader{
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
imageView.setImageResource(Integer.parseInt(path.toString()) );
}
}