New UI-设置view的可用与不可用

New UI-设置view的可用与不可用

 ——转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途!


小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的

力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文

更加的详尽,帮到更多的人,O(∩_∩)O谢谢!

小猪Android开发交流群:小猪Android开发交流群群号:421858269

新Android UI实例大全目录:http://blog.youkuaiyun.com/coder_pig/article/details/42145907


本节引言:

和上一节控制View是否可见类似,控制组件是否可用也是比较常用的一个属性,

比如用的最多的就是发送短信验证码的,比如注册绑定手机的时候发送验证码,为了

防止用户重复提交,我们通常会在用户点击获取验证码按钮后,将按钮设置为不可用,

即用户点击不了,然后过了60s后又按钮又可用!先说下简单用法,然后就写下实现

这个业务的简单demo!



1)XML中设置:

android:enabled="false"    //设置组件为不可用状态

android:enabled="true"     //设置组件为可用状态



2)Java代码中设置:

以TextView tv为例:

tv.setEnabled(true);       //设置组件为可用状态

tv.setEnabled(false);     //设置组件为不可用状态



3)使用实例:

防止用户点击按钮多次提交请求

效果图:


如图,点击按钮后按钮变成不可用状态,过了10s后又可以进行点击,时间可以修改代码

中的time的值,原理很简单,利用Timer定时器与Handler结合而已,就不详细解析了!

贴下代码:

activity_main.xml:

[html]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:layout_margin="10dp"  
  6.     android:orientation="horizontal"  
  7.     tools:context="com.jay.example.enabledemo.MainActivity" >  
  8.   
  9.     <Button  
  10.         android:id="@+id/btnGetNum"  
  11.         android:layout_width="wrap_content"  
  12.         android:layout_height="wrap_content"  
  13.         android:background="#FF3300"  
  14.         android:padding="5dp"  
  15.         android:text="获取手机验证码" />  
  16.   
  17. </LinearLayout>  

MainActivity.java:

[java]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.jay.example.enabledemo;  
  2.   
  3. import java.util.Timer;  
  4. import java.util.TimerTask;  
  5.   
  6. import android.app.Activity;  
  7. import android.os.Bundle;  
  8. import android.os.Handler;  
  9. import android.view.View;  
  10. import android.view.View.OnClickListener;  
  11. import android.widget.Button;  
  12. import android.os.Message;  
  13.   
  14.   
  15.   
  16. public class MainActivity extends Activity {  
  17.   
  18.     private Button btnGetNum;  
  19.     private Timer timer;  
  20.     private final int ORANGE = 0xFFFF6800;  
  21.     private final int GRAY = 0xFFCCCCCC;  
  22.     private Handler handler = new Handler()  
  23.     {  
  24.         public void handleMessage(Message msg)   
  25.         {  
  26.             super.handleMessage(msg);  
  27.             if(msg.what > 0)  
  28.                 {  
  29.                     btnGetNum.setBackgroundColor(GRAY);  
  30.                     btnGetNum.setText(msg.what+"秒后可再次发送验证短信");  
  31.                 }  
  32.             else  
  33.             {  
  34.                 btnGetNum.setEnabled(true);  
  35.                 btnGetNum.setBackgroundColor(ORANGE);  
  36.                 btnGetNum.setText("发送验证短信");  
  37.                 timer.cancel();  
  38.             }  
  39.         };  
  40.     };  
  41.       
  42.     @Override  
  43.     protected void onCreate(Bundle savedInstanceState) {  
  44.         super.onCreate(savedInstanceState);  
  45.         setContentView(R.layout.activity_main);  
  46.           
  47.         btnGetNum = (Button) findViewById(R.id.btnGetNum);  
  48.         btnGetNum.setOnClickListener(new OnClickListener() {              
  49.             @Override  
  50.             public void onClick(View v) {  
  51.                 btnGetNum.setEnabled(false);  
  52.                 timer = new Timer();  
  53.                 timer.schedule(new TimerTask() {  
  54.                     //自己修改成需要的时间即可  
  55.                     int time = 10;  
  56.                     @Override  
  57.                     public void run() {  
  58.                         Message msg = new Message();  
  59.                         msg.what = time--;  
  60.                         handler.sendMessage(msg);  
  61.                     }  
  62.                 }, 100,1000);  
  63.             }  
  64.         });  
  65.     }  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值