比较好的多个按钮监听方法设置

转载 2012年03月21日 10:36:56
 

第二十三讲:Drawable使用入门

11 Aug

lesson23_drawable

本讲内容:Drawable及其相关类的使用

一个让人赏心悦目的界面对软件来说非常重要,因此图形图像资源也显得非常重要。本讲就要谈一谈Android中处理图形图像的最重要的一个类Drawable。Drawable就是一个可以画的对象的抽象(有点别扭,你凑合看吧),下面是它的继承关系,可以看到BitmapDrawable,AnimationDrawable等对象都是它的子类。

EVG86N420XX4SQ~F}%}CCRS[4]

最简单的使用Drawable资源的方法是,把图片放入Android工程的res\drawable目录下,编程环境会自动在R类里为此资源创建一个引用。你可以使用此引用访问该资源对象。譬如对应用程序的图标,在Java代码中可以用R.drawable.icon引用到它,在XML中可以用@drawable/icon引用到它。

那么如果图片资源不在项目中而是在SDCard中时如何使用呢,我们看一下下面的例子学习一下Drawable的使用,并且顺便学习一下Bitmap和BitmapFactory的使用。

1、创建项目 Lesson23_Drawable,主Acitivity的名字是 MainDrawable.java,拷贝a.jpg和b.jpg两个文件到sdcard中

file_exlorper

2、res\main.xml的内容如下:

01 <?xml version="1.0" encoding="utf-8"?>
02 <LINEARLAYOUT android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">
03 <TEXTVIEW android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="Drawable的使用-设置壁纸" android:textsize="20sp" />
04 <BUTTON type=submit android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="查看图片A" android:textsize="20sp" android:id="@+id/Button01">
05 </BUTTON>
06 <BUTTON type=submit android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="查看图片B" android:textsize="20sp" android:id="@+id/Button02">
07 </BUTTON>
08 <BUTTON type=submit android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="设置图片A为壁纸" android:textsize="20sp" android:id="@+id/Button03">
09 </BUTTON>
10 <BUTTON type=submit android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="设置图片B为壁纸" android:textsize="20sp" android:id="@+id/Button04">
11 </BUTTON>
12 <BUTTON type=submit android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="恢复默认壁纸" android:textsize="20sp" android:id="@+id/Button05">
13 </BUTTON>
14 <IMAGEVIEW android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/ImageView01">
15 </IMAGEVIEW>
16 </LINEARLAYOUT>

3、MainDrawable.java的内容如下:

01 package android.basic.lesson23;
02   
03 import java.io.IOException;
04   
05 import android.app.Activity;
06 import android.graphics.BitmapFactory;
07 import android.graphics.drawable.Drawable;
08 import android.os.Bundle;
09 import android.view.View;
10 import android.view.View.OnClickListener;
11 import android.widget.Button;
12 import android.widget.ImageView;
13   
14 public class MainDrawable extends Activity {
15     /** Called when the activity is first created. */
16     @Override
17     public void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.main);
20   
21         //定义UI组件
22         Button b1 = (Button) findViewById(R.id.Button01);
23         Button b2 = (Button) findViewById(R.id.Button02);
24         Button b3 = (Button) findViewById(R.id.Button03);
25         Button b4 = (Button) findViewById(R.id.Button04);
26         Button b5 = (Button) findViewById(R.id.Button05);
27         final ImageView iv= (ImageView)findViewById(R.id.ImageView01);
28   
29         //定义按钮点击监听器
30         OnClickListener ocl = new OnClickListener() {
31   
32             @Override
33             public void onClick(View v) {
34   
35                 switch (v.getId()) {
36                 case R.id.Button01:
37                     //给ImageView设置图片,从存储卡中获取图片为Drawable,然后把Drawable设置为ImageView的背景
38                     iv.setBackgroundDrawable(Drawable.createFromPath("/sdcard/a.jpg"));
39                     break;
40                 case R.id.Button02:
41                     iv.setBackgroundDrawable(Drawable.createFromPath("/sdcard/b.jpg"));
42                     break;
43                 case R.id.Button03:
44                     try {
45                         //Activity的父类ContextWrapper有这个setWallpaper方法,当然使用此方法需要有android.permission.SET_WALLPAPER权限
46                         setWallpaper(BitmapFactory.decodeFile("/sdcard/a.jpg"));
47                     } catch (IOException e1) {
48                         e1.printStackTrace();
49                     }
50                     break;
51                 case R.id.Button04:
52                     try {
53                         setWallpaper(BitmapFactory.decodeFile("/sdcard/b.jpg"));
54                     } catch (IOException e1) {
55                         e1.printStackTrace();
56                     }
57                     break;
58                 case R.id.Button05:
59                     try {
60                         //Activity的父类ContextWrapper有这个clearWallpaper方法,作用是恢复默认壁纸,当然使用此方法需要                        android.permission.SET_WALLPAPER权限
61                         clearWallpaper();
62                     } catch (IOException e) {
63                         e.printStackTrace();
64                     }
65                     break;
66                 }
67   
68             }
69   
70         };
71   
72         //给按钮们绑定点击监听器
73         b1.setOnClickListener(ocl);
74         b2.setOnClickListener(ocl);
75         b3.setOnClickListener(ocl);
76         b4.setOnClickListener(ocl);
77         b5.setOnClickListener(ocl);
78     }
79   
80 }

4、AndroidManifest.xml的内容如下(设置权限):

01 <?xml version="1.0" encoding="utf-8"?>
02 <MANIFEST xmlns:android="http://schemas.android.com/apk/res/android" android:versionname="1.0" android:versioncode="1" package="android.basic.lesson23">
03     <APPLICATION android:label="@string/app_name" android:icon="@drawable/icon">
04         <ACTIVITY android:label="@string/app_name" android:name=".MainDrawable">
05             <INTENT -filter>
06                 <ACTION android:name="android.intent.action.MAIN" />
07                 <CATEGORY android:name="android.intent.category.LAUNCHER" />
08             </INTENT>
09         </ACTIVITY>
10   
11     </APPLICATION>
12     <USES android:minsdkversion="8" -sdk />
13   
14 <USES android:name="android.permission.SET_WALLPAPER" -permission></USES>
15 </MANIFEST>

5、运行程序,查看结果:

image

点击“查看图片A”按钮,ImageView载入图片A并显示出来

image

点击”设置图片B为壁纸”按钮,可以看到图片B已经成为桌面壁纸。 

对于多个按钮要在同一个监听器中实现自己的单击事件的方法小诀窍。

在网上的一些教程中往往是把一个按钮添加多个监听器,却很少有人会把多个按钮在同一个监听器中去实现他们的单击事件,而且这杨的其实是很实用的,比如说在制作一个简单的计算器是就需要0-9,这十个数字按钮如果要...
  • SoulsCarrier
  • SoulsCarrier
  • 2015年03月18日 12:38
  • 1756

监听多个button和textview+switch方法

如何用switch方法来实现多个按钮的监听 方法一: activity_main.xml
  • dscspring
  • dscspring
  • 2017年05月07日 14:59
  • 263

安卓_在同一个active中设置多个监听

五 31 / 2012暂无评论 Android, ButtonListener浏览次数:550 Android Android常见的按钮监听器实现方式 为按钮(Button)添加...
  • xiaojian1018
  • xiaojian1018
  • 2015年03月12日 22:35
  • 592

设置Button监听事件的三种方式

设置Button监听事件的三种方式 三种Button监听事件设置方法 1.匿名内部类 2.外部类 3.接口方式 匿名内部类 直接创建匿名内部类。 loginB...
  • qq_23893313
  • qq_23893313
  • 2017年03月10日 20:17
  • 1328

UITableView左滑出现多个按钮

UITableView左滑出现多个按钮
  • lvdezhou
  • lvdezhou
  • 2015年11月09日 15:05
  • 2109

Android同时按下多个按钮

关键字: 多点触控, 控件, 按钮, Android, 同时按下 【也许这样能帮到更多人检索到??】很久没写博文了,最近在做毕业设计的过程中,碰到了这样一个问题,之前一直没遇到过,走了一些弯路,现在写...
  • u011133213
  • u011133213
  • 2015年03月29日 10:40
  • 6175

java之事件监听(一)按钮监听

package 第一版; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionLi...
  • lijunqiangacm
  • lijunqiangacm
  • 2013年11月02日 09:54
  • 6484

javaGUI中 随机生成一组位置不同的按钮 并对JButton的左键、右键、双击的监听

public static int[][] getRandomLocation(int paneWidth,int panelHeight,int n,int blcokWidth,int block...
  • springlustre
  • springlustre
  • 2016年03月31日 19:44
  • 676

多个button绑定同一个onclickListener方法

最近开始学习android开发 遇到这么一个情况,我想要对一个activity多个按钮绑定onclik监听,但是如果每个都要单独写一个监听方法的话,太麻烦了。在网上查了一下,发现可以对多个button...
  • johnsonwce
  • johnsonwce
  • 2014年03月20日 16:59
  • 2702

Unity3D 学习笔记8 —— UGUI控制和按钮的监听系统

一、UGUI简介:         随着Unity原生UI系统UGUI日渐完善,如今在项目中使用UGUI相较于NGUI更为简单快捷,因为NGUI的基于深度(depth属性)层级管理机制和图集式图片管理...
  • linshuhe1
  • linshuhe1
  • 2016年04月12日 10:43
  • 4600
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:比较好的多个按钮监听方法设置
举报原因:
原因补充:

(最多只允许输入30个字)