java-android中使用按钮来更新UI

问题描述

android中使用按钮来更新UI
使用以下代码想实现:当点击一个按钮后要显示一个图像,两秒后这个图像又变得不可见。

button.setOnClickListener(new OnClickListener() {   public void onClick(View v) {      firstImage.setVisibility(ImageView.VISIBLE);      // delay of some sort      firstImage.setVisibility(ImageView.INVISIBLE);   }}

但是运行代码后,点击按钮,图像一直是不可见的。我是不是该用另一种方法来实现这个功能呢?使用handlers还是不对,还有什么方法呢?

解决方案

恩,你可以使用Handler的postDelayed方法来实现,且这种做法是线程安全的。
给你个例子:

private final Handler mHandler = new Handler();private final Runnable runnable = new Runnable(){    @Override    public void run()    {        firstImage.setVisibility(View.INVISIBLE);    }};// displayTime就是你要设置控件显示的时间,单位为毫秒public void showView(long displayTime){    mHandler.removeCallbacks(runnable);    firstImage.setVisibility(View.VISIBLE);    mHandler.postDelayed(runnable displayTime);}

解决方案二:
不要让你的UI线程休眠

final Handler handler = new Handler();button.setOnClickListener(new OnClickListener() {   public void onClick(View v) {      firstImage.setVisibility(ImageView.VISIBLE);      handler.postDelayed(new Runnable(){            public void run(){                 firstImage.setVisibility(ImageView.INVISIBLE);            }      } DELAY);   }}

这里你应该设置DELAY为 2000 (ms)。

解决方案三:
调用 imageView's setvisibility方法,需要使用一个 hanlder

Handler handler = new Handler();handler.post(new Runnable() {    public void run() {           image.setVisibiliy(VISIBLE);           Thread.sleep(200);           image.setVisibility(INVISIBLE);    }});
时间: 2024-08-31 11:50:44

java-android中使用按钮来更新UI的相关文章

在Android中实现Service动态更新UI界面(Service与主程序Activity之间的数据交互或控制)

案例:通过service向远程服务器发送请求,根据服务器返回的结果动态更新主程序UI界面,主程序可实时关闭或重启服务. 方案一:使用广播+Service 注册BroadcastReceiver 1.在主程序activity中注册一个BroadcastReceiver,用于接收Service发布的广播. @Override protected void onStart() {//重写onStart方法 dataReceiver = new DataReceiver(); IntentFilter

Android 中通过实现线程更新Progressdialog (对话进度条)_Android

作为开发者我们需要经常站在用户角度考虑问题,比如在应用商城下载软件时,当用户点击下载按钮,则会有下载进度提示页面出现,现在我们通过线程休眠的方式模拟下载进度更新的演示,如图(这里为了截图方便设置对话进度条位于屏幕上方): layout界面代码(仅部署一个按钮): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.androi

Android中Activity销毁而绘制UI的子线程未销毁的解决方法

如果我们开发一个需要播放音频的应用,我们都知道播放音频要用到MediaPlayer类,我这里,不需要开启Service,就在本Activity播放音频,当Activity销毁的时候,音频便结束 但是有一个重点,需要即时的变化当前播放的时间 我的思路是,开启一个线程,计算当前音频的剩余播放时间,如果>0 则用Handler循环发送一个消息来更改时间UI Thread tPlay ; tPlay = new Thread(new Runnable() {     @Override     publ

Android 中通过实现线程更新Progressdialog (对话进度条)

作为开发者我们需要经常站在用户角度考虑问题,比如在应用商城下载软件时,当用户点击下载按钮,则会有下载进度提示页面出现,现在我们通过线程休眠的方式模拟下载进度更新的演示,如图(这里为了截图方便设置对话进度条位于屏幕上方): layout界面代码(仅部署一个按钮): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.androi

异常处理:android中添加按钮事件,出现NullPointerException

问题描述 异常处理:android中添加按钮事件,出现NullPointerException 解决方案 在maincsactivity的oncreate的72行找,有没有对象为null 解决方案二: 对象为空,要么你的按钮对象还没初始化,要么点击代码里有空对象,你调试一下便知 解决方案三: 空指针异常,没什么难找的,Debug一下即可很快找到: 解决方案四: 空指针异常,按钮对象没有初始化 解决方案五: 可能你声明了一个View,但是你没有findViewById,或者findViewById

android中sqlite数据库的更新问题

问题描述 android中sqlite数据库的更新问题 当我们的apk中的数据库更新的时候,我们会在onUpgrade()中修改版本号,这样用户 升级的时候就可以更新数据库了,但是如果此时新的用户安装此应用的话,那不是还是以前的旧版本的数据库(因为第一次安装只会执行onCreate()),这不是有问题吗,如果想让新用户也用新版本的数据库,而且老用户的数据不会丢失怎么办呢??? 解决方案 继承SQLiteOpenHelper后需要在构造方法里指定当前db的版本号super(context, DAT

Android中给按钮同时设置背景和圆角示例代码_Android

前言 最近在做按钮的时候遇到在给按钮设置一张图片作为背景的同时还要自己定义圆角,最简单的做法就是直接切张圆角图作为按钮就可以了,但是如果不这样该怎么办呢,看代码: 下面来看效果图 一.先建一个圆角的shape文件: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android">

如何给Android中的按钮添加图片功能

在layout中建一个my_login.xml文件 代码如下 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="

Android中给按钮同时设置背景和圆角示例代码

前言 最近在做按钮的时候遇到在给按钮设置一张图片作为背景的同时还要自己定义圆角,最简单的做法就是直接切张圆角图作为按钮就可以了,但是如果不这样该怎么办呢,看代码: 下面来看效果图 一.先建一个圆角的shape文件: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android">