ViewPager组件:
- ViewPager.xml
- view_0.xml
- view_1.xml
- view_2.xml
- main.java
- MyAdapter.java
view_0.xml,view_1.xml,view_2.xml是三个转变的布局;
ViewPager.xml是为了将上面三个布局投影到上面的;
main.java
package com.example.gaojiawen_test_1;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private List<View> viewList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得布局文件的位置
LayoutInflater layoutInflater = getLayoutInflater().from(this);
//将布局文件生成为view
View view_0 =layoutInflater.inflate(R.layout.view_0,null);
View view_1 =layoutInflater.inflate(R.layout.view_1,null);
View view_2 =layoutInflater.inflate(R.layout.view_2,null);
//将生成的view加载到数组中
viewList.add(view_0);
viewList.add(view_1);
viewList.add(view_2);
//获得组件ViewPager
ViewPager viewPager = findViewById(R.id.view);
//将view数组通过Myadapter方法整合程成以一个view;
Myadapter myadapter = new Myadapter(viewList);
//设置ViewPager.xml布局
viewPager.setAdapter(myadapter);
}
}
Myadapter.java
package com.example.gaojiawen_test_1;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
import java.util.List;
public class Myadapter extends PagerAdapter {
private List<View> viewList;
//构造一个函数,可以将数据传入Myadapter方法中;
public Myadapter(List<View> viewList) {
this.viewList = viewList;
}
//将给定的view添加到给送的viewgroup中,并创建他们的视图显示;
//返回一个代表object(key),通常返回view就可以了;
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
}
//放回输入的view数量
@Override
public int getCount() {
return viewList.size();
}
//判断view是否存在
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
//删除view
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(viewList.get(position));
}
}