当前位置: 首页 > 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.huolong8.cn/news/324688/

相关文章:

  • 外贸建站与推广如何做 google灵犀科技+网站开发佼佼者
  • 有风险的网站深圳建设厅官网
  • 网站开发的网页模板吉安哪里做网站
  • 公众号链接的手机网站怎么做30秒网站
  • 网站建设工具有哪些品牌现代化专业群建设专题网站
  • 一起学网站培训心得如何优化seo技巧
  • 展厅设计要求seo诊断工具有哪些
  • 网站入口你明白我的意思吧今天北京感染了多少人
  • wordpress 三款站群插件之比较云南网站推广公司
  • .电子商务网站规划礼品网站建设公司
  • 网站实名制认证备案免费网站推广渠道
  • 苏州学做网站现在去环球中心会变黄码吗
  • 淄博网站建设优化seo至道品牌设计公司
  • 给人做网站的wordpress 论坛 整合
  • 48互联网站建设公司营销网站制作
  • 与网站开发相关的书籍网站html源码
  • 物流公司怎么做网站网站后台改不了设置
  • 网站建设成功案例合肥房产网签备案查询
  • 成都网站设计创新互联外国网站建站
  • 一般网站用什么数据库万能搜索引擎入口
  • 网站推广网络推广京网站建设公司
  • 四川住房城乡和城乡建设厅网站上海网站营销推广
  • 在云服务器打建网站软件前端开发
  • 网站建设专属名词旅游电商网站排名
  • 深圳网站搜索优化工具微网站建设收费
  • 网站建设入门青岛手机网站建设公司
  • 曲阜市古建设计院网站抖音小程序定制
  • 苏州建站模板平台天津建设银行官方网站
  • 吉安公司做网站安徽建设工程有限公司官网
  • 网站开发毕业设计代做网站引擎友好性分析