关闭

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

2628人阅读 评论(0) 收藏 举报
 

第二十三讲: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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6582次
    • 积分:105
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:7篇
    • 译文:3篇
    • 评论:0条
    文章分类
    文章存档