2011-12-05 4 views
0

안드로이드의 특정 위치에서 화면에 임의로 3 개의 이미지를 표시하고 싶습니다. 그리고 그 이미지를 클릭 할 수있게 만들고 싶습니다. 나타나는 단일 이미지를 클릭하면 카운터가 1 씩 증가합니다. 어떻게해야합니까?Android에서 이미지를 임의로 표시하는 방법 ??

+2

어디서 붙어 있습니까? 이미지를로드하는 방법을 알고 있습니까? 캔버스에 그리는거야? 터치 이벤트를 듣는 방법을 알고 있습니까? – kostja

+0

캔버스에 그림을 그리는 방법을 설명 할 수 있으며 어떻게 문제를 해결할 수 있습니까? "터치 이벤트 수신"은 setOnClickListener와 동일합니까 ?? – Ankita

+1

그럼 궁금한 점은 serveral의 작은 질문으로 나눌 수 있습니다 : 임의의 숫자 (위치)를 얻는 방법? 화면에 이미지를 표시하는 방법? 이미지에서 clcik 이벤트에 응답하는 방법? 자, 어디서 붙어 있니? – Huang

답변

0

다음 코드를 사용하여 Canvas에 이미지를 그릴 수 있습니다.

Rect dst = new Rect(x, y, x + imageWidth,y + imageHeight); 

//enter paint as the last arg to use bitmap filtering 
canvas.drawBitmap(myBitmap, null, dst, bitmapFilterSettings); 

myBitmap는 Bitmap가 bitmapFilterSettings가 Paint이다. 이 코드를 onDraw() 메소드에 삽입하십시오.

이미지를 임의로 배치하려면 xy을 무작위로 지정해야 dst Rect으로 전달해야합니다. 임의의 이미지를 선택하려면 비트 맵을 List 또는 배열로두고 nextInt(listSize) 메서드를 Random으로 사용할 수 있습니다. 이미지를 임의로 표시하고 사라지게하려면 nextBoolean() 메서드를 Random으로 사용하고 true을 반환하는 경우에만 이미지를 그립니다. 너무 자주 (X 프레임마다 한 번씩) 이렇게하지 마십시오. 그렇지 않으면 이미지가 깜박입니다.

편집 : 이렇게하려면 Activity의 카운터와 결정 사이의 프레임 수를 선언 할 수 있습니다. 그리기를 켜고 끄려면 boolean 필드가 필요합니다. 당신의 onDraw() 그것은 다음과 같을 수 있습니다 :

counter++; 
if(counter%framesBetweenDecision == 0){ 
drawImageFlag = random.nextBoolean(); 
} 
if(drawImageFlag){ 
//drawImage 
} 

당신은 또한 timeBetweenDecision를 무작위 수있는 의사 결정 사이의 시간이 덜 예측하려면.
/EDIT

청취자의 터치 이벤트를 처리하여 클릭 할 때마다 임의의 이미지 선택을 호출 할 수 있습니다. 이미지 부분 만 클릭 할 수있게하려면 contains(x, y) 메소드를 사용하여 이미지를 그리는 데 사용하는 Rect 안에있는 MotionEvent (getX() 및 getY() 메소드 사용 가능) 위치를 확인하십시오.

이것이 유일한 방법은 아니지만 매우 간단합니다.

+0

"너무 자주하지 마세요 (X 프레임마다 한 번) 이미지가 깜박입니다." 어떻게 구현해야합니까? – Ankita

+0

@ user1080898이 답변을 포함하도록 내 답변을 편집했습니다. – kostja

관련 문제