今天看了一下魅族商店,感觉那个下载按钮还挺好玩的,所以仿照了一下,具体效果图:
该作品还不太完善,这几天公司也有事,所以有兴趣的哥们可以改改
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);
然后使得矩形的左边和右边相互加减就能做出美丽的动画啦~
网友评论