본문 바로가기

APP DEVELOPER/Android 안드로이드

안드로이드 - 부분 슬라이드 좌우 스와이프 My Pager

많은 고생끝에 얻어냈습니다. 대부분의 예제가 에러가 납니다.

부분 스와이프도 없고 거의다 화면 다 덮는 프레그먼트인거 같습니다. 

xml파일에 대부분 v4, v7 를 불러오게끔 되어있는데

그 파일들이 런타임에러가 납니다.  androidx.viewpager.widget.ViewPager

 

동적추가나 이해하기 쉽게끔 XML이 엑티비티메인만 있습니다.

MyImageAdapter에서  TextView를 모두 ImageView로 할수 있습니다.

 

activity_main.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
 
        android:id="@+id/my_pager"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:background="#FF00FF"
        android:fadingEdge="vertical" />
 
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#FF0000"
        android:text="상단만 움직임" />
 
</LinearLayout>
 
 
 

 

MainActivity.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
 
 
 
public class MainActivity extends AppCompatActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        final ViewPager MyViewPager =  findViewById(R.id.my_pager);
        MyImageAdapter adapter = new MyImageAdapter(getBaseContext());
        MyViewPager.setAdapter(adapter);
 
        // 페이지가 바뀔때마다 실행되는 리스너를 달수 있다.
        // MyViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener()
    }
}
 
 
 

 

 

MyImageAdapter.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
import android.content.Context;
 
 
public class MyImageAdapter extends PagerAdapter
{
    Context context;
 
    public MyImageAdapter(Context context)
    {
        this.context = context;
    }
    @Override
    public int getCount()
    {
        //전체 페이지 수
        return 5;
    }
 
    @Override
    public boolean isViewFromObject(View view, Object object)
    {
        return view == object;
    }
 
    @Override
    public Object instantiateItem(ViewGroup container, int position)
    {
        TextView my_textview = new TextView(context);
        my_textview.setText("페이지 NO = " + position);
 
        container.addView(my_textview, 0);
        return my_textview;
    }
 
    @Override
    public void destroyItem(ViewGroup container, int position, Object object)
    {
        container.removeView((TextView) object);
    }
}