'android page'에 해당되는 글 1건

  1. 2011.10.31 Android - Page move ( 한 Activity에서 페이지 이동효과 주기 ) (4)

Android - Page move ( 한 Activity에서 페이지 이동효과 주기 )

Android 2011.10.31 15:14

Intent를 이용하여서 두개이상의 엑티비티화면 이동을 전에 살펴보았습니다.
그 때는 자바 파일 하나당 하나의 Activity를 설정하여 그 Activity간의 이동으로 화면이동을 해보았습니다.
오늘 살펴볼 내용은 한 자바파일의 한 Activity에서 화면페이지를 넘기는 듯한 효과를 주는 것입니다.
말그대로 한 Activity안에 여러가지 내용을 적지만 적은 내용중에 몇개는 숨기고 있다가
특정 이벤트가 일어나면 보았던 내용은 숨기고 다른 내용을 보여주는 식으로 페이지 효과를 주는 것입니다.
한 자바파일 한 Activity내에서 여러가지 내용을 다루기때문에 소스 코딩 내용이 늘어나고 복잡해집니다.
상황에 따라 이용하시는 것이 좋을 듯 합니다.

어떤식으로 할거냐면 한 엑티비티 안에 여러개의 레이아웃을 설정해놓고 그 레이아웃들에 버튼을 하나씩 연결
그래서 해당 버튼을 누를 때 해당 레이아웃을 보여주는 식으로 할 것입니다.
레이아웃을 3개 더 추가하였다면 버튼도 그에 맞게 3개를 추가하여 하나씩 대웅하게 이벤트를 걸어주는 것이지요.

레이아웃1 = > 버튼 1
레이아웃2 = > 버튼 2
레이아웃3 = > 버튼 3

이런식이 되겠네요 ㅎ

이 방법에서 사용할 때 레이웃에 속성 중에
setVisibility() 값을 사용하게 됩니다.
레이아웃을 보여주느냐 안보여주느냐를 해당 속성값을 이용하는데요
GONE 을 주면 숨기고 VISIBLE 을 주면 보여지게 되는 것을 이용합니다.

그러면 소스코딩을 하면서 살펴보겠습니다.


프로젝트 생성

Project name : ExamScreen
Build Target : Android 2.1
Package name : jsh.exam.screen
Create Activity : main
Min SDK Version : 7



src

main.java

package jsh.exam.change;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
//버튼 클릭 이벤트처리 사용
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;

//클릭이벤트 인터페이스 사용
public class main extends Activity implements OnClickListener {
 /** Called when the activity is first created. */

 // 레이아웃을 선언하기 위한 레이아웃 변수 선언
 LinearLayout aaa, bbb, ccc;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  // 선언한 변수에 생성한 레이아웃 설정
  aaa = (LinearLayout) findViewById(R.id.aaa);
  bbb = (LinearLayout) findViewById(R.id.bbb);
  ccc = (LinearLayout) findViewById(R.id.ccc);

  // 버튼 선언
  Button bt1 = (Button) findViewById(R.id.button1);
  Button bt2 = (Button) findViewById(R.id.button2);
  Button bt3 = (Button) findViewById(R.id.button3);

  // 버튼 텍스트 지정
  bt1.setText("첫번째");
  bt2.setText("두번째");
  bt3.setText("세번째");

  // 버튼 클릭 이벤트 처리
  bt1.setOnClickListener(this);
  bt2.setOnClickListener(this);
  bt3.setOnClickListener(this);

 }

 @Override
 public void onClick(View arg0) {
  // TODO Auto-generated method stub

  // 버튼이 클릭 됬을 때 이벤트 처리
  switch (arg0.getId()) {

  case R.id.button1:

   // 버튼 1이 눌렸을 때 1개의 해당 레이아웃을 보이게 나머지는 숨기게
   aaa.setVisibility(View.VISIBLE);
   bbb.setVisibility(View.GONE);
   ccc.setVisibility(View.GONE);

   break;

  case R.id.button2:

   // 버튼 2이 눌렸을 때 1개의 해당 레이아웃을 보이게 나머지는 숨기게
   aaa.setVisibility(View.GONE);
   bbb.setVisibility(View.VISIBLE);
   ccc.setVisibility(View.GONE);

   break;

  case R.id.button3:

   // 버튼 3이 눌렸을 때 1개의 해당 레이아웃을 보이게 나머지는 숨기게
   aaa.setVisibility(View.GONE);
   bbb.setVisibility(View.GONE);
   ccc.setVisibility(View.VISIBLE);

   break;

  }
 }
}


res

main.xml
레이아웃 3개의 3개의 버튼을 생성

<?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">
 <LinearLayout
  android:layout_height="wrap_content"
  android:id="@+id/linearLayout1"
  android:layout_width="fill_parent"
  android:orientation="horizontal">
  <Button
   android:text="Button"
   android:id="@+id/button1"
   android:layout_height="wrap_content"
   android:layout_width="fill_parent"
   android:layout_weight="1"></Button>
  <Button
   android:text="Button"
   android:id="@+id/button2"
   android:layout_height="wrap_content"
   android:layout_width="fill_parent"
   android:layout_weight="1"></Button>
  <Button
   android:text="Button"
   android:id="@+id/button3"
   android:layout_height="wrap_content"
   android:layout_width="fill_parent"
   android:layout_weight="1"></Button>
 </LinearLayout>
 <LinearLayout
  android:layout_height="fill_parent"
  android:orientation="vertical"
  android:id="@+id/aaa"
  android:layout_width="fill_parent"
  android:background="#ffffff"></LinearLayout>
 <LinearLayout
  android:layout_height="fill_parent"
  android:orientation="vertical"
  android:id="@+id/bbb"
  android:layout_width="fill_parent"
  android:background="#ff22ff">
 </LinearLayout>
 <LinearLayout
  android:layout_height="fill_parent"
  android:orientation="vertical"
  android:id="@+id/ccc"
  android:layout_width="fill_parent"
  android:background="#ffff22"></LinearLayout>

></LinearLayout>


실행결과

저작자 표시
신고
Trackback 1 : Comments 4
  1. hihi 2011.11.23 11:31 신고 Modify/Delete Reply

    fragment가 이제는 깔끔한 대처방안이 되었습니다.

    • 정승현 2011.11.23 19:48 신고 Modify/Delete

      허니콤부터 나온 fragment라는 놈 접해보지는 못했지만 좋은방법이라고 생각합니다. 여러가지 방법을 기술했을 뿐 이게 좋다는 것이 아니지요. 접해봐야하는데 머리아프네요 ㅠㅠ

  2. angel 2012.02.18 18:18 신고 Modify/Delete Reply

    질문이있어요ㅠ.ㅠ
    위와 같은 단순 페이지 변환은 잘 되는데요~
    버튼에 링크를 걸고, 버튼 눌러 링크 들어간 후 back버튼을 누르면 이전화면(mPage2)이 보이게끔
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
    mPage2.setVisibility(View.VISIBLE);}}
    이런식으로 했는데, back버튼 한번 누를 때는 동작 안하구, 한번 더 눌러야 동작이 되네요..
    왜 이러는거죠?ㅠ.ㅠ 도와주세요

    • 정승현 2012.02.20 09:42 신고 Modify/Delete

      소스를 보여주시는게 어떨까요...말로만듣고선 어떻해 답변을 해드릴수가 없네요.

Write a comment