一、效果图
第一种:(图片轮换)
第二种:(布局轮换(View轮换))
① ② ③
二、布局文件
主布局
<?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="com.example.myapplication.ViewpagerActivity">
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/view_page_iamges"
>
</android.support.v4.view.ViewPager>
</LinearLayout>
数据源布局:
布局一、
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/b1"
android:text="按钮一"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/b1"
android:id="@+id/b2"
android:layout_toRightOf="@id/b1"
android:text="按钮二"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/b2"
android:text="按钮三"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/b2"
android:layout_toLeftOf="@id/b2"
android:text="按钮四"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/b2"
android:layout_toRightOf="@id/b2"
android:text="按钮五"/>
</RelativeLayout>
布局二、
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="280dp"
android:layout_height="280dp"
android:background="#ff0000"
android:layout_gravity="center"
/>
<TextView
android:layout_width="240dp"
android:layout_height="240dp"
android:background="#00ff00"
android:layout_gravity="center"
/>
<TextView
android:layout_width="200dp"
android:layout_height="200dp"
android:background="#0000ff"
android:layout_gravity="center"
/>
<TextView
android:layout_width="160dp"
android:layout_height="160dp"
android:background="#ffee00"
android:layout_gravity="center"
/>
<TextView
android:layout_width="120dp"
android:layout_height="120dp"
android:background="#00ffe1"
android:layout_gravity="center"
/>
</FrameLayout>
布局三、
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="左上按钮"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="右上按钮"
/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="420dp"
android:gravity="center"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="中间按钮"
android:layout_gravity="center"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="bottom"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="左下按钮"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="右下按钮"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
三、Java代码
package com.example.myapplication;
import android.content.Intent;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.List;
public class ViewpagerActivity extends AppCompatActivity {
//第一种的图片数据源
// private int images[]={R.drawable.cat,R.drawable.bird,R.drawable.fox};
//第二种的图片数据源
private int images[]={R.layout.linear,R.layout.acitivity_rel,R.layout.farme};
private List<View> views=new ArrayList<>();
private ViewPager view_page_iamges;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewpager);
view_page_iamges = (ViewPager) findViewById(R.id.view_page_iamges);
//第一种,实现图片的切换
/* for (int i = 0; i < images.length; i++) {
ImageView iv=new ImageView(this);
iv.setImageResource(images[i]);
views.add(iv);
}*/
//第二种实现布局的切换
for (int i = 0; i < images.length; i++) {
View v=getLayoutInflater().inflate(images[i],null);
views.add(v);
}
view_page_iamges.setAdapter(new myAdapter());
}
class myAdapter extends PagerAdapter{
@Override
public int getCount() {
return views.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;//官方也是这样写的
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View v=views.get(position);
container.addView(v);
return v;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View v=views.get(position);
container.removeView(v);
}
}
}