阅读背景:

自定义控件-轮播图的实现

来源:互联网 
一、加小圆点后viewgroup类
/**
 * Created by chenyifei on 2017/7/24.
 */

public class ImageBarnnerFramLayout extends FrameLayout implements ImageBarnnerVroup.ImageBarnnerViewGroupLisnner,ImageBarnnerVroup.ImageBarnnerListen{
   private ImageBarnnerVroup imageBanner;
    private  LinearLayout linearlayout;
   private FramlayoutListener framlayoutListener;

    public FramlayoutListener getFramlayoutListener() {
        return framlayoutListener;
    }

    public void setFramlayoutListener(FramlayoutListener framlayoutListener) {
        this.framlayoutListener = framlayoutListener;
    }

    public ImageBarnnerFramLayout(@NonNull Context context) {
        super(context);
        initImageBarnnerViewGroup();
        initDotLinearLayout();
    }



    public ImageBarnnerFramLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        initImageBarnnerViewGroup();
        initDotLinearLayout();
    }

    public ImageBarnnerFramLayout(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initImageBarnnerViewGroup();
        initDotLinearLayout();
    }

    /**
     * 初始化远点布局
     */
    private void initDotLinearLayout() {
         linearlayout = new LinearLayout(getContext());
        FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, 40);
        linearlayout.setLayoutParams(lp);
        linearlayout.setOrientation(LinearLayout.HORIZONTAL);

        linearlayout.setGravity(Gravity.CENTER);
       // linearlayout.setBackgroundColor(Color.WHITE);
        addView(linearlayout);
        FrameLayout.LayoutParams layoutParams = (LayoutParams) linearlayout.getLayoutParams();
        layoutParams.gravity =Gravity.BOTTOM;
        linearlayout.setLayoutParams(layoutParams);
        //3.0以后我们使用的是setAlpha();.3.0之前我们使用的也是这个方法,调用者不同
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB)
            linearlayout.setAlpha(0.5f);
        else
            linearlayout.getBackground().setAlpha(100);




    }

    /**
     * 初始化我们自定义的图片轮播的核心类
     */
    private void initImageBarnnerViewGroup() {
         imageBanner = new ImageBarnnerVroup(getContext());
        FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
        imageBanner.setLayoutParams(lp);

       imageBanner.setImageBarnnerViewGroupLisnner(this);
        imageBanner.setImageBarnnerListen(this);
        addView(imageBanner);
    }
    public void addBitmaps(List<Bitmap> list){
        for(int i = 0; i<list.size();i++){
            Bitmap bitmap = list.get(i);
            addBitmapToImageBarnnerViewGroup(bitmap);
            addDotToLinearlayout();


        }



    }

    private void addDotToLinearlayout() {
        ImageView iv = new ImageView(getContext());
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        lp.setMargins(5,5,5,5);
        iv.setLayoutParams(lp);
        iv.setImageResource(R.drawable.dot_nomal);
        linearlayout.addView(iv);


    }

    private void addBitmapToImageBarnnerViewGroup(Bitmap bitmap) {
        ImageView imageView = new ImageView(getContext());
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setLayoutParams(new ViewGroup.LayoutParams(C.WIDTH,ViewGroup.LayoutParams.WRAP_CONTENT));
            imageView.setImageBitmap(bitmap);

            imageBanner.addView(imageView);


    }


    @Override
    public void selectImage(int index) {
        int count = linearlayout.getChildCount();
        for (int i =0; i<count;i++){
            ImageView iv = (ImageView) linearlayout.getChildAt(i);
            if(i==index){
                iv.setImageResource(R.drawable.dot_select);
            }else
                iv.setImageResource(R.drawable.dot_nomal);
        }
    }


    @Override
    public void clickImageIndex(int position) {
            framlayoutListener.clickImageIndex(position);
    }

    public interface FramlayoutListener{
        void clickImageIndex(int position);




    }


}
/**
 * Created by chenyi



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: