به نام خدا
سلام خدمت دوستان عزیز و همیشه همراه
در این بخش از آموزش میخام که با هم یک اسلاید شو طراحی کنیم
یعنی چندتا عکس داشته باشیم و با کشیدن انگشت روی صفحه دستگاه
عکس بعدی به نمایش در بیاد و بتونیم با کشیدن انگشت به سمت چپ و راست
عکس بعدی یا قبلی را به نمایش در بیارم
خب میریم سراغ آموزش
قدم اول
شما باید چندتا عکس درون فایل drawable اندروید استودیو بریزید
که در ادامه کار باید اونا رو درون پروژه جای گذاری کنیم
قدم دوم
در activity_main دوتا ویو اضافه می کنیم یکی ViewPager و دیگری ImageView
که میتونید کدهاشو در پایین داشته باشین
activity_main.xml
<?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=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="HamyarAndroid.com"
android:layout_marginStart="50dp"
android:textColor="#4BB84F"
android:gravity="center_horizontal"
android:textSize="30sp" />
<androidx.viewpager.widget.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/viewpager"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/image_view"
tools:src="@drawable/aks1"
android:adjustViewBounds="true"/>
</RelativeLayout>
قدم سوم
در این مرحله میریم سراغ نوشتن کدهای جاوا
خب من یک Activity جدید ایجاد می کنم و اسمشو Adapter قرار میدم
که این کلاس جدید رو که ساختم extends میشه از PagerAdapter
بعد از اون که extends کردم با یک ارور مواجه میشم بخاطر Constructors ها هستش و من
میام و یک Ctrl + Enter رو میزنم و Constructors ها رو انتخاب و اضافه می کنم
که میتونید در کد زیر ببینید
Adapter.java.java
package com.hamyarandroid.SlideShow;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
public class Adapter extends PagerAdapter{
@Override
public int getCount() {
return 0;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return false;
}
}
قدم چهارم
من میام و دوتا Property میسازم یکی از جنس Context و دیگری از جنس Integer
و آدرس عکسای ذخیره شده رو هم درون Integer میریزم و یک متد به نام Adapter ایجاد میکنم و Context
را درون اون میریزیم
Constructors را هم که در بالا نوشتیم را طبق کد زیر تغییر میدیم منظورم
متد ()getCount و isViewFromObject هستش
Adapter.java
package com.hamyarandroid.SlideShow;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
public class Adapter extends PagerAdapter {
private Context mContext;
private Integer [] Slides = {R.drawable.aks1,R.drawable.aks2,R.drawable.aks3};
public Adapter(Context context){
mContext = context;
}
@Override
public int getCount() {
return Slides.length;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view==object;
}
}
در مرحله پنجم
در این مرحله من میام و یک متد instantiateItem اضافه می کنم برای گرفتن ImageView و ست کردن عکس ها و .....
که در پایین کد خط به خط توضیح میدم
Adapter.java
@Override
public Object instantiateItem( ViewGroup container, int position) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.activity_main,null);
ImageView imageview = view.findViewById(R.id.image_view);
imageview.setImageResource(Slides[position]);
ViewPager viewPager = (ViewPager)container;
viewPager.addView(view);
return view;
}
خط 4 و 5
من اومدم و main_activity را inflate کردم درون View
خط 8 و 9
ImageView رو گرفتم و عکس ها رو درونش ست کردم
خط 11
تبدیل container به ViewPager
خط 12
اضافه کردن ویوها به ViewPager
مرحله ششم
من میام یک متد destroyItem اضافه میکنم و continer و object را
به ویو و ویوپیجر کست میکنم
Adapter.java
@Override
public void destroyItem( ViewGroup container, int position, Object object) {
ViewPager mviewPager = (ViewPager) container;
View view = (View)object;
mviewPager.removeView(view);
}
کد نهایی کلاس Adapter.java را که در بالا توضیح دادم را می تونید در پایین ببینید
Adapter.java
package com.hamyarandroid.slideshow;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
public class Adapter extends PagerAdapter {
private Context mContext;
private Integer [] Slides = {R.drawable.aks1,R.drawable.aks2,R.drawable.aks3};
public Adapter(Context context)
{
mContext = context;
}
@Override
public int getCount() {
return Slides.length;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view==object;
}
@Override
public Object instantiateItem( ViewGroup container, int position) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.activity_main,null);
ImageView imageview = view.findViewById(R.id.image_view);
imageview.setImageResource(Slides[position]);
ViewPager viewPager = (ViewPager)container;
viewPager.addView(view);
return view;
}
@Override
public void destroyItem( ViewGroup container, int position, Object object) {
ViewPager mviewPager = (ViewPager) container;
View view = (View)object;
mviewPager.removeView(view);
}
}
مرحله هفتم
در MainActivity.java میام و از کلاس Adapter.java یک New می گیرم
و Adapter رو ست می کنم
MainActivity.java
package com.hamyarandroid.slideshow;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
ViewPager viewpager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewpager=findViewById(R.id.viewpager);
Adapter adapter = new Adapter(this);
viewpager.setAdapter(adapter);
}
}
تصاویر خروجی برنامه رو می تونید در پایین مشاهده کنید
امیدوارم که از این آموزش لذت برده باشین
موفق و پیروز و سربلند باشد