2014-10-03 5 views
-1

내 기본 XML 파일의 버튼을 클릭 한 후 이미지 배열에서 하나씩 이미지를 재생할 간단한 Android 프로그램을 만들고 있습니다. 하지만 프로그램이 불행하게도 닫힙니다.이미지 배열에서 이미지 재생

코드 :

package com.example.play_image; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
//import android.view.View; 
//import android.widget.Button; 
import android.widget.ImageView; 

public class MainActivity extends Activity { 

int imageList[]={R.drawable.exam_a,R.drawable.exam_b,R.drawable.exam_c, 
    R.drawable.exam_d,R.drawable.exam_e}; 

ImageView letter; 
@Override 

protected void onCreate(Bundle savedInstanceState){  
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
}  

public void play_image(){ 
    for(int i=0;i<5;i++){ 
     letter.setBackgroundResource(imageList[0]); 
    } 
} 

XML 파일 :

  1. 나는 각 이미지 위스콘신 같은 이미지를 재생하려면 :

    <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" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity"  
    > 
    <Button 
        android:id="@+id/button1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentTop="true" 
        android:layout_centerHorizontal="true" 
        android:layout_marginTop="158dp" 
        android:background="@drawable/exam_a" 
        android:onClick="play_image" /> 
    </RelativeLayout> 
    

    나는 또 다른 질문이 있습니다 화면에 나타나서 일정 기간 (예 : 10 초) 머 무르고 다른 것으로 보입니다. 어떻게해야합니까?

  2. 해당 이미지에 애니메이션을 추가하려면 어떻게해야합니까?

답변

0

ImageView를 설치해야합니다. 같은 :

public void play_image(ImageView letter){ 

//your code 

} 

을 한 다음 시작하면 그냥이

play_images(letter); //or any other imageview 

다음처럼에 이미지 뷰 객체를 전달합니다

ImageView letter = (ImageView)findViewById(R.id.myImageView); 

하고 play_image 방법에

내가이를 추가 play_images 메서드에서 나는 당신이 이미지를 바꾸지 않았다는 것을 알고 있다고 확신한다. 배열 항목으로 0을 남겼습니다. 0을 I 또는 for 루프에서 사용하는 Int로 대체해야합니다. 경우

for(int res : imageList){ 
     letter.setBackgroundResource(res); 
    } 

를 그 여전히 당신이 letter.setBackgroundResource 라인을 대체하여 드로어 블을 사용하여 시도해 볼 수도 작동하지 :

또한 루프 로직은 다음을 사용하여 간단하게 할 수있다. 같은 :

1) AnimationDrawable

AnimationDrawable animationDrawable = new AnimationDrawable(); 
    animationDrawable.addFrame(frame, duration); 

프레임 그릴 수 그래서해야 사용

letter.setImageDrawable(getResources().getDrawable(int res id)); 
+0

내 xml 파일에서 "myImageView"라는 이름의 이미지 뷰를 생성해야 실행 가능한 사용합니까? – STM

0

먼저 이미지보기 애니메이션

letter = (ImageView)findViewById(R.id.xxxxx); 

를 선언, 두 가지 방법이 drawable from you ID :

Drawable frame = getResources().getDrawable(imageList[x]); 

2)

int i=0; 
runnable = new Runnable() { 

     @Override 
     public void run() { 
      letter.setBackgroundResource(imageList[i]); 
      if(i<5){ 
       handler.postDelayed(this, 10000); 
       i++; 
      } 
     } 
    }; 
    handler = new Handler(); 
    handler.post(runnable); 
관련 문제