标签: android 控件  自定义

2017年05月27日 17:52:13 611人阅读 评论(0) 收藏 举报
分类:
自定义View(2)

版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/a8688555/article/details/72783489

 
 

前言

  • 在日常的android开发当中,按钮是必不可少控件。但是如果要实现下面的效果恐怕写shape文件都要写的头晕

w(゚Д゚)ww(゚Д゚)w,所以为了以后的开发,我们就简单的封装下。

代码块

很简单我们通过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

这样就完成了!很简单是吧 (〃` 3′〃) (〃` 3′〃)

具体的可以看我自己封装的能给个start那是最好啦 23333

Dome –> https://github.com/laishujie/ButtonStyle

版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/a8688555/article/details/76904590

 

目录(?)[+]

 

前言*

~( ̄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);

两者之间选择api一个使用即可。

接下来靠大家自己去实践才会更清楚哦。正所谓 如马克思所说: 实践才是检验真理的唯一标准。啧啧。【完】

Demo

android 自定义Button,抛弃写shape文件的更多相关文章

  1. Android 自定义View及其在布局文件中的使用示例(三):结合Android 4.4.2_r1源码分析onMeasure过程

    转载请注明出处 http://www.cnblogs.com/crashmaker/p/3549365.html From crash_coder linguowu linguowu0622@gami ...

  2. Android 自定义View及其在布局文件中的使用示例(二)

    转载请注明出处 http://www.cnblogs.com/crashmaker/p/3530213.html From crash_coder linguowu linguowu0622@gami ...

  3. Android 自定义Button按钮显示样式(正常、按下、获取焦点)

    现在的用户对APP的外观看得很重要,如果APP内所有元件都用Android默认样式写,估计下面评论里就有一堆在骂UI丑的.今天学习自定义Button按钮样式.Button样式修改的是Button的背景 ...

  4. android自定义camera以及uri和文件路径之间的转换

    相对直接调用系统的camera,这种方法使用得相对还少一些.根据api文档,步骤如下: 定义一个预览类 可以参照<android高薪之路>这本书上面,有这种方法的一种完整实现 而对应的ac ...

  5. Android 自定义View及其在布局文件中的使用示例

    前言: 尽管Android已经为我们提供了一套丰富的控件,如:Button,ImageView,TextView,EditText等众多控件,但是,有时候在项目开发过程中,还是需要开发者自定义一些需要 ...

  6. android自定义样式大全:shape,selector,layer-list,style,动画全部内容

    原文:http://keeganlee.me/post/android/20150830 以下摘取了部分内容: shape 一般用shape定义的xml文件存放在drawable目录下,若项目没有该目 ...

  7. Android自定义Button的“款式”

    要想让你的button呈现出一种不一样的外观,一般会采取以下两种形式 采用selector里面加图片的方式 采用selector用shape进行代码控制的方式 对第一种方式而言,只需要注意好" ...

  8. Android自定义Button按钮显示样式

    关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法. 首先android的selector是在 ...

  9. Android自定义Button字体颜色和背景颜色

    http://blog.csdn.net/breeze666/article/details/7747649

随机推荐

  1. Oracle10gXE和Oracle SQL Developer本地安装配置

    第1部分 Oracle10gXE安装 Oracle10gXE安装的安装几乎是一路next就可以安装好:但是中间设置的用户名.密码.口令.SID等信息一定记住,后面需要使用. 第2部分 Oracle S ...

  2. Coursera, Big Data 1, Introduction (week 3)

    什么是分布式文件系统?为什么需要分布式文件系统? 如果文件系统可以管理用网络连接的很多个存储单元,叫分布式文件系统. 分布式文件系统提供了数据可扩展性,容错性,高并发. 这些是传统文件系统不具有的. ...

  3. 干货分享:让你分分钟学会 javascript 闭包(转)

    闭包,是javascript中独有的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述,直 ...

  4. Lua中的表达式

    [算术操作符] Lua支持常规的算术操作符有:”+”(加法),”-“(减法),”*”(乘法),”/”(除法),”^”(指数),”%”(取模),一元的”-“(负号).所有的这些操作符都用于实数.例如:x ...

  5. windows生成库文件

    库文件的生成,包括静态库lib与动态库dll,需要改变编译输出的生成命令,可以一开始生成对应的库工程(或者在工程属性->常规->配置类型更改). 附基本对应命令: gcc –c -L .o ...

  6. Python- redis缓存 可达到瞬间并发量10W+

    redis是什么? mysql是一个软件,帮助开发者对一台机器的硬盘进行操作. redis是一个软件,帮助开发者对一台机器的内存进行操作. redis缓存 可达到瞬间并发量10W+ 高并发架构系列:R ...

  7. Google Android SDK开发范例大全笔记 二

    网络设备管理相关相关 代码地址 1 WifiManager LocationManager分别控制 wifi及GPS WifiManager 判断网络状态 ,LocationManager判断定位状态 ...

  8. javascript/jquery获取url地址栏参数的方法

    简洁jq方法获取url地址栏的参数 function getQueryVariable(variable){ var query = window.location.search.substring( ...

  9. 经典合集 - WP8.1数据源

    [内容说明:] 这里是一个页面类型的数据源,在开发WP应用程序中,因为目前没有数据库服务器等网络资源,突发奇想,通过博客园提供的WCF接口访问该博文地址获取文章内容,在应用程序中使用正则表达式解析并转 ...

  10. 学习笔记: MD5/DES/RSA三类加密,SSL协议解析

    1. 不对称可逆加密的 的2种用法 (1)保证信息不被篡改 (2) 保证信息只能被我看到 2. CA证书的基本原理 流程如下:  百度公司 向CA机构报备 持有者姓名, 有效期, 要发布的公钥 , 扩 ...