新入 Rx,写了一个特别简单的 App,欢迎 V 巨们指点。

2016-01-21 10:17:59 +08:00
 xcc3641

Gifts-for-designers


Introduction

一个为设计师设计的 APP( ´_ゝ`)一个特别简单项目

主要用来练习 Rx ,当然这个适合初入 Rx 的看看。

自己参考的教程给 Android 开发者的 RxJava 详解

Github 地址:Gifts-for-designers可以给个 star 鼓励下( ◜◡‾)っ✂╰⋃╯

Usage

( ´_ゝ`) 好像这个项目没有很多代码需要解释,不过我还是整理一份

自定义字体

//      字体
Typeface fontFace = Typeface.createFromAsset(getAssets(),
"font/Inconsolata.otf");
Typeface tvFontFace = Typeface.createFromAsset(getAssets(), "font/Lobster.ttf");
editTextHEX.setTypeface(fontFace);
editTextRGB.setTypeface(fontFace);
textView.setTypeface(tvFontFace);

Rx 监听输入

RxTextView.textChanges(editTextHEX)
                .subscribeOn(AndroidSchedulers.mainThread())
                .debounce(300, TimeUnit.MICROSECONDS)
                .map(new Func1<CharSequence, String>() {
                    @Override
                    public String call(CharSequence charSequence) {
                        return charSequence.toString();
                    }
                })
                .observeOn(AndroidSchedulers.mainThread())
                .doOnNext(new Action1<String>() {
                    @Override
                    public void call(String s) {
                        if (s.length() == 5) {
                            setBackground("56abe4", 0);
                            editTextRGB.setText("");
                        }
                        if (!colors.isEmpty()) {
                            colors.clear();
                            adapter.notifyDataSetChanged();
                        }

                    }
                })
                .filter(new Func1<String, Boolean>() {
                    @Override
                    public Boolean call(String s) {
                        return s.length() > 5;
                    }
                })
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1<String>() {
                    @Override
                    public void call(String s) {

                        setBackground(s, 0);
//                        addColorAdapter(s);
                        changeToRGB(s);

                    }
                    })

改变背景颜色(有个过渡效果)

/**
     * @param color
     * @param mark  0:HEX 1:RGB
     */
 public void setBackground(String color, int mark) {
        int i = 0;
        ValueAnimator paramInteger;
        Drawable localDrawable = this.relativeLayout.getBackground();
        if ((localDrawable instanceof ColorDrawable))
            i = ((ColorDrawable) localDrawable).getColor();

        if (mark == 0) {
            paramInteger = ValueAnimator.ofObject(new ArgbEvaluator(), i, Color
                    .parseColor("#" + color));
        } else {
            paramInteger = ValueAnimator.ofObject(new ArgbEvaluator(), i, mark);
        }


        paramInteger.setDuration(500L);
        paramInteger.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                                           public void onAnimationUpdate(ValueAnimator paramAnonymousValueAnimator) {
                                               relativeLayout.setBackgroundColor((Integer)
                                                       paramAnonymousValueAnimator.getAnimatedValue());
                                           }
                                       }

        );
        paramInteger.start();
    }

将 16 进制转化成 RGB

private void changeToRGB(String s) {
        int red = Integer.parseInt(String.valueOf(s.charAt(0)) + s.charAt(1), 16);
        int green = Integer.parseInt(String.valueOf(s.charAt(2)) + s.charAt(3), 16);
        int blue = Integer.parseInt(String.valueOf(s.charAt(4)) + s.charAt(5), 16);

        Log.d(TAG, red + " " + green + " " + blue);
        editTextRGB.setText("(" + red + "," + green + "," + blue + ")");

    }

Todo&Issues

截图

9751 次点击
所在节点    Android
7 条回复
master13
2016-01-21 11:31:29 +08:00
所以这个项目叫“蓝屏的 gay ,好喝的 gay ”?
wingyiu
2016-01-21 11:34:57 +08:00
函数式编程啊
xcc3641
2016-01-21 12:27:03 +08:00
@wingyiu 是的
xcc3641
2016-01-21 12:27:23 +08:00
@master13 哈哈 亮
anthonyeef
2016-01-21 12:39:10 +08:00
我发现 TODO & Issue 里的那些钩可以随意打上 & 取消……

xcc3641
2016-01-21 13:10:06 +08:00
@anthonyeef markdown 里的~我也不知道为什么其他人也可以哈哈,但是你打了好像没有其他影响。哈哈
( ´_ゝ`)
cheng4741
2016-01-22 13:36:22 +08:00
@anthonyeef markdown 渲染成 html 后都可以打勾

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/252282

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX