2011-07-30 3 views
3

저는 gif 애니메이션을 재생하고 싶은 하나의 응용 프로그램을 개발했습니다. 내가 thisImageView에서 클래스보기

CODE

public class GIFDemo extends GraphicsActivity { 
ImageView imageView1; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 
    imageView1 = (ImageView) findViewById(R.id.imageView1); 



} 
private static class GIFView extends View{ 

    Movie movie,movie1; 
    InputStream is=null,is1=null; 
    long moviestart; 
    long moviestart1; 
    public GIFView(Context context) { 
     super(context); 
     is=context.getResources().openRawResource(R.drawable.border_gif); 

     movie=Movie.decodeStream(is); 

    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawColor(0xFFCCCCCC); 
     super.onDraw(canvas); 
     long now=android.os.SystemClock.uptimeMillis(); 

     if (moviestart == 0) { // first time 
      moviestart = now; 

     } 
     if(moviestart1==0) 
     { 
      moviestart1=now; 
     } 

     int relTime = (int)((now - moviestart) % movie.duration()) ; 
     // int relTime1=(int)((now - moviestart1)% movie1.duration()); 

     movie.setTime(relTime); 
     // movie1.setTime(relTime1); 
     movie.draw(canvas,10,10); 
     //movie1.draw(canvas,10,100); 
     this.invalidate(); 
    } 
} 
} 

홈페이지를 참조 가질 수에 대한 :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    /> 
<ImageView android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:id="@+id/imageView1" 
    android:src="@drawable/icon"></ImageView> 
</LinearLayout> 

그래서 문제는 내가 Imageview에서 클래스 GIFView을 설정 그래서 난 this 같은 게시물을 참조하고 싶지 않고, 적절한 모범을 보지 못한다. 그래서 당신은 (나에게 적절한 예와 설명 내가 이미지 뷰에서보기를 설정하는 방법 있음을

감사

답변

3

나는 그것이 ImageView의 '보기 설정'에게 의미있는 생각하지 않는다
닉을 제공 할 수 있습니다 당신이 제안하는 방식), 나는이 경우에 심지어 ImageView이 필요하다고 생각하지 않습니다. ImageView 클래스에 의존하지 않고 GIF를 그릴 수있는 사용자 정의 View을 구현했습니다. 사용하면됩니다!

최소한의 변경으로 GIFView이 작동한다고 가정하면 GIFView을 인스턴스화 한 다음 기본 레이아웃에 추가 할 수 있습니다. 다음과 같이 onCreate이하자 : 당신은 레이아웃에서 이미지 뷰 제거 할 수

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

    // let your LinearLayout have an id of 'container' 
    LinearLayout container = (LinearLayout) findViewById(R.id.container); 
    GIFView gifView = new GifView(this); 
    container.addView(gifView); 

} 

완전히 그냥 코드에서 인스턴스화 당신의 GIFView를 사용합니다. 또는 GIFView을 독립형 (내부가 아닌) 클래스로 만들고 전체 패키지 이름을 지정하여 XML 레이아웃에 추가 할 수 있습니다 (예 :

<com.nik.view.GIFView 
    id="@+id/gifview" 
    ... /> 

당신은 또한이 XML을 사용하는 경우 예상되는 하나이기 때문에 뷰 생성자 GIFView(Context context, AttributeSet attrs)를 작성해야합니다.

관련 문제