본문 바로가기
프로그래밍/안드로이드

안드로이드 버튼 클릭, 이미지 변경

by -현's- 2015. 3. 10.
반응형



●버튼클릭하면 숫자가 하나씩 증가하는 예제

- ex1.xml

<RelativeLayout 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="${relativePackage}.${activityClass}" >


    <Button

        android:id="@+id/btn1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="숫자 증가" />


</RelativeLayout>




-MainActirity.java

package com.example.day0307;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;


public class MainActivity extends Activity implements OnClickListener{

int cnt=1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//xml을 해석하여 위젯이 메모리에 올라옴

setContentView(R.layout.activity_main);

Button btn1 = (Button)findViewById(R.id.btn1);

//자바에서는 이벤트 구현시 3단계로 이루어진다.

//1.리스너의 종류를 선택

//2.리스너가 보유한 메서드 재정의

//3.이벤트를 일으킨 이벤트 소스(위젯)과 리스너와의 연결

btn1.setOnClickListener(this);

}

//현재 클래스를 클릭을 감지하는 리스너로 정의했기 깨문에 클릭행위가 발생했을때 

//어떤 구현을 할지를 아래의 매서드에서 재정의 해야한다.

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

//숫자를 1씩 증가시켜 화면에 출력

cnt++;

Toast.makeText(this, "숫자:"+cnt, Toast.LENGTH_SHORT).show();

}

}

 









●버튼을 클릭하면 ImageView 의 이미지를 바꾸는 예제


- gallery.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent" >

    

    <ImageView 

        android:id="@+id/imgView"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_marginLeft="30dp"

        android:layout_marginRight="30dp"

        android:src="@drawable/img0"/>

    <Button 

        android:id="@+id/backButton"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignLeft="@id/imgView"

        android:layout_alignBottom="@id/imgView"

        android:text="이전"/>

    <Button 

        android:id="@+id/forwardButton"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignRight="@id/imgView"

        android:layout_alignBottom="@id/imgView"

        android:text="다음"/>

</RelativeLayout>




- GalleryActivity.java

//자바에서의 클래스는 사물 자체가 아닌, 사물을 생성해낼 수 있는 틀을 정의하는것!

//개발자가 정의한 틀을 가리켜 클래스라 하고, 문자,숫자,논리값 이외의 새로운 객체자료형을 정의한 것고 같다.

//따라서 앞으로는 클래스는 자료형으로 봐야한다.

package study;


import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.Toast;


import com.example.day0307.R;


public class galleryActivity extends Activity implements OnClickListener{

ImageView imgView;

//갤러리와 같이 대량의 데이터를 순서대로 처리하는 경향이 강한 프로그램은

//대상 데이터를 변수명으로 처리하기 보다는 

//순서있는 데이터를 처리하기 위한 배열기법을 이용하는 것이 효율적이다.

int data[] = new int[7];

int cnt=0;

//액티비티의 생명주기중에서, 메모리에 최초에 올라올때 호출되는 메서드이다.

//따라서 개발자는 앱이 가동되자 마자 최초에 보게될 화면 수정을 해야한다.

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);


data[0] = R.drawable.img0;

data[1] = R.drawable.img1;

data[2] = R.drawable.img2;

data[3] = R.drawable.img3;

data[4] = R.drawable.img4;

data[5] = R.drawable.img5;

data[6] = R.drawable.img6;

//화면 호출

setContentView(R.layout.gallery);

//이미 xml에 의해 메모리에 올라온 기존 위젯을 참고

imgView = (ImageView)findViewById(R.id.imgView);

Button backButton = (Button)findViewById(R.id.backButton);

Button forwardButton = (Button)findViewById(R.id.forwardButton);

backButton.setOnClickListener(this);

forwardButton.setOnClickListener(this);

}

//다음 사진 나오는 메서드 정의

public void forward(){

if(cnt==data.length-1){

Toast.makeText(this, "마지막 사진입니다.", Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(this, "다음사진", Toast.LENGTH_SHORT).show();

cnt++;

imgView.setImageResource(data[cnt]);

}

}

//이전 사진 나오는 메서드 정의

public void back(){

if(cnt==0){

Toast.makeText(this, "첫 사진입니다.", Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(this, "이전사진", Toast.LENGTH_SHORT).show();

cnt--;

imgView.setImageResource(data[cnt]);

}

}


@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Log.i("my info", "v의 값"+v);

//이벤트를 일으킨 id값

int id = v.getId();

if(id==R.id.backButton){

back();

}

if(id==R.id.forwardButton){

forward();

}

}

}























반응형

댓글