效果如图:
MyCircleView代码:
package com.example.mytest;
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 MyCircleView extends View{
//radius 圆球半径
private static final float radius = 5.0f;
private int count;
private int choose=0;
//圆球之间的间距
private int gap = 20;
public MyCircleView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void choose(int pos){
this.choose = pos;
//每次选择的时候重画
this.invalidate();
}
public void setCount(int cnt){
this.count = cnt;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint mPaint = new Paint();
//设置圆球的锯齿
mPaint.setAntiAlias(true);
int width = getWidth();
int height = getHeight();
//设置圆球从居中位置开始布置
int start_x = (width-gap*(count-1))/2;
for(int i=0;i<count;i++){
if(choose==i){
mPaint.setColor(Color.RED);
canvas.drawCircle(start_x+i*gap, height-20, radius+5, mPaint);
}else{
mPaint.setColor(Color.DKGRAY);
canvas.drawCircle(start_x+i*gap, height-20, radius, mPaint);
}
}
}
}
WelcomeActivity代码:
package com.example.mytest;
import com.example.constants.Constants;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
public class WelcomeActivity extends FragmentActivity {
private MyCircleView circle;
private Activity activity = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.welcome_main);
SharedPreferences mSharedPreferences = getSharedPreferences(Constants.FILE_NAME, MODE_PRIVATE);
boolean temp = mSharedPreferences.getBoolean(Constants.ISFIRSTRUN_KEY, true);
// 表示第一次启动
// if (temp) {
// mSharedPreferences.edit().putBoolean(Constants.ISFIRSTRUN_KEY, false).commit();
//
// } else {
// Intent intent = new Intent(activity, MainActivity.class);
// startActivity(intent);
//
// finish();
// }
ViewPager mViewPager = (ViewPager) findViewById(R.id.viewpager);
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int pos) {
circle.choose(pos);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
mViewPager.setAdapter(new MyAdapter(this.getSupportFragmentManager()));
circle = (MyCircleView) findViewById(R.id.circle);
// circle.setCount(mViewPager.getChildCount());
circle.setCount(mViewPager.getAdapter().getCount());
}
private class MyAdapter extends FragmentPagerAdapter {
private int[] imgRes = { R.drawable.welcome1, R.drawable.welcome2, R.drawable.welcome3 };
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
final int position = pos;
Fragment f = new Fragment() {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = null;
if (position == getCount() - 1) {
view = inflater.inflate(R.layout.welcome_fragment_button, null);
Button btn = (Button) view.findViewById(R.id.welcome_button);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(activity, MainActivity.class);
startActivity(intent);
finish();
}
});
} else {
view = inflater.inflate(R.layout.welcome_fragment, null);
ImageView image = (ImageView) view.findViewById(R.id.iamgeView);
image.setImageResource(imgRes[position]);
}
return view;
}
};
return f;
}
@Override
public int getCount() {
return Constants.PAGE_COUNT;
}
}
}
需要的布局文件welcome_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</android.support.v4.view.ViewPager>
<com.example.mytest.MyCircleView
android:id="@+id/circle"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</com.example.mytest.MyCircleView>
</FrameLayout>
需要的布局文件welcome_fragment.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/iamgeView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"/>
</FrameLayout>
需要的布局文件welcome_fragment_button.xml:
<?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" >
<Button
android:id="@+id/welcome_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="欢迎使用"
android:textSize="20sp"
android:layout_centerInParent="true"
android:padding="15dip"
android:gravity="center"/>
</RelativeLayout>