Indicator 단계, 노트 사용자 정의

8753 단어
1.MyIndecator extends LinearLayout
2. 구성 방법:
1, 사용자 정의 속성이 있으면 사용자 정의 속성을 가져옵니다
2, 초기화 펜 mPaint:
	setStyle()

화필 양식은 세 가지로 나뉜다.
1.Paint.Style.STROKE: 모서리 그리기
2.Paint.Style.FILL_AND_STROKE: 모서리 그리기 및 채우기
3.Paint.Style.FILL:채우기
3. 컨테이너 밑에 있는 아이를 그리는 방법으로, onDraw () 는 자신을 그리는 방법입니다.
  canvas.save();
canvas.translate (x, y)//특정한 위치로 이동하여 그리기 시작
canvas.drawPath(mPath, mPaint)//그림 그리기
canvas.restore(); 반드시 넣어야 한다. 그렇지 않으면 타이틀을 읽을 수 없는 현상이 나타날 것이다
4. 다시 쓰기 onSizeChanged (intw, int h, int oldw, int oldh) 는 View 크기만 변경될 때 호출됨
그리는 위치와 표시기의 너비 높이 등을 확정하다
initView 호출();Indicator 그래프를 그리는 방법
5.initView();
mPath 초기화, moveTo(x, y), lineTo(x, y),close() 방법으로 표시기 그리기
6. onSroll(int position,float offset)을 다시 씁니다. 여기서 offset은 오프셋 백분율이고 값은 -1~0~1 사이입니다.
tabWidth=getWidth()/보이는 tab의 수량visibleCount;
  tranlationX=tabWidth*position+tabWidth*offset;//화판이 이동할 위치를 계산하고 지시기가 시작하는 편이량을 계산하지 않았다
  if(position>=(visibleCount-2)&&offset>0&&getChildCount()>visibleCount){
    if(visibleCount!=1)
    {
        this.scrollTo((position - (visibleCount - 2)) * tabWidth + (int) (tabWidth * offset), 0);
    }else
    {
        this.scrollTo(position*tabWidth+(int)(tabWidth*offset),0);
    }
}
invalidate();
7.  onFinishInflate()      , xml         
     for(int i=0;i	View view=getChildAt(i);
    	LinearLayout.LayoutParams lp = (LayoutParams) view.getLayoutParams();
    	lp.width=getScreenWidth()/visibleCount;
    	view.setLayoutParams(lp);
     }//     tab      child   
 
  
    	
	setTabClickEvent();
 
  
8. setTabClickEvent()      tab     tab   Fragment
	      View.setOnClickListener,  view.setCurrentItem(i);
 
  
9.        
  public interface PageOnchangeListenr{
     public void onPageScrolled(int i, float v, int i1);
     public void onPageSelected(int i);  
     public void onPageScrollStateChanged(int i);
  }
 
  
  public PageOnchangeListenr mListener;
 
  
  public void addOnPageChangeListener(PageOnchangeListenr listenr){
    this.mListener=listenr;
}
  
//  mViewPager       
    private ViewPager mViewPager;
    public void setViewPager(ViewPager viewPager,int pos){
        mViewPager=viewPager;
        mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i2)
            {
                scroll(i,v);
                if(mListener!=null)
                    mListener.onPageScrolled(i,v,i2);                
            }

            @Override
            public void onPageSelected(int i) {
                if(mListener!=null)
                    mListener.onPageSelected(i);               
            }
            @Override
            public void onPageScrollStateChanged(int i) {
                if(mListener!=null)
                    mListener.onPageScrollStateChanged(i);                
            }
        });
        mViewPager.setCurrentItem(pos);
    }

좋은 웹페이지 즐겨찾기