欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Android最省内存的ViewPager添加小圆点指示器,androidviewpager,这个你可以用View叠加

来源: javaer 分享于  点击 44769 次 点评:56

Android最省内存的ViewPager添加小圆点指示器,androidviewpager,这个你可以用View叠加


这个你可以用View叠加来实现,但是这个效果不太理想,1占内存,而移植起来不方便,需要找各种资源,所以采用自己绘制更好,方便,而且效率高。```java

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.View;

public class ADView extends ViewPager {

AdAdapter mAdAdapter;  Context context;  Paint paint;  List<Map<String, String>> urls;public ADView(Context context, AttributeSet attrs) {      super(context, attrs);      this.context = context;      paint = new Paint();      InitAdapter();  }private void InitAdapter() {      urls = new ArrayList<Map<String, String>>();      mAdAdapter = new AdAdapter(context, urls);      this.setAdapter(mAdAdapter);  }public void setData(List<Map<String, String>> data) {      urls.clear();      for (int i = 0; i < data.size(); i++) {          urls.add(data.get(i));      }      if(urls.size()>0){          this.setVisibility(View.VISIBLE);      }else{          this.setVisibility(View.GONE);      }      mAdAdapter.notifyDataSetChanged();  }@Override  public void draw(Canvas canvas) {      super.draw(canvas);      drawCycle(canvas);  }private void drawCycle(Canvas canvas) {      canvas.save();      canvas.translate(getScrollX(), getScrollY());      int count = 0;      if (this.getAdapter() != null) {          count = this.getAdapter().getCount();      }      int select = getCurrentItem();      float density = getContext().getResources().getDisplayMetrics().density;      int itemWidth = (int) (11 * density);      int itemHeight = itemWidth / 2;      int x = (getWidth() - count * itemWidth)/2;      int y = getHeight() - itemWidth;      int minItemHeight = (int) ((float) itemHeight * 0.8F);      paint.setAntiAlias(true);    paint.setStyle(Style.FILL);      for (int i = 0; i < count; i++) {          if (select == i) {              paint.setColor(0xFFbdbdbd);              canvas.drawCircle(x + itemWidth * i + itemWidth / 2, y, minItemHeight, paint);          } else {              paint.setColor(0xFFe6e6e6);              canvas.drawCircle(x + itemWidth * i + itemWidth / 2, y, minItemHeight, paint);          }      }      canvas.restore();  }

}
```

相关栏目:

用户点评