您的位置:首页 > 其它

重写view实现viewpager下导航圆点

2015-05-29 15:56 375 查看
布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/welcome_pager"
android:background="@color/light_gray"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<cn.com.util.StateChange
android:id="@+id/zhishi"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="71dp"
android:background="@color/white" />

</RelativeLayout>


自定义导航圆点:
package cn.com.util;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.view.View;
/**
* viewpager下导航栏圆点
* @author ML  2015-05-29
*
*/
public class StateChange extends View {
public StateChange(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}

private int size, current;

@SuppressLint("NewApi")
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint p = new Paint();
p.setAntiAlias(true);

int item_width = 30;
int center_x = (getWidth() - item_width * size) / 2;

for (int i = 0; i < size; i++) {
p.setColor(Color.BLACK);
p.setStyle(Style.STROKE);
if (i == current) {
p.setStyle(Style.FILL);
p.setColor(Color.RED);
}
canvas.drawCircle(center_x + item_width / 2 + i * item_width,
getHeight() / 2, 10, p);
}
canvas.save();
}

public void drawCicle(int size, int current) {
this.size = size;
this.current = current;
invalidate();
}

}
主界面:

package cn.com.jdsc;

import java.util.ArrayList;

import android.app.Activity;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import cn.com.util.StateChange;

public class welcome extends Activity {
ViewPager viewpager;	StateChange zhi;
ArrayList<ImageView> viewList = new ArrayList<ImageView>();

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
viewpager = (ViewPager) this.findViewById(R.id.welcome_pager);
zhi=(StateChange) this.findViewById(R.id.zhishi);

int[] welImg = { R.drawable.wel1, R.drawable.wel2, R.drawable.wel3 };

for (int i = 0; i < welImg.length; i++) {
ImageView image = new ImageView(welcome.this);
image.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
// image.setImageResource(welImg[i]);
image.setImageBitmap(BitmapFactory.decodeResource(getResources(),
welImg[i]));
image.setVisibility(View.VISIBLE);
viewList.add(image);
}
PagerAdapter pagerAdapter = new PagerAdapter() {

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return viewList.size();
}

@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
// TODO Auto-generated method stub
container.removeView(viewList.get(position));
System.out.println("destroyItem="+position);
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(viewList.get(position));
System.out.println("instantiateItem="+position);

return viewList.get(position);
}
};

viewpager.setAdapter(pagerAdapter);
viewpager.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
zhi.drawCicle(viewList.size(),arg0);

}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
System.out.println("onPageScrolled="+arg0);
}

@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
System.out.println("onPageScrollStateChanged="+arg0);

}
});
zhi.drawCicle(viewList.size(),0);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: