마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

PageControl 질문

0 추천
package com.example.new01;
import android.app.*;
import android.content.*;
import android.os.*;
import android.support.v4.view.*;
import android.support.v4.view.ViewPager.*;
import android.util.*;
import android.view.*;
import android.widget.*;

public class MainActivity extends Activity{
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
		BaseViewPager pager = new BaseViewPager(this);
		
		pager.setPageControl(new PageControl(this));
		pager.setAdapter(new SampleAdapter(this));
		
		setContentView(pager);
		
		startActivity(new Intent(this, LoadingActivity.class));
	}
    public void mOnClick(View v){
    	Intent intent = new Intent(this, ListActivity.class);
    	startActivity(intent);
    }
}
class BaseViewPager extends RelativeLayout {
	
	 ViewPager mViewPager;
	 IPageControl iPageControl;
	
	public BaseViewPager(Context context) {
		super(context);
		initialization();
	}
	
	public BaseViewPager(Context context, AttributeSet attrs) {
		super(context , attrs);
		initialization();
	}
	
	public BaseViewPager(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		initialization();
	}
	
	private final void initialization() {
		RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(-1, -1);
		params.addRule(RelativeLayout.ABOVE, 1);
		mViewPager = new ViewPager(getContext());
		
		mViewPager.setLayoutParams(params);
		mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
			public void onPageScrollStateChanged(int arg0) {}
			public void onPageScrolled(int arg0, float arg1, int arg2) {}
			public void onPageSelected(int arg0) {
				if (iPageControl != null) {
					iPageControl.setPageIndex(arg0);
				}
			}
		});
		addView(mViewPager);
	}
	
	public void setCurrentItem(int item) {
		mViewPager.setCurrentItem(item);		
	}
	
	public ViewPager getViewPager() {
		return mViewPager;
	}
	
	public void setAdapter(PagerAdapter adapter) {
		iPageControl.setPageSize(adapter.getCount());
			
		mViewPager.setAdapter(adapter);
		
		if(adapter.getCount() > 0)
			mViewPager.setCurrentItem(0);
	}
		
	public void setPageControl(IPageControl c) {
		setPageControl(c , RelativeLayout.ALIGN_PARENT_BOTTOM);
	}
	
	public void setPageControl(IPageControl c , int rule) {
		iPageControl = c;
		
		View v = (View)c;
		v.setId(1);
		
		RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(-2, -2);
		params.topMargin = 30;
		params.bottomMargin = 30;
		params.addRule(rule);
		params.addRule(RelativeLayout.CENTER_HORIZONTAL);
		v.setLayoutParams(params);
		
		super.addView(v);
	}
}
package com.example.new01;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

public class PageControl extends View implements IPageControl {
	
	private int mPageSize;
	private int mCurrentPage;	
	private Paint mPaint;
	
	public PageControl(Context context) {
		super(context);
		initialization();
	}

	public PageControl(Context context, AttributeSet attrs) {
		super(context, attrs);
		initialization();
	}
		
	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
	    setMeasuredDimension(10 * (mPageSize + (mPageSize - 1)), 10);
	}
	
	@Override
	protected void onLayout(boolean changed, int left, int top, int right,
			int bottom) {
		super.onLayout(changed, left, top, right, bottom);
	}	
	private Paint mPaint2;

	private final void initialization() {
		mPaint = new Paint();
		mPaint.setAntiAlias(true);
		mPaint.setColor(Color.LTGRAY);	

		mPaint2 = new Paint();
		mPaint2.setAntiAlias(true);
		mPaint2.setColor(Color.DKGRAY);
	}
			
	public int getCurrentPageIndex() {
		return mCurrentPage;
	}
	
	public void setPageSize (int size) {
		mPageSize = size;
		
		invalidate();
	}
	
	public int getPageSize() {
		return mPageSize;
	}
	
	public void setPageIndex(int index) {
		mCurrentPage = index;
		
		invalidate();
	}		
	private static float RADIUS = 5;
	private static int PADDING = 10;
	
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
			
		float x = RADIUS;
		float y = RADIUS;
				
		for (int i = 0; i < mPageSize; i++) {
			if (mCurrentPage == i) {
				canvas.drawCircle(x, y, 
						RADIUS, 
						mPaint2);
			} else {
				canvas.drawCircle(x, y, 
						RADIUS, 
						mPaint);
			}
			x += (RADIUS * 2) + PADDING;
		}
	}
}

어느 사이트에서 퍼온 페이지 컨트롤 코딩인데요 이 코딩자체로는

하단에 페이지컨트롤이나오는데요

상단에 오게 하거나 사이즈 조절같은걸 해봤는데 생각처럼 잘안되더라구요..

어디를 어떤식으로바꿔줘야 RADIUS의 크기나 위치를 조정할수있는지요??

익명사용자 님이 2014년 12월 15일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...