介绍
ViewPage主要是实现左右切换当前的view,实现滑动切换的效果。
实现代码
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 渲染布局
LayoutInflater layoutInflater = getLayoutInflater().from(this);
View view = layoutInflater.inflate(R.layout.unread_layout,null);
View view2 = layoutInflater.inflate(R.layout.read_layout,null);
View view3 = layoutInflater.inflate(R.layout.read_layout,null);
List<View> viewList = new ArrayList<>();
viewList.add(view);
viewList.add(view2);
viewList.add(view3);
ViewPager viewPager = findViewById(R.id.view_page1);
MyAdapter myAdapter = new MyAdapter(viewList);
viewPager.setAdapter(myAdapter);
}
}
import java.util.List;
public class MyAdapter extends PagerAdapter {
private List<View> viewList;
public MyAdapter(List<View> viewList){
this.viewList = viewList;
}
@Override
public int getCount() {
return viewList == null ? 0 : viewList.size();
}
/**
* 将给定位置的View 添加到ViewGroup中,并显示出来
* 返回一个代表新页面的Object(key),通常都是返回view本身就行
*
* @param container container
* @param position position
* @return view
*/
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
container.addView(viewList.get(position),0);
return viewList.get(position);
}
/**
* 判断instantiateItem()方法返回的key是否跟一个页面视图是否相同
* @param view
* @param object
* @return
*/
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(viewList.get(position));
}
}
<!-- activity_main.xml -->
<?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"
android:orientation="vertical"
tools:context=".MainActivity">
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_page1"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
<!-- unread_layout.xml -->
<?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:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="未阅读信息"
android:textSize="36sp"
/>
</LinearLayout>
<!-- read_layout.xml -->
<?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:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="已阅读信息"
android:textSize="36sp"
/>
</LinearLayout>
<!-- all_layout.xml -->
<?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:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全部信息"
android:textSize="36sp"
/>
</LinearLayout>