Handler制作简单相册查看器的实例代码

Handler类简介

在Android平台中,新启动的线程是无法访问Activity里的Widget的,当然也不能将运行状态外送出来,这就需要有Handler机制进行信息的传递了,Handler类位于android.os包下,主要的功能是完成Activity的Widget与应用程序中线程之间的交互。

开发带有Handler类的程序步骤如下:

1. 在Activity或Activity的Widget中开发Handler类的对象,并重写handlerMessage方法。

2. 在新启动的线程中调用sendEmptyMessage或者sendMessage方法并向Handler发送消息。

3. Handler类的对象用handlerMessage方法接受消息,然后根据消息的不同执行不同的操作。

Handler使用案例(简单相册查看器)

编写布局文件。activity_handler_sample.xml的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:gravity="center">
  <ImageView
    android:id="@+id/myImageView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"/>
</LinearLayout>

新建MyTread.java文件,代码如下:

package com.example.sample_9_9;
public class MyTread extends Thread{    //继承自线程类
  HandlerSampleActivity activity;     //activity引用
  int what = 1;              //发送消息的what值
  public MyTread(HandlerSampleActivity activity){ //构造器
    this.activity = activity;    //得到activity的引用
  }
  @Override
  public void run(){
    while(true){       //循环
      activity.myHandler.sendEmptyMessage((what++)%4);
      //发送消息,%4是因为只有四张图进行轮换
      try{
        Thread.sleep(2000);    //睡眠两秒钟
      }
      catch (Exception e){     //捕获异常
        e.printStackTrace();   //打印异常
      }
    }
  }
}

HandlerSampleActivity.java文件代码如下:

package com.example.sample_9_9;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
public class HandlerSampleActivity extends AppCompatActivity {
  ImageView myImageView;
  Handler myHandler = new Handler() { //创建一个Handler对象
    @Override
    public void handleMessage(Message msg) {  //重写接收消息的方法
      switch (msg.what) { //判断what值
        case 0:
          myImageView.setImageResource(R.drawable .a);
          break;
        case 1:
          myImageView.setImageResource(R.drawable .b);
          break;
        case 2:
          myImageView.setImageResource(R.drawable .c);
          break;
        case 3:
          myImageView.setImageResource(R.drawable .d);
          break;
      }
      super.handleMessage(msg);
    }
  };
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_handler_sample);
    myImageView = (ImageView) findViewById(R.id.myImageView);
    MyTread myThread = new MyTread(this);  //初始化线程
    myThread.start(); //启动线程
  }
}

效果图如下:

以上这篇Handler制作简单相册查看器的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文章:

  • android Handler详细使用方法实例
  • Android开发使用Handler实现图片轮播功能示例
(0)

相关推荐

  • android Handler详细使用方法实例

    开发环境为android4.1.Handler使用例1这个例子是最简单的介绍handler使用的,是将handler绑定到它所建立的线程中.本次实验完成的功能是:单击Start按钮,程序会开始启动线程,并且线程程序完成后延时1s会继续启动该线程,每次线程的run函数中完成对界面输出nUpdateThread...文字,不停的运行下去,当单击End按钮时,该线程就会停止,如果继续单击Start,则文字又开始输出了. 软件界面如下: 实验主要部分代码和注释: MainActivity.java: 复

  • Android开发使用Handler实现图片轮播功能示例

    本文实例讲述了Android使用Handler实现图片轮播功能.分享给大家供大家参考,具体如下: 提前定义好一个Runnable接口,然后用handler调用. Mainactivity代码如下: package com.example.handle_01; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.wid

  • Handler制作简单相册查看器的实例代码

    Handler类简介 在Android平台中,新启动的线程是无法访问Activity里的Widget的,当然也不能将运行状态外送出来,这就需要有Handler机制进行信息的传递了,Handler类位于android.os包下,主要的功能是完成Activity的Widget与应用程序中线程之间的交互. 开发带有Handler类的程序步骤如下: 1. 在Activity或Activity的Widget中开发Handler类的对象,并重写handlerMessage方法. 2. 在新启动的线程中调用s

  • 基于Python制作一个相册播放器

    大家好,我是小F. 对于相册播放器,大家应该都不陌生(用于浏览多张图片的一个应用). 当然还有视频.音乐播放器,同样是用来播放多个视频.音乐文件的. 在Win10系统下,用[照片]这个应用打开一张图片,就可以浏览该图片所在文件夹中其它图片了. 从上面的图中发现,还有不少其它方面的功能,比如图片裁剪.编辑.打印等. 今天小F就带大家学习一个Python制作相册播放器的实战项目. 功能嘛,当然没有系统自带的好,仅做学习哈. 默认5秒切换一张图片,点击向前按钮,可以快速切换到下一张图片. 主要使用到P

  • Python+PyQt5制作一个图片查看器

    目录 前言 实现方式 测试 前言 在 PyQt 中可以使用很多方式实现照片查看器,最朴素的做法就是重写 QWidget 的 paintEvent().mouseMoveEvent 等事件,但是如果要在图像上多添加一些形状,那么在对图像进行缩放旋转等仿射变换时需要对这些形状也这些变换,虽然不难,但是从头实现这些变换还有形状还是挺讨厌的.好在 Qt 提供了图形视图框架,关于这个框架的基本使用可以参见 深入了解PyQt5中的图形视图框架,下面进入正题. 实现方式 一个最基本的照片查看器应该具有以下功能

  • Java使用异或运算实现简单的加密解密算法实例代码

    Java简单的加密解密算法,使用异或运算 实例1: package cn.std.util; import java.nio.charset.Charset; public class DeEnCode { private static final String key0 = "FECOI()*&<MNCXZPKL"; private static final Charset charset = Charset.forName("UTF-8"); pr

  • SpringBoot配置拦截器方式实例代码

    步骤: 1.实现WebMvcConfigurer配置类 2.实现拦截器 3 . 把拦截器添加到配置中 4.添加需要拦截的请求 5.添加需要排除的请求 package com.zp.springbootdemo.interceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springfr

  • Javascript简单实现面向对象编程继承实例代码

    本文讲述了Javascript简单实现面向对象编程继承实例代码.分享给大家供大家参考,具体如下: 面向对象的语言必须具备四个基本特征: 1.封装能力(即允许将基本数据类型的变量或函数放到一个类里,形成类的成员或方法) 2.聚合能力(即允许类里面再包含类,这样可以应付足够复杂的设计) 3.支持继承(父类可以派生出子类,子类拥有父母的属性或方法) 4.支持多态(允许同样的方法名,根据方法签名[即函数的参数]不同,有各自独立的处理方法) 这四个基本属性,javascript都可以支持,所以javasc

  • SpringBoot+MyBatis简单数据访问应用的实例代码

    因为实习用的是MyBatis框架,所以写一篇关于SpringBoot整合MyBatis框架的总结. 一,Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:

  • Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i,'=',i*j,end = ' ',sep='') # end默认在结尾输出换行,将它改成空格 sep 默认 j,'*',i,'=',i*j 各元素输出中间会有空格 print()#这里作用是输出换行符 i = 1 while i <= 9: j = 1 while j <= i: print(&

  • vue使用混入定义全局变量、函数、筛选器的实例代码

    说一种没人发的,利用混入mixins来实现全局变量和函数.mixins里面的方法.变量.筛选器会和组件里面的方法.变量.筛选器合并.这种方法优点是ide会有方法.变量.筛选器提示. 一.main.js文件 import Vue from 'vue' import App from './App' import router from './router' import store from './store' import mixin from './utils/mixin' Vue.proto

  • JavaScript实现简单的图片切换功能(实例代码)

    代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图片切换</title> <style> *{ margin: 0; padding: 0; } .box{ width: 200px; height: 300px; margin: 50px auto; padding: 20p

随机推荐