当前位置: 首页 > news >正文

网站 技术支持鹤壁建设企业网站公司

网站 技术支持,鹤壁建设企业网站公司,线上推广软件,工作室建设方案本节引言#xff1a; 今天给大家介绍的Android基本控件中的两个按钮控件#xff0c;Button普通按钮和ImageButton图像按钮#xff1b; 其实ImageButton和Button的用法基本类似#xff0c;至于与图片相关的则和后面ImageView相同#xff0c;所以本节 只对Button进行讲解 今天给大家介绍的Android基本控件中的两个按钮控件Button普通按钮和ImageButton图像按钮 其实ImageButton和Button的用法基本类似至于与图片相关的则和后面ImageView相同所以本节 只对Button进行讲解另外Button是TextView的子类所以TextView上很多属性也可以应用到Button 上我们实际开发中对于Button的无非是对按钮的几个状态做相应的操作比如按钮按下的时候 用一种颜色弹起又一种颜色或者按钮不可用的时候一种颜色这样上述实现无非是通过 StateListDrawable这种Drawable资源来实现即编写一个drawable的资源文件就说这么多 直接开始本节内容~ 1.StateListDrawable简介 StateListDrawable是Drawable资源的一种可以根据不同的状态设置不同的图片效果关键节点 selector 我们只需要将Button的background属性设置为该drawable资源即可轻松实现按下 按钮时不同的按钮颜色或背景 我们可以设置的属性 drawable:引用的Drawable位图,我们可以把他放到最前面,就表示组件的正常状态~state_focused:是否获得焦点state_window_focused:是否获得窗口焦点state_enabled:控件是否可用state_checkable:控件可否被勾选,eg:checkboxstate_checked:控件是否被勾选state_selected:控件是否被选择,针对有滚轮的情况state_pressed:控件是否被按下state_active:控件是否处于活动状态,eg:slidingTabstate_single:控件包含多个子控件时,确定是否只显示一个子控件state_first:控件包含多个子控件时,确定第一个子控件是否处于显示状态state_middle:控件包含多个子控件时,确定中间一个子控件是否处于显示状态state_last:控件包含多个子控件时,确定最后一个子控件是否处于显示状态 2.实现按钮的按下效果 好的先准备三个图片背景一般我们为了避免按钮拉伸变形都会使用.9.png作为按钮的drawable 先来看下 运行效果图 代码实现 ?xml version1.0 encodingutf-8? selector xmlns:androidhttp://schemas.android.com/apk/res/androiditem android:state_pressedtrue android:drawabledrawable/ic_course_bg_fen/item android:state_enabledfalse android:drawabledrawable/ic_course_bg_pressed/item android:drawabledrawable/ic_course_bg_cheng/ /selector布局文件:activity_main.xml Buttonandroid:idid/btnOneandroid:layout_widthmatch_parentandroid:layout_height64dpandroid:backgrounddrawable/btn_bg1android:text按钮/Buttonandroid:idid/btnTwoandroid:layout_widthmatch_parentandroid:layout_height64dpandroid:text按钮不可用/MainActivity.java public class MainActivity extends Activity {private Button btnOne,btnTwo;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btnOne (Button) findViewById(R.id.btnOne);btnTwo (Button) findViewById(R.id.btnTwo);btnTwo.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {if(btnTwo.getText().toString().equals(按钮不可用)){btnOne.setEnabled(false);btnTwo.setText(按钮可用);}else{btnOne.setEnabled(true);btnTwo.setText(按钮不可用);}}});}}3.使用颜色值绘制圆角按钮 很多时候我们不一定会有美工是吧或者我们不会PS或毁图秀秀又或者我们懒不想自己去做图 这个时候我们可以自己写代码来作为按钮背景想要什么颜色就什么颜色下面我们来定制个圆角的 的按钮背景~这里涉及到另一个drawable资源:ShapeDrawable这里不详细讲后面会详细介绍每一个 drawable~这里会用就好只是EditText修改下Background属性而已这里只贴drawable资源 先看下效果图 bbuton_danger_rounded.xml ?xml version1.0 encodingutf-8? selector xmlns:androidhttp://schemas.android.com/apk/res/androiditem android:state_pressedtrueshapesolid android:colorcolor/bbutton_danger_pressed /stroke android:width1dp android:colorcolor/bbutton_danger_edge /corners android:radiusdimen/bbuton_rounded_corner_radius//shape/itemitem android:state_enabledfalseshapesolid android:colorcolor/bbutton_danger_disabled /stroke android:width1dp android:colorcolor/bbutton_danger_disabled_edge /corners android:radiusdimen/bbuton_rounded_corner_radius//shape/itemitemshapesolid android:colorcolor/bbutton_danger /stroke android:width1dp android:colorcolor/bbutton_danger_edge /corners android:radiusdimen/bbuton_rounded_corner_radius//shape/item/selectorcolor.xml: ?xml version1.0 encodingutf-8? resourcescolor namebbutton_danger_pressed#ffd2322d/colorcolor namebbutton_danger_edge#ffd43f3a/colorcolor namebbutton_danger_disabled#a5d9534f/colorcolor namebbutton_danger_disabled_edge#a5d43f3a/colorcolor namebbutton_danger#ffd9534f/colorcolor nametext_font_white#FFFFFF/color /resourcesdimens.xml: dimen namebbuton_rounded_corner_radius5dp/dimen4.实现Material Design水波效果的Button 如果你的Android手机是5.0以上的系统相信对下面这种按钮点击效果并不会陌生 实现效果图 快的那个是按下后的效果慢的是长按后的效果 实现逻辑 1.我们继承ImageButton当然你可以换成Button或者View,这里笔者想把龟放到中间才继承ImageButton 2.首先创建两个Paint(画笔)对象一个绘制底部背景颜色一个绘制波纹扩散的 3.接着计算最大半径开始半径每隔一段时间递增一次直到等于最大半径然后重置状态 PS:大概的核心刚学可能对自定义View感到陌生没事这里了解下即可以后我们会讲当然 你可以自己扣扣注释还是蛮详细的~ 实现代码 自定义ImageButtonMyButton.java package demo.com.jay.buttondemo;import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.os.SystemClock; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.ViewConfiguration; import android.widget.ImageButton;/*** Created by coder-pig on 2015/7/16 0016.*/ public class MyButton extends ImageButton {private static final int INVALIDATE_DURATION 15; //每次刷新的时间间隔private static int DIFFUSE_GAP 10; //扩散半径增量private static int TAP_TIMEOUT; //判断点击和长按的时间private int viewWidth, viewHeight; //控件宽高private int pointX, pointY; //控件原点坐标左上角private int maxRadio; //扩散的最大半径private int shaderRadio; //扩散的半径private Paint bottomPaint, colorPaint; //画笔:背景和水波纹private boolean isPushButton; //记录是否按钮被按下private int eventX, eventY; //触摸位置的X,Y坐标private long downTime 0; //按下的时间public MyButton(Context context, AttributeSet attrs) {super(context, attrs);initPaint();TAP_TIMEOUT ViewConfiguration.getLongPressTimeout();}/** 初始化画笔* */private void initPaint() {colorPaint new Paint();bottomPaint new Paint();colorPaint.setColor(getResources().getColor(R.color.reveal_color));bottomPaint.setColor(getResources().getColor(R.color.bottom_color));}Overridepublic boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:if (downTime 0) downTime SystemClock.elapsedRealtime();eventX (int) event.getX();eventY (int) event.getY();//计算最大半径countMaxRadio();isPushButton true;postInvalidateDelayed(INVALIDATE_DURATION);break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_CANCEL:if(SystemClock.elapsedRealtime() - downTime TAP_TIMEOUT){DIFFUSE_GAP 30;postInvalidate();}else{clearData();}break;}return super.onTouchEvent(event);}Overrideprotected void dispatchDraw(Canvas canvas) {super.dispatchDraw(canvas);if(!isPushButton) return; //如果按钮没有被按下则返回//绘制按下后的整个背景canvas.drawRect(pointX, pointY, pointX viewWidth, pointY viewHeight, bottomPaint);canvas.save();//绘制扩散圆形背景canvas.clipRect(pointX, pointY, pointX viewWidth, pointY viewHeight);canvas.drawCircle(eventX, eventY, shaderRadio, colorPaint);canvas.restore();//直到半径等于最大半径if(shaderRadio maxRadio){postInvalidateDelayed(INVALIDATE_DURATION,pointX, pointY, pointX viewWidth, pointY viewHeight);shaderRadio DIFFUSE_GAP;}else{clearData();}}/** 计算最大半径的方法* */private void countMaxRadio() {if (viewWidth viewHeight) {if (eventX viewWidth / 2) {maxRadio viewWidth - eventX;} else {maxRadio viewWidth / 2 eventX;}} else {if (eventY viewHeight / 2) {maxRadio viewHeight - eventY;} else {maxRadio viewHeight / 2 eventY;}}}/** 重置数据的方法* */private void clearData(){downTime 0;DIFFUSE_GAP 10;isPushButton false;shaderRadio 0;postInvalidate();}Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);this.viewWidth w;this.viewHeight h;} }code pbcolor.xml/b/p pre ?xml version1.0 encodingutf-8? resourcescolor namereveal_color#FFFFFF/colorcolor namebottom_color#3086E4/colorcolor namebottom_bg#40BAF8/color /resources activity_main.xmlRelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivitydemo.com.jay.buttondemo.MyButtonandroid:idid/myBtnandroid:layout_widthmatch_parentandroid:layout_height64dpandroid:srcmipmap/ic_tur_iconandroid:backgroundcolor/bottom_bgandroid:scaleTypecenter//RelativeLayout
http://www.zqtcl.cn/news/392199/

相关文章:

  • 望城建设局网站网站建设与维护可行性报告
  • 免费php网站模板下载手机端网站如何优化
  • 自己做的网站 打开了没有图片注册工程公司名称大全
  • 做网站的团队业绩怎么写WordPress 去掉副标题
  • 学校网页网站模板wordpress更换域名还是之前链接
  • 市面上有什么搭建网站工作室石家庄做网站和宣传的
  • 视频图站主题 wordpress快速收录提交入口
  • 外贸视频网站投资理财网站开发
  • 专业建设网站多少钱铜川网站seo
  • 海外网站seo优化wordpress的代码逻辑
  • 怎样帮别人做网站哪有网站给光头强做面
  • 聊城营销网站建设价格网站设计论文框架
  • 成都哪家网站建设做得好介绍自己的家乡遵义网站建设
  • 阳春新农村建设网站欣赏网站
  • 永久免费企业网站建设杭州个人做网站
  • 博罗中山网站建设做网站的软件 知乎
  • 广州网站开发广州亦客网络解答wordpress换空间要改
  • 丽水企业网站开发企业erp系统是什么软件
  • 好看的网站设计个人发布信息的免费平台
  • 电商网站业务流程linux上传中文wordpress
  • 广州网站定制商家外贸seo网站推广
  • 许昌大成建设集团网站wordpress自动博客插件
  • wordpress网站地图插件中国来料加工网
  • 黑龙江做网站的公司上海企业网站建设公
  • 做公众号时图片的网站安徽建设工程造价信息网站
  • 网站开发的在淘宝上是什么类目深圳做网站的大公司
  • 手机网站 html5信阳哪里做网站
  • 网站服务器多少钱一月wordpress 博客宠物
  • 怎么制作网站游戏辽宁建设工程网
  • 网站开发好还要空间吗网站支付链接怎么做的