안드로이드 개발 질문/답변
(글 수 45,052)
package com.exercise.switchimage; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Gallery; import android.widget.ImageView; public class SwithchImage extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); View view = (View)findViewById(R.layout.main); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ImageView v1 = (ImageView)findViewById(R.id.ImageView01); v1.setLayoutParams(new Gallery.LayoutParams(80, 80)); } }); } }
요렇게 하면 에러도 안잡히고 주욱 잘 실행되다가 에뮬레이터만 돌리면 저 에러가 뜨네요.......
무언가 간단한걸 놓쳤을꺼 같은데... 도와주세영 @_@
2010.01.27 21:43:27
컨버전스 님 말씀대로 R.id.main 부분이 조금 이상하네요.
layout 아래에 있는 main.xml에서 View 에 설정된 id 가 findViewById 의 인자로 들어가야할거 같네요.
layout 아래에 있는 main.xml에서 View 에 설정된 id 가 findViewById 의 인자로 들어가야할거 같네요.
2010.01.27 23:23:16
package com.exercise.switchimage; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; public class SwithchImage extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); View view = this.getLayoutInflater().inflate( R.layout.main, null); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO Auto-generated method stub ImageView v1 = (ImageView)findViewById(R.id.ImageView01); ImageView v2 = (ImageView)findViewById(R.id.ImageView02); if(v1.getTop()==0.0f){ Animation a1 = new TranslateAnimation(0.0f,0.0f,0.0f,v2.getHeight()); Animation b1 = new TranslateAnimation(0.0f,0.0f,v1.getHeight(),0.0f); a1.setDuration(1000); a1.setStartOffset(300); b1.setDuration(1000); b1.setStartOffset(300); v1.startAnimation(a1); v2.startAnimation(b1); } else { Animation a2 = new TranslateAnimation(0.0f,0.0f,v2.getHeight(),0.0f); Animation b2 = new TranslateAnimation(0.0f,0.0f,0.0f,v1.getHeight()); a2.setDuration(1000); a2.setStartOffset(300); b2.setDuration(1000); b2.setStartOffset(300); v1.startAnimation(a2); v2.startAnimation(b2); } } }); } }
제가 만드려는 코드는
화면을 터치(마우스로 클릭)했을때
나와있는 그림 2개의 위치가 바뀌는 간단한 app 입니다.
화면을 클릭하는걸 어떻게 할줄 몰라서
LinearLayer를 inflate해서 객체로 잡았고요,
그걸 클릭할때마다 어떤 사진이 위에 있나 확인해서 위치만 바꿔줍니다.
그런데 사진만 보이고 클릭해도 움직일 기미를 안보이네요 ㅋㅋㅋㅋㅋ
무언가 고칠점 수정할점 이런거 한번 생각해봐라 이런거 다 좋으니
작은거라도 하나만 알려주세요 ㅎㅎㅎㅎ
OnClickListener를 설정하는데 그 안에 ImageView 설정하고 있고...
일단 findViewById(R.layout.main); 는 적당한 id가 변경되어야 합니다.
최상위 root view를 선택하시려고 하는지 아니면 그냥 한것인지 모르겠으나,
findViewById 는 레이아웃에 설정된 id값을 이용하시는 겁니다.