天下之事常成于困约,而败于奢靡。这篇文章主要讲述android 自定义Button,抛弃写shape文件相关的知识,希望能为你提供帮助。
标签: android 控件
自定义
2017年05月27日 17:52:13 611人阅读 评论(0) 收藏 举报
文章图片
分类: 作者同类文章 X
目录(?)[+]
- 代码块
- 这样就完成了很简单是吧 3 3
w(?Д?)ww(?Д?)w,所以为了以后的开发,我们就简单的封装下。
- 在日常的android开发当中,按钮是必不可少控件。但是如果要实现下面的效果恐怕写shape文件都要写的头晕
文章图片
代码块
很简单我们通过GradientDrawable 类就可以实现啦。
public class ButtonStyle extends Button {GradientDrawable gradientDrawable;
//按下颜色
private int pressedColor=Color.GRAY;
//当前颜色
private int normalColor=Color.RED;
//当前圆角
private float currCorner=5;
//四边边框宽度
private float strokeWidth=0;
//四边边框颜色
private int strokeColor;
boolean isTouchPass = true;
public ButtonStyle(Context context) {
this(context, null);
}public ButtonStyle(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}public ButtonStyle(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}private void init() {
setGravity(Gravity.CENTER);
gradientDrawable = new GradientDrawable();
//设置按钮颜色
gradientDrawable.setColor(normalColor);
//设置按钮的边框宽度
gradientDrawable.setStroke((int) strokeWidth, strokeColor);
//设置按钮圆角大小
gradientDrawable.setCornerRadius(currCorner);
//设置按钮点击之后的颜色更换
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent event) {
setBackgroundDrawable(gradientDrawable);
return setColor(event.getAction());
}
});
setBackgroundDrawable(gradientDrawable);
}//处理按钮点击事件无效
@Override
public void setOnClickListener(OnClickListener l) {
super.setOnClickListener(l);
isTouchPass = false;
}//处理按下去的颜色
public boolean setColor(int action) {
switch (action) {
case MotionEvent.ACTION_DOWN:
gradientDrawable.setColor(pressedColor);
break;
case MotionEvent.ACTION_UP:
gradientDrawable.setColor(normalColor);
break;
case MotionEvent.ACTION_CANCEL:
gradientDrawable.setColor(normalColor);
break;
}return isTouchPass;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
Dome –> https://github.com/laishujie/ButtonStyle
阅读全文
- 上一篇 为什么你要重写View的onMeasure()?
- 下一篇 Android常见的上滑渐变显示标题栏
目录(?)[+]
文章图片
前言*
~( ̄0 ̄)/, 最近发现很多的APP都有标题渐变的效果,于是就想着写一篇文章记录记录。
废话少说,直接上动图 ,看看市面上常见的上滑渐变的标题栏。
文章图片
小米商场和淘宝电影
文章图片
文章图片
分析
相信大家也有过这种需求.其实这很简单。我们可以通过这个
控件.setAlpha(percent); 方法去达到上图的效果。
参数范围是 0~1
还有个方法是
setBackgroundColor(Color.argb( alpha, red, green, bule));
参数也很简单
alpha 透明度 0~255
其他的值就是RGB值。如果不知道直接的RGB值怎么拿。可以通过一些小工具获取
文章图片
演示
文章图片
可以通过上图查看其值的变化。
总结。无论怎样其中的思想就是监听滑动。然后通过api去改变其透明度。
setBackgroundColor(Color.argb(alpha,red,green,bule));
setAlpha(percent);
【android 自定义Button,抛弃写shape文件】两者之间选择api一个使用即可。
接下来靠大家自己去实践才会更清楚哦。正所谓 如马克思所说: 实践才是检验真理的唯一标准。啧啧。【完】
Demo
- 上一篇 android 自定义Button,抛弃写shape文件
- 下一篇 Dagger2的入坑指南[捂脸][详]!
推荐阅读
- [Android Pro]深入理解函数的调用过程——栈帧
- 安卓开发打造闪光控件效果
- Android面试收集录 电话短信和联系人多媒体技术
- Android Studio 第六十期 - Android推流直播(斗鱼部分页面功能)
- android studio环境搭建笔记
- [Android Pro]ESP和EBP 栈顶指针和栈底指针
- Android Studio 第六十一期 - Android ToastUtil
- UWP Jenkins + NuGet + MSBuild 手把手教你做自动UWP Build 和 App store包
- 小程序会取代Native App吗()