티스토리 뷰
버튼을 누르면 패널을 하나 만들어서 슬라이드 형식으로 만들어보자.
페이지 슬라이딩이란?
-
1 2 3 4 5 | 뷰의 중첩과 애니메이션을 접목한 방식 - 하나의 뷰 위에 다른 뷰를 올라가 있을 때 보이거나 보이지 않는 과정을 애니메이션으로 적용 - 이때 사용하는것이 Animation객체를 적용해서 왼쪽방향으로 translate 하거나 오른쪽 방향으로 translate 한다 | cs |
Example_Sliding 프로젝트 생성
1. 버튼 클릭시 새로운 슬라이드가 넘어가도록 해보자.
2. FrameLayout 사용(안에 Linearlayout 사용)
3. main.xml 파일 수정
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 <?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.example_sliding.MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="#ff5555ff"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="base Area"android:textSize="30dp"android:textColor="#ffffff"/></LinearLayout><LinearLayoutandroid:id="@+id/page"android:layout_width="200dp"android:layout_height="match_parent"android:orientation="vertical"android:layout_gravity="right"android:background="#ffffff66"android:visibility="invisible"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Sliding Area"android:textSize="30dp"android:textColor="#000000"/></LinearLayout><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="열기"android:layout_gravity="center_vertical|right"/></FrameLayout>cs
4. res -> anim폴더 생성 ->translate_left.xml 생성
12345678910 <?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:fromXDelta="100%p"android:toXDelta="0%p"android:duration="1500"/></set>cs
5. tranlate_right.xml 생성
1234567891011 <?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:fromXDelta="0%p"android:toXDelta="100%p"android:duration="1500"/></set>cs
- main.java 수정
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 package com.example.example_sliding;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.Button;import android.widget.LinearLayout;public class MainActivity extends AppCompatActivity {LinearLayout page;Animation translateLeft;Animation translateRight;Button button;boolean isPageOpen = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);page = (LinearLayout)findViewById(R.id.page);//animation 객체로 만들어야함 LefttranslateLeft = AnimationUtils.loadAnimation(this,R.anim.translate_left);//animation 객체로 만들어야함 RighttranslateRight = AnimationUtils.loadAnimation(this,R.anim.translate_right);// 애니메이션 리스너 등록해야 쓸수 있다.SlidingAnimationListener listener = new SlidingAnimationListener();translateLeft.setAnimationListener(listener);translateRight.setAnimationListener(listener);button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {// 열기 / 닫기 의 경우로 보여주려고 할때.@Overridepublic void onClick(View view) {if(isPageOpen){page.startAnimation(translateRight); //오른쪽으로 보이기}else {page.setVisibility(View.VISIBLE);page.startAnimation(translateLeft); // 왼쪽으로 보이기//여기서 중요한것이 끝난시점으로 처리 해야하므로 이때 리스너를 하나 추가해야함// 따라서 밑에 클래스 추가}}});}class SlidingAnimationListener implements Animation.AnimationListener{@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {if(isPageOpen){page.setVisibility(View.INVISIBLE);button.setText("열기");isPageOpen = false;}else{button.setText("닫기");isPageOpen = true;}}@Overridepublic void onAnimationRepeat(Animation animation) {}}}cs
- <결과>
'Android' 카테고리의 다른 글
[Android] Viewer 만들기(뷰어만들기) (0) | 2017.09.24 |
---|---|
[Android]프래그먼트 (Fragment) (4) | 2017.09.24 |
[Android] 간단한 애니메이션 사용하기 (0) | 2017.09.24 |
[Android] 프로그레스바와 원형바 / 시크바 사용하기 (0) | 2017.09.24 |
[Android] 알림 대화 상자 만들기 (0) | 2017.09.24 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스프링
- Algorigm
- Controller
- node
- 노드
- 개발하는 관광이
- 백준알고리즘
- programming
- 감자개발자
- 학교
- 백준
- 초보자를 위한 C언어 300제
- 복습
- db
- MVC
- C언어
- Android
- 감자코딩
- 코드엔진
- 안드로이드
- 프로그래밍
- 알고리즘
- 리버싱
- C langauge
- Spring
- BFS
- 텐서플로우
- TensorFlow
- 머신러닝
- node.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함