'TypeViewManager'에 해당되는 글 1건

  1. 2012.06.18 TypeViewManager
Programming/Android2012.06.18 00:35

이런 저런 앱을 만들다 보니 activity전환 속도나 광고 노출 유지를 위해서 하나의 Activity에서 여러개의 다른 뷰를 보여줄 필요가 있었습니다.

기존에 제공되던 ViewFlipper를 관리할 수 있는 Manager를 제작하였습니다. ViewFlipper가 순서대로 동작되는 단점이 있습니다. 이 점을 극복하기 위해 Manager는 지정된 View로 이동시 필요한 만큼의 이동을 하게 됩니다.

사용하는 방법은 간단 합니다. ViewFlipper 안에 어떤 뷰가 순서대로 적용되어 있는지 알아야 합니다. 그리고 그 순서에 맞게 type을 등록하면 됩니다.

간단한 예제로 보는게 빠를 것 입니다. 간단하게 TabView형식으로 구현한 예제입니다.


main.xml



	
	    
	    
	
	
	    
	   	
	

TypeManagerTestActivity.java

package com.yhg.test.typemanager;

import yhg.library.view.manager.TypeViewManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ViewFlipper;

public class TypeManagerTestActivity extends Activity {
	public static final String TYPE_A = "a";
	public static final String TYPE_B = "b";
	
	protected TypeViewManager mManager;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        ViewFlipper viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);
        mManager = new TypeViewManager(viewFlipper);
        mManager.addType(TYPE_A);
        mManager.addType(TYPE_B);
        mManager.setStartType(TYPE_A);
        
        View menuA = findViewById(R.id.menuA);
        View menuB = findViewById(R.id.menuB);
        
        menuA.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				mManager.showTypeView(TYPE_A);
			}
        });
        
        menuB.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				mManager.showTypeView(TYPE_B);
			}
        });
    }
}

사용법은 위와 같습니다. 간단합니다. 실제로 어떻게 구동되는지는 아래 동영상을 참고하세요.



데모 동영상을 한번에 찍다 보니.... 약간 엉성하네요 하하하하

정말 간단한 기능이고 TypeViewManager에도 별로 대단할 것 없습니다. 내부 코드는 다음과 같습니다.


TypeViewDistance.java


TypeViewManager.java


다음에는 view 변경시 이벤트 처리를 하도록 해야겠습니다.

정리를 해보려고 해도 글은 적게 써지네요.....;;

신고
Posted by 초프(초보 프로그래머)