Indicador de página de Android para imagen deslizante
Estoy trabajando en un proyecto Quiero mostrar una imagen deslizante con indicador de página. tanto la presentación de diapositivas como el indicador de página aparecen en mi aplicación y cuando desplazo la imagen, las imágenes cambian con éxito y funcionan bien. pero mi indicador de página no cambia. me confunde cuando ejecuto el código en eclipse, funciona bien pero en el estudio de Android no. Aquí está mi PageIndicator:
public class PageIndicator extends ImageView{
private Paint fillPaint;
private Paint strokePaint;
private int count;
private int indicatorWidth;
private static final int CIRCLE_RADIUS = 8;
private static final int CIRCLE_SPACE = 10;
private static final int CIRCLE_STROKE_COLOR = Color.GRAY;
private static final int CIRCLE_FILL_COLOR = Color.LTGRAY;
private int screenWidth;
private float offsetX;
private int currentPageIndex;
private float percent;
public PageIndicator(Context context) {
super(context);
initialize();
}
public PageIndicator(Context context, AttributeSet attrs) {
super(context, attrs);
initialize();
}
public PageIndicator(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initialize();
}
private void initialize() {
fillPaint = new Paint();
fillPaint.setStyle(Style.FILL);
fillPaint.setColor(CIRCLE_FILL_COLOR);
fillPaint.setAntiAlias(true);
strokePaint = new Paint();
strokePaint.setStyle(Style.STROKE);
strokePaint.setColor(CIRCLE_STROKE_COLOR);
strokePaint.setAntiAlias(true);
screenWidth = G.appContext.getResources().getDisplayMetrics().widthPixels;
}
public void setIndicatorsCount(int value) {
count = value;
computeIndicatorWidth();
}
public void setCurrentPage(int value) {
currentPageIndex = value;
}
public void setPercent(float percent) {
this.percent = percent;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (int i = 0; i < count; i++) {
Paint paint = strokePaint;
float radius = CIRCLE_RADIUS;
boolean canDrawFill = false;
if (i == currentPageIndex) {
fillPaint.setAlpha((int) ((1.0f - percent) * 255));
//radius *= 2;
canDrawFill = true;
}
if (percent > 0) {
if (i == currentPageIndex + 1) {
fillPaint.setAlpha((int) (percent * 255));
canDrawFill = true;
}
}
canvas.drawCircle(offsetX + i * (CIRCLE_RADIUS + CIRCLE_SPACE), 10, radius / 2.0f, strokePaint);
if (canDrawFill) {
canvas.drawCircle(offsetX + i * (CIRCLE_RADIUS + CIRCLE_SPACE), 10, radius / 2.0f, fillPaint);
}
}
}
private void computeIndicatorWidth() {
indicatorWidth = count * (CIRCLE_RADIUS + CIRCLE_SPACE);
offsetX = (screenWidth - indicatorWidth) / 2;
}
}
Y My ImagePageAdapter
public class ImagePagerAdapter extends PagerAdapter {
public ArrayList<Integer> imageIds;
public ArrayList<String> imageTitles;
public ImagePagerAdapter(ArrayList<Integer> imageIds , ArrayList<String> imageTitles){
this.imageIds = imageIds;
this.imageTitles = imageTitles;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return imageIds.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
// TODO Auto-generated method stub
return view.equals(object);
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
// TODO Auto-generated method stub
View view = G.inflater.inflate(R.layout.sliding, null);
ImageView image = (ImageView) view.findViewById(R.id.image_sliding);
TextView title = (TextView) view.findViewById(R.id.title_sliding);
image.setImageResource(imageIds.get(position));
title.setText(imageTitles.get(position));
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView((View)object );
}
}
Y mi actividad:
public class HomeActivity extends AppCompatActivity {
ViewPager pager;
PageIndicator indicator;
ArrayList<Integer> imageIds = new ArrayList<>();
ArrayList<String> imageTitles = new ArrayList<>();
@TargetApi(12)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_activity);
pager = (ViewPager)findViewById(R.id.Pager);
indicator = (PageIndicator)findViewById(R.id.Indicator);
indicator.setIndicatorsCount(3);
addImageSliding("ofogh_mehr","به افق مهر خوش آمدید");
addImageSliding("sliding_1","تصویر 2");
addImageSliding("sliding_2","تصویر 3");
pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
}
public void onPageScrolled(int startIndex, float percent, int pixel) {
// TODO Auto-generated method stub
indicator.setPercent(percent);
indicator.setCurrentPage(startIndex);
Log.i("Scroll", percent+ " " + startIndex );
}
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
ImagePagerAdapter adapter = new ImagePagerAdapter(imageIds, imageTitles);
pager.setAdapter(adapter);
}
@Override
protected void onResume() {
super.onResume();
G.currentActivity = this;
}
private void addImageSliding(String name, String title){
int imageID = getApplicationContext().
getResources().
getIdentifier(name,
"drawable", getApplicationContext().getPackageName());
imageIds.add(imageID);
imageTitles.add(title);
}
}