重写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); } }
相关文章推荐
- 1+2+3。。。+999=?
- 点击某个功能 界面变化
- IT民工进化指南:软件工程师最该了解的新技术Top10
- Windows 2008 想自动下载, default.ica 文件
- Struts2拷贝jar包容易犯的错
- Kundu and Tree
- Single Number -- leetcode
- DOJO(一) Hello Dojo!!
- wince中的串口编程
- ios 常见问题
- ndk r9d for max下载地址
- java项目开发中MyEclipse新建工作空间后的配置详细步骤
- LA 3303 / POJ 2675 Songs (数学证明+排序)
- ajax调用.net webservice
- 【转】一张图学会python编程
- [Selenium] 如何使ChromeDriver 每次启动的端口不会随机变化
- CodeBlocks调试功能快捷教程
- jenkins + git+maven做持续集成测试版本控制(未完成版)
- 开源项目NumberProgressBar的简单使用
- easyui datagrid中动态改变某行的颜色