Android最省内存的ViewPager添加小圆点指示器
发布时间:2020-05-24 21:07:26 所属栏目:Java 来源:互联网
导读:Android最省内存的ViewPager添加小圆点指示器
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 这个你可以用View叠加来实现,但是这个效果不太理想,1占内存,而移植起来不方便,需要找各种资源,所以采用自己绘制更好,方便,而且效率高。
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,paint);
}
}
canvas.restore();
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
