Android 仿照魅族下载按钮

2018-03-30  本文已影响0人  XINHAO_HAN

今天看了一下魅族商店,感觉那个下载按钮还挺好玩的,所以仿照了一下,具体效果图:

该作品还不太完善,这几天公司也有事,所以有兴趣的哥们可以改改

1522398417907mz按钮.gif

使用方法:


  xhButton = findViewById(R.id.xhButton);
        xhButton.setXHButtonListener(new XHButton.XHButtonListener() {
            @Override
            public void start() {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        while (true) {

                            //模拟数据下载
                            try {
                                Thread.sleep(30);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }

                            xhButton.setIndex(index);

                            index++;
                            if (xhButton.getClose()) {
                                break;
                            }

                        }
                    }
                }).start();
            }

            @Override
            public void index(int position) {

            }


            @Override
            public void end() {
                index = 0;
                Log.e("---", "end: " + "结束了" );

            }
            /**
             * 该方法不准确,建议不要使用
             */
            @Override
            public void pause() {
                Log.e("---", "end: " + "运行状态" );
            }
        });

实现思路

  先智能适配屏幕大小,如果是WRAP_CONTENT就判断LayoutParams的宽是不是 -2
  匹配方法:
  WRAP_CONTENT = -2;
  MATCH_PARENT =  -1;

  如果是包裹[WRAP_CONTENT ],那就自己具体设置一下最小的View宽高度
  如果是撑开[MATCH_PARENT ],那就设置全屏

  全屏具体实现为下:
WindowManager systemService = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

        DisplayMetrics displayMetrics = new DisplayMetrics();
        systemService.getDefaultDisplay().getRealMetrics(displayMetrics);
        viewW = displayMetrics.widthPixels;
        viewH = displayMetrics.heightPixels;

画矩形:

 int t = (int) ((viewH / 2) * 0.5);
                    int b = (int) ((viewH / 2) * 0.5) + (viewH / 2);

                    int mid = (viewH / 2) - ((viewH / 2) - t);

                    int l = ((viewW / 2) - mid) - moveInt; //这块是变动的

                    int r = ((viewW / 2) + mid) + moveInt;//这块是变动的

                    rectF.set(l, t, r, b);

然后使得矩形的左边和右边相互加减就能做出美丽的动画啦~

下载地址:https://github.com/hanxinhao000/xhButton

上一篇 下一篇

猜你喜欢

热点阅读