栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android 类似评论功能的控件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android 类似评论功能的控件

1:效果如下:
 

 2:代码:
public abstract class MyAppStart extends LinearLayout {

    private onItemSelectListener onItemSelectListener;

    private int count;

    public int colorId;

    public int getColorId() {
        return colorId;
    }

    public void setColorId(int colorId) {
        this.colorId = colorId;
    }

    public MyAppStart(Context context, AttributeSet attrs) {

        super(context, attrs);

        for (int i = 0 ; i < max() ; i ++) {

            View view = getView(new View(context));

            view.setTag(i);

            if (isClick()) {

                view.setonClickListener(new onClickListener() {

                    @Override
                    public void onClick(View v) {

                        setSelect((Integer) v.getTag());

                    }

                });

            }

            addView(view);

        }

        setSelect(count = 0);

    }

    public void setSelect(int count) {

        for (int i = 0 ; i < getChildCount() ; i ++) {

            getChildAt(i).setBackgroundResource(i <= (this.count = count) ? selectYes() : selectNo());

            BitmapDrawable p = (BitmapDrawable) getChildAt(i).getBackground();

            if (i <= (this.count = count) && isReColor()){

                p.setColorFilter(new PorterDuffColorFilter(getColorId(), PorterDuff.Mode.SRC_ATOP));

            } else {

                p.setColorFilter(null);

            }

        }

        if (onItemSelectListener != null) {

            onItemSelectListener.onItemSelect(this.count = count);

        }

    }

    public void setonItemSelectListener(onItemSelectListener onItemSelectListener) {

        this.onItemSelectListener = onItemSelectListener;
        
        onItemSelectListener.onItemSelect(count);

    }
    protected boolean isReColor(){

        return false;
    }
    protected abstract boolean isClick();

    protected abstract int max();

    protected abstract int selectYes();

    protected abstract int selectNo();

    protected abstract View getView(View view);

    public interface onItemSelectListener {

        void onItemSelect(int index);

    }

}

 

public class evaluateStartView extends MyAppStart {

    private LinearLayout.LayoutParams params;

    public evaluateStartView(Context context, AttributeSet attrs) {

        super(context, attrs);


    }

    @Override
    protected boolean isClick() {

        return true;

    }



    @Override
    protected int max() {

        return 5;

    }

    @Override
    protected int selectYes() {


        return R.mipmap.evaluate_start_on;

    }

    @Override
    protected int selectNo() {

        return R.mipmap.evaluate_start_off;

    }

    @Override
    protected View getView(View view) {

        params = new LinearLayout.LayoutParams(Utils.dpToPx(23), Utils.dpToPx(23));

        params.setMargins(0, 0, Utils.dpToPx(5), 0);

        view.setLayoutParams(params);

        return view;

    }



}
 3:使用说明:

在activity中直接使用

eva.setSelect(2);0-4(分别对应的选中效果是1-5个)。

当要监听选中了第几个的时候调用如下方法:

 eva.setonItemSelectListener(new MyAppStart.onItemSelectListener() {
            @Override
            public void onItemSelect(int index) {
                Toast.makeText(TagFlowLayoutActivity.this,index+"",Toast.LENGTH_SHORT).show();
            }
        });

 当不想让图片可点击时把

evaluateStartView方法中的isClick()方法的返回值改成false就可以了。
 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/318305.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号