環境
AndroidStudio =キリンさん 2022.03.1
動かすイメージ
スワイプすると画面が切り替わる
環境
AndroidStudio =キリンさん 2022.03.1
スワイプすると画面が切り替わる
implementation 'androidx.viewpager2:viewpager2:1.0.0'
こんな感じ
dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.viewpager2:viewpager2:1.0.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' }
res/layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout 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=".MainActivity"> <androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewpager2" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:layout_width="0dp" android:layout_height="0dp"/> </androidx.constraintlayout.widget.ConstraintLayout>
res/layout/item_page.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/container" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/text_view" tools:text="item" android:layout_centerInParent="true" android:textColor="@android:color/white" android:textSize="32dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewPager2 viewPager2 = findViewById(R.id.viewpager2); ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(); viewPager2.setAdapter(viewPagerAdapter); } }
ViewPagerAdapter.java
public class ViewPagerAdapter extends RecyclerView.Adapter<ViewPagerAdapter.ViewPagerViewHolder> { class ViewPagerViewHolder extends RecyclerView.ViewHolder { TextView mTextView; RelativeLayout mContainterLayout; public ViewPagerViewHolder (View itemView) { super(itemView); // 生成時にviewをセットする mContainterLayout = itemView.findViewById(R.id.container); mTextView = itemView.findViewById(R.id.text_view); } } @Override public int getItemCount() { // 何ページあるかを返す、実際にはListを用いてそのsizeを返した方がきれいになる。 // return xxxList.size(); return 4; } @Override public ViewPagerViewHolder onCreateViewHolder( ViewGroup parent, int viewType) { // layoutをセットする LayoutInflater inflater = LayoutInflater.from(parent.getContext()); View view = inflater.inflate(R.layout.item_page, parent, false); return new ViewPagerViewHolder(view); } @Override public void onBindViewHolder( ViewPagerViewHolder holder, int position) { // ページ(position)毎に表示する内容を変更する holder.mTextView.setText("page:" + position); if (position == 0) { holder.mContainterLayout.setBackgroundResource(android.R.color.holo_green_light); } if (position == 1) { holder.mContainterLayout.setBackgroundResource(android.R.color.holo_blue_light); } if (position == 2) { holder.mContainterLayout.setBackgroundResource(android.R.color.black); } if (position == 3) { holder.mContainterLayout.setBackgroundResource(android.R.color.holo_orange_light); } } }