Ich arbeite an einem Projekt. Ich möchte ein gleitendes Bild mit Seitenanzeige anzeigen. Sowohl Diashow als auch Seitenanzeige erscheinen in meiner App und wenn ich das Bild scrolle, ändern sich die Bilder erfolgreich und funktionieren einwandfrei. aber mein Seitenindikator ändert sich nicht. es macht mich verwirrt, wenn ich den Code in Eclipse laufen, funktioniert es gut, aber in Android Studio nicht. hier ist mein PageIndicator:Android Seite Indikator für das Verschieben von Bild
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;
}
}
And 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);
}
}
und meine Aktivität:
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);
}
}
Können Sie mir Ihr Projekt geben, was Sie von Android-Studie gebaut haben? Ich kann Ihnen helfen, das Problem zu lösen. –
Danke für Ihre Aufmerksamkeit. Aber es gibt noch keinen anderen Code in meinem Projekt. Ich habe nach einer Weile in Eclipse programmiert und bin dann zum Android Studio gewechselt. Ich habe dieses Projekt vor etwa einem Monat (der Code existiert in meinem Post) mit Slideshow erstellt. Es funktioniert gut in Eclipse. Ich habe gerade den Code in meinem Projekt im Android Studio ohne Änderung kopiert und dieses Problem erschien. –