7月学习总结

一、数字跳动的两种实现方式

1.仿手机支付宝余额宝跳动方式

仿余额宝数字跳动是通过ValueAnimator实现的

ValueAnimator提供可以随时间变化的数值

private void run(int endNumber){
    final int length = (endNumber + "").length();
    ValueAnimator valueAnimator = ValueAnimator.ofInt(0, endNumber);
    valueAnimator.setDuration(1200);
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            textView.setText(valueAnimator.getAnimatedValue().toString());
        }
    });
    valueAnimator.start();
}
 

2.简仿密码箱开锁跳动方式

第二种目前还没有想到比较好的实现方式,个人觉得代码还可以优化

public void runWithDelay() {
        for (int i = 0; i < length; i++) {
            showNum[i] = 0;
            lastNum[i] = Integer.parseInt(lastChar[i] + "");
        }

        //位数变化
        new Thread() {
            @Override
            public void run() {
                try {
                    int i = 0;
                    while (i < length) {
                        if(i != 0) {
                            Thread.sleep(gap);
                        }
<span style="white-space:pre">			</span>//每一位数字的变化
                        new Thread(String.valueOf(i)) {
                            @Override
                            public void run() {
                                try {
                                    int i = Integer.parseInt(this.getName());
                                    showNum[i] = (lastNum[i] + 10 - roll) % 10;
                                    while (showNum[i] != lastNum[i]) {
                                        //for (int j  = 0; j < LENGTH; j++){
                                        showNum[i] = (showNum[i] + 1) % 10;
                                        //System.out.println("iii" + i + ' ' + showNum[i]);
                                        String showStr = "";
                                        for (int k = 0; k < length; k++) {
                                            showStr += String.valueOf(showNum[k]);// + showStr;
                                            //System.out.println("str " + showStr);
                                        }

                                        Message msg = new Message();
                                        msg.what = UPDATE;
                                        msg.obj = showStr;
                                        handler.sendMessage(msg);
                                        Thread.sleep(duration / (length - 1) / (roll - 1));
                                    }
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
                        }.start();
                        i++;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }.start();
<span style="white-space:pre">	</span>//改变显示值
        handler = new Handler() {
            @Override
            public void handleMessage(Message message) {
                if (message.what == UPDATE) {
                    textView.setText(String.valueOf(message.obj));
                }
            }
        };
    }


二、画UI时遇到的问题

EditText中添加小图标用android:drawableLeft

图片轮播使用ViewPager实现

点击改变背景使用selector

Material和AppCombat两个Theme的button有阴影动画,没找着去除的地方,

Holo的Actionbar无法调节背景色(或者是我没找着)

AppCombat和Material的Up按钮相同,和Holo的不同

资源文件要放到正确分辨率的文件夹,否则会出现奇怪的显示效果

关于颜色设置见下图

enter image description here

三、阅读代码时的发现

Volley(待续)

ViewPager(待续)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值