안드로이드 개발 질문/답변
(글 수 45,052)
package com.test.nansu;
import java.util.ArrayList;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class Testnansu extends Activity
{
int i; // 발생한 난수 저장
Random oRandom = new Random(); // 난수 발생
ImageView vis01;
ImageView vis02;
ImageView vis03;
ImageView vis04;
ArrayList<String> imageGet = new ArrayList<String>();
ArrayList<String> imageSet = new ArrayList<String>();
int MaxSize = 8;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.l01).setOnClickListener(buttonClick);
findViewById(R.id.l02).setOnClickListener(buttonClick);
findViewById(R.id.l03).setOnClickListener(buttonClick);
findViewById(R.id.l04).setOnClickListener(buttonClick);
findViewById(R.id.r01).setOnClickListener(buttonClick);
findViewById(R.id.r02).setOnClickListener(buttonClick);
findViewById(R.id.r03).setOnClickListener(buttonClick);
findViewById(R.id.r04).setOnClickListener(buttonClick);
vis01 = (ImageView)findViewById(R.id.eye01);
vis02 = (ImageView)findViewById(R.id.eye02);
vis03 = (ImageView)findViewById(R.id.eye03);
vis04 = (ImageView)findViewById(R.id.eye04);
/*imageGet.add(0x7f020007);
imageGet.add(0x7f020008);
imageGet.add(0x7f020009);
imageGet.add(0x7f02000a);
imageGet.add(0x7f02000b);
imageGet.add(0x7f02000c);
imageGet.add(0x7f02000d);
imageGet.add(0x7f02000e);*/
imageGet.add("star00");
imageGet.add("star01");
imageGet.add("star02");
imageGet.add("star03");
imageGet.add("star04");
imageGet.add("star05");
imageGet.add("star06");
imageGet.add("star07");
for (int i=0; i<MaxSize; i++)
{
int random = (int)(Math.random()*imageGet.size());
imageSet.add(imageGet.get(random));
imageGet.remove(random);
}
//Object[] imagePut = imageSet.toArray();
}
// 버튼클릭 이벤트
Button.OnClickListener buttonClick = new Button.OnClickListener()
{
public void onClick(View view)
{
nansu();
switch (view.getId())
{
case R.id.l01:
l01.setImageResource(R.drawable.imageSet.get(0));
break;
case R.id.l02:
break;
case R.id.l03:
break;
case R.id.l04:
break;
case R.id.r01:
break;
case R.id.r02:
break;
case R.id.r03:
break;
case R.id.r04:
break;
}
}
};
public void nansu()
{
i = oRandom.nextInt(3)+1;
switch (i)
{
case 1:
vis01.setImageResource(R.drawable.eye01);
vis02.setImageResource(R.drawable.eye02);
vis03.setImageResource(R.drawable.eye01);
vis04.setImageResource(R.drawable.eye02);
vis02.setPadding(0, 30, 0, 0);
vis04.setPadding(0, 30, 0, 0);
vis01.setVisibility(1); //1 = visible, 2 = invisible, 3 = gone
vis02.setVisibility(1); //1 = visible, 2 = invisible, 3 = gone
vis03.setVisibility(1); //1 = visible, 2 = invisible, 3 = gone
vis04.setVisibility(1); //1 = visible, 2 = invisible, 3 = gone
break;
case 2:
vis01.setImageResource(R.drawable.mouse01);
vis02.setImageResource(R.drawable.mouse02);
vis03.setImageResource(R.drawable.mouse01);
vis04.setImageResource(R.drawable.mouse02);
vis02.setPadding(0, 15, 0, 0);
vis04.setPadding(0, 15, 0, 0);
vis01.setVisibility(1); //1 = visible, 2 = invisible, 3 = gone
vis02.setVisibility(1); //1 = visible, 2 = invisible, 3 = gone
vis03.setVisibility(1); //1 = visible, 2 = invisible, 3 = gone
vis04.setVisibility(1); //1 = visible, 2 = invisible, 3 = gone
break;
case 3:
vis01.setImageResource(R.drawable.noise01);
vis02.setImageResource(R.drawable.noise02);
vis03.setImageResource(R.drawable.noise01);
vis04.setImageResource(R.drawable.noise02);
vis02.setPadding(0, 25, 0, 0);
vis04.setPadding(0, 25, 0, 0);
vis01.setVisibility(1); //1 = visible, 2 = invisible, 3 = gone
vis02.setVisibility(1); //1 = visible, 2 = invisible, 3 = gone
vis03.setVisibility(1); //1 = visible, 2 = invisible, 3 = gone
vis04.setVisibility(1); //1 = visible, 2 = invisible, 3 = gone
break;
}
}
}
결국 하다하다 안되서 이렇게 소스 통으로 올려봅니다 ㅠㅠ
보면 l01.setImageResource(R.drawable.imageSet.get(0)); 부분 에러인데..
ArrayList 값은 String 이고 drawable 값은 long 이라고 여기서 알았습니다.
근데 형변환을 해도 안되고 어떻게 해도 잘안되더군요..(제가 못하는거지만)
지금 현재 ArrayList 의 imageSet 에 있는 값으로 l01.setImageResource(R.drawable.imageSet.get(0));
이부부 ㄴ이미지 변경하고 싶은데 어떻게 해야되나요?ㅠㅠ 도와주세요..
빨리 끝내야하는데 찾는거만 이틀이네요 ㅠㅠ
2010.12.02 11:54:43
ArrayList<int>를 사용하셔야 할거같네요.
그럼
/*imageGet.add(0x7f020007);
imageGet.add(0x7f020008);
imageGet.add(0x7f020009);
imageGet.add(0x7f02000a);
imageGet.add(0x7f02000b);
imageGet.add(0x7f02000c);
imageGet.add(0x7f02000d);
imageGet.add(0x7f02000e);*/
이거 주석 풀고(근데 왜 리소스값을 저렇게 하드코딩하셨는지..)
imageGet.add("star00");
imageGet.add("star01");
imageGet.add("star02");
imageGet.add("star03");
imageGet.add("star04");
imageGet.add("star05");
imageGet.add("star06");
imageGet.add("star07");
이건 주석치고(ArrayList<int>니까 에러 나겠죠.)
l01 <- 이건 어디서 나온거지...ImageView라고 생각하겠습니다.
vis01을 써야할것같네요
vis01.setImageResource(imageSet.get(0));
이렇게 하면 젤 첨건 출력될 것 같네요.
소스를 복사해서 돌려보지 않아서 컴파일 에러가 어디서 날진 모르겠지만,
위와 같이 고치면 될것 같습니다.