全网第二好的Android课程表控件之课程项样式

隐藏非本周课程

https://github.com/zfman/TimetableView
一个开源的、完善的、简洁的课程表控件

/**
     * 隐藏非本周课程
     * 修改了内容的显示,所以必须更新全部(性能不高)
     * 建议:在初始化时设置该属性
     */
    protected void hideNonThisWeek() {
        mTimetableView.getScheduleManager().setShowNotCurWeek(false);
        mTimetableView.updateView();
    }

显示非本周课程

/**
     * 显示非本周课程
     * 修改了内容的显示,所以必须更新全部(性能不高)
     * 建议:在初始化时设置该属性
     */
    protected void showNonThisWeek() {
        mTimetableView.getScheduleManager().setShowNotCurWeek(true);
        mTimetableView.updateView();
    }

设置间距以及弧度

/**
     * 设置间距以及弧度
     * 该方法只能同时设置四个角的弧度,设置单个角的弧度可参考下文
     */
    protected void setMarginAndCorner() {
        mTimetableView.getScheduleManager()
                .setCorner(0)
                .setMarTop(0)
                .setMarLeft(0);
        mTimetableView.updateView();
    }

设置单个角弧度

/**
     * 设置角度(四个角分别控制)
     *
     * @param leftTop
     * @param rightTop
     * @param rightBottom
     * @param leftBottom
     */
    public void setCorner(final int leftTop, final int rightTop, final int rightBottom, final int leftBottom) {
        mTimetableView.getScheduleManager()
                .setOnItemBuildListener(new OnItemBuildAdapter() {
                    @Override
                    public void onItemUpdate(FrameLayout layout, TextView textView, TextView countTextView, Schedule schedule, GradientDrawable gd) {
                        super.onItemUpdate(layout, textView, countTextView, schedule, gd);
                        //数组8个元素,四个方向依次为左上、右上、右下、左下,
                        // 每个方向在数组中占两个元素,值相同
                        gd.setCornerRadii(new float[]{leftTop, leftTop, rightTop, rightTop, rightBottom, rightBottom, leftBottom, leftBottom});
                    }
                });
        mTimetableView.updateView();
    }

修改显示的文本

/**
     * 修改显示的文本
     */
    public void buildItemText() {
        mTimetableView.getScheduleManager()
                .setOnItemBuildListener(new OnItemBuildAdapter() {
                    @Override
                    public String getItemText(Schedule schedule, boolean isThisWeek) {
                        if (isThisWeek) return "[本周]" + schedule.getName();
                        return "[非本周]" + schedule.getName();
                    }
                });
        mTimetableView.updateView();
    }

课程构建拦截

/**
     * 将名为"计算机组成原理"的课程拦截下来,该课程不会被构建
     */
    public void intercept() {
        mTimetableView.getScheduleManager()
                .setOnItemBuildListener(new OnItemBuildAdapter() {
                    @Override
                    public boolean interceptItemBuild(Schedule schedule) {
                        if (schedule.getName().equals("计算机组成原理")) return true;
                        return false;
                    }
                });
        mTimetableView.updateView();
        Toast.makeText(this,"已拦截《计算机组成原理》",Toast.LENGTH_SHORT).show();
    }

设置非本周课的背景

/**
     * 设置非本周课的背景
     *
     * @param color
     */
    public void setNonThisWeekBgcolor(int color) {
        mTimetableView.getScheduleManager()
                .getColorPool().setUselessColor(color);
        mTimetableView.updateView();
    }

课程重叠的样式

/**
     * 修改课程重叠的样式,在该接口中,你可以自定义出很多的效果
     */
    protected void modifyOverlayStyle() {
        mTimetableView.getScheduleManager()
                .setOnItemBuildListener(new OnItemBuildAdapter() {
                    @Override
                    public void onItemUpdate(FrameLayout layout, TextView textView, TextView countTextView, Schedule schedule, GradientDrawable gd) {
                        super.onItemUpdate(layout, textView, countTextView, schedule, gd);
                        //可见说明重叠,取消角标,添加角度
                        if (countTextView.getVisibility() == View.VISIBLE) {
                            countTextView.setVisibility(View.GONE);
                            gd.setCornerRadii(new float[]{0, 0, 20, 20, 0, 0, 0, 0});
                        }
                    }
                });
        mTimetableView.updateView();
    }

上一篇:全网第二好的Android课程表控件之侧边栏
下一篇:全网第二好的Android课程表控件之颜色池

猜你喜欢

转载自blog.csdn.net/lzhuangfei/article/details/80744536