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

转载 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已经成为桌面壁纸。 

相关文章推荐

找茬游戏 多个按钮的按键监听

  • 2015年08月14日 10:33
  • 2.77MB
  • 下载

设置监听class改变事件,由原来的设置单个按钮点击触发方法onclick=“方法()”改为addEventListener

原本的在html元素内调用方法传this可替换为jq选择器选择对应样式,然后设置监听事件:投诉建议单选 /* function checkThis(e){ var allSpan =...

Android 仿钉钉组织架构功能,动态创建多个按钮,并给每个按键添加监听事件

现在基本上很多的企业都会使用钉钉,然后细心地人会看到钉钉组织架构功能。在联系人中放着一个可以展开的公司,下面有组织架构和自己所在的部门。 现在我们产品经理说我们项目中也要加入组织架构功能,而且给个...
  • SYIF88
  • SYIF88
  • 2017年03月29日 15:44
  • 1114

监听多个edittext内容 改变按钮颜色

效果如下图: 当两个edittext都输入了内容才改变 "确定" 的颜色 这个是工具类:我们只需要把要监听的控件传进来就可以了  IEditTextChangeListener是个接口回调 ...

一个监听器(Listener)实现多个按钮的onclick监听

在android应用程序中,有时要用到很多的按钮元件,每个按钮都要有一个监听事件,为了让代码看起来干净简洁,并节省一些内存,我们可以用一个监听器(Listener)来实现多个按钮的onClick监听,...

比较好的循环方法---------

  • 2010年04月07日 09:51
  • 13KB
  • 下载

php比较好用的几种函数及方法

1.数组相加:直接$arr1+$arr22.打印堆栈函数PHP debug_backtrace() 函数生成一个 backtrace。该函数返回一个关联数组。下面是可能返回的元素:3. pack() ...
  • floog
  • floog
  • 2011年04月15日 15:13
  • 200

R学习——比较好的切入点和方法

通过在Coursera上对于R和统计、数据分析的自学,介绍几个不错的切入学习的工具和课程,并分享一些经验和建议。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:比较好的多个按钮监听方法设置
举报原因:
原因补充:

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