多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 顏色選擇器

顏色選擇器

來源:程序員人生   發布時間:2017-02-14 08:41:56 閱讀次數:4057次

talk is cheap ,show your pic

色彩選擇器,首先想用progressbar去渲染,后來覺得太麻煩了,直接自定義view了,關鍵還是對progressbar深入不多。

首先看看我們需要甚么,這么多色彩,還有漸變效果,1臉懵逼,別怕,我們有著色器LinearGradient,不會玩的先去找度娘玩1圈再來,色彩嘛,直接找出圖中視圖中的純色。

private static final int[] COLORS = new int[]{0xFFFFFFFF, 0xFFFF0000, 0xFFFF00FF,
0xFF0000FF, 0xFF00FFFF, 0xFF00FF00, 0xFFFFFF00, 0xFF000000};

再來分析下,這里我們需要畫幾個圓,再畫圓角矩形,,還要對滑動做1下運動區間,左右左右出去就不好了

public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {//點擊時
        case MotionEvent.ACTION_DOWN:
            currentOffset = (int) event.getX();
            if (currentOffset <= thumbRadius+ScreemHelper.dp2px(context,60)) currentOffset = thumbRadius+ScreemHelper.dp2px(context,60);
            if (currentOffset >= barWidth + thumbRadius+ScreemHelper.dp2px(context,60))
                currentOffset = barWidth + thumbRadius+ScreemHelper.dp2px(context,60);
            STATUS = STATUS_CHANGE;
            break;
        case MotionEvent.ACTION_MOVE:
            currentOffset = (int) event.getX();
            if (currentOffset <= thumbRadius+ScreemHelper.dp2px(context,60)) currentOffset = thumbRadius+ScreemHelper.dp2px(context,60);
            if (currentOffset >= barWidth + thumbRadius+ScreemHelper.dp2px(context,60))
                currentOffset = barWidth +       thumbRadius+ScreemHelper.dp2px(context,60);
            break;

    }
    invalidate();
    return true;
}
這里ScreemHelper是對dp轉換px的工具類。。。。。

轉動條的渲染

barPaint.setShader(
new LinearGradient(startX, startY + barHeight / 2,
startX + barWidth, startY + barHeight / 2,
COLORS, null, Shader.TileMode.CLAMP));

玩好了這些難道就完了?色彩咋取昵

     int unit = barWidth / (COLORS.length - 1);
    int position = currentOffset - thumbRadius-ScreemHelper.dp2px(context,60);
    int i = position / unit;
    int step = position % unit;
    if (i >= COLORS.length - 1) return COLORS[COLORS.length - 1];
    int c0 = COLORS[i];
    int c1 = COLORS[i + 1];

    int a = ave(Color.alpha(c0), Color.alpha(c1), unit, step);
    int r = ave(Color.red(c0), Color.red(c1), unit, step);
    int g = ave(Color.green(c0), Color.green(c1), unit, step);
    int b = ave(Color.blue(c0), Color.blue(c1), unit, step);

    return Color.rgb(r, g, b);
    or(看你需要哪個了)
    return Color.argb(a,r, g, b);
要想實時知道它的行跡我們就需要開個后門,加1個色彩變換監聽器接口。。。。
     public interface onColorChangeListener {
    void onColorChange(int color);
}

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 看欧美的一级毛片 | 中文字幕爱爱 | 波多野结衣在线中文字幕 | 国产伦精品一区二区三区在线观看 | 视频在线观看免费网址 | 伊人资源 | 欧美久久久久久久久 | 中文字幕资源站 | 国内精品久久国产大陆 | 成人精品一区二区三区校园激情 | 亚洲精品国产第1页 | 美国一区二区三区 | 日韩欧美亚洲每日更新网 | 日本国产中文字幕 | 国产精品免费一区二区三区 | 中文字幕7 | 伊人222成人综合网 伊人2233 | 99爱精品 | 日韩手机视频 | 免费中文字幕在线国语 | 亚洲天堂第一 | 秋霞午夜视频在线观看 | 国产精品一区二区久久精品 | 岛国午夜精品视频在线观看 | 丁香婷婷激情综合 | 一级毛片在线不卡直接观看 | 亚洲在线视频免费观看 | 亚洲精品伊人 | 成人欧美日本免费观看 | 大学生毛片a左线播放 | 无人区一区二区三区乱码 | asianjapanese日本护士 | 国产一区欧美 | 性生一级欧美片 | 久久91精品国产91久久 | 日韩精品一区二区三区中文 | 伊人久久大香线蕉资源 | 欧美色阁| 国产一区二区免费在线 | 69视频在线看 | 婷婷综合缴情亚洲五月伊 |