《Android 平板电脑开发实战详解和典型案例》——2.2节开关窗口—— Switch

简介:

本节书摘来自异步社区《Android 平板电脑开发实战详解和典型案例》一书中的第2章,第2.2节开关窗口—— Switch,作者 吴亚峰 , 杜化美 , 索依娜,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.2 开关窗口—— Switch
Android 平板电脑开发实战详解和典型案例
Android下有多种具有两种状态(选中状态和未选中状态)的按钮,当按下按钮后状态自动改  变。本节将介绍Android 3.0新增控件开关窗口Switch,主要内容包括其基本知识以及一个简单的   案例。

2.2.1 开关窗口基本知识
开关窗口Switch是一个只有两种选项的开关控件,可以在两种状态(打开状态或关闭状态)之间切换。其切换方式可以是经典的轻按开关控件,也可以是来回拖动“拇指”所选中的选项。开关窗口Switch继承自抽象类CompoundButton,其继承树如图2-5所示。


b12ebd0d0dcc73ccd7c203016e2d24bca23ad1b1

对于Switch中的一些方法,由于篇幅所限,笔者将不再一一赘述,请读者自行查阅相关的api。

2.2.2 开关窗口使用案例
通过前面的介绍,读者对开关窗口Switch已经有了一个基本的了解,下面将通过一个简单的案例Sample2_2使读者进一步掌握开关窗口Switch的使用。在正式介绍此案例的开发步骤之前,首先请读者了解一下运行效果,如图2-6、图2-7和图2-8所示。


d701eef2ba3cb7ab2b4f00b957f80a29e15b6b4c

图2-6为运行该项目后的效果图,图2-7所示为当单击开灯后的效果图,图2-8显示的是开灯向关灯方向滑动的效果图。
了解了案例的运行效果之后,下面开始介绍案例的开发,具体步骤如下。

(1)首先需要编写的是界面布局文件main.xml,其代码如下。

1 <?xml version="1.0" encoding="utf-8"?>            <!--版本号和编码方式-->
2 <LinearLayout                             <!--水平布局-->
3  xmlns:android="http://schemas.android.com/apk/res/android"
4   android:layout_width="fill_parent"             <!--充满父控件-->
5   android:layout_height="fill_parent"            <!--充满父控件-->
6   android:orientation="vertical" >              <!--垂直排列-->
7   <Switch                                <!--开关窗口控件-->
8     android:id="@+id/switch1"                 <!--设置id-->
9     android:layout_width="120dip"              <!--设置宽度 -->
10     android:layout_height="50dip"              <!--设置高度-->
11     android:layout_gravity="center_horizontal"/>"   <!--控件摆放位置-->
12   <ImageView                             <!--图像视图-->
13     android:id="@+id/imageview"               <!--设置id-->
14     android:layout_width="400dip"              <!--设置宽度-->
15     android:layout_height="400dip"             <!--设置高度-->
16     android:src="@drawable/bulb_off"            <!--图片来源-->
17     android:layout_gravity="center_horizontal"/>    <!--图片摆放位置-->
18 </LinearLayout>

该主界面的布局比较简单,在一个充满整个屏幕竖直排列的LinearLayout控件上方放置了一个宽、高由自身决定的Switch,下方放置一个宽、高由自身决定的ImageView。
(2)完成了布局文件main.xml的开发后,下面将要开发的是主Activity对应的类 SwitchActiv ity.

java,其代码如下。

1 package com.bn.sample2_2;                    //声明包
2 ……//该处省略了部分类的导入代码,读者可自行查看随书光盘中的源代码
3 public class SwitchActivity extends Activity {
4  Switch mswitch;
5  ImageView mimageview;
6   @Override
7   public void onCreate(Bundle savedInstanceState) {
8    super.onCreate(savedInstanceState);
9      setContentView(R.layout.main);
10      mswitch=(Switch)findViewById(R.id.switch1);   //获取开关窗口对象
11      mswitch.setBackgroundColor(Color.BLUE);     //设置开关窗口控件的背景颜色
12     mswitch.setTextOff("开灯");               //设置按钮处于非选中状态时显示的文字
13     mswitch.setTextOn("关灯");                //设置按钮处于选中状态时显示的文字
14      mswitch.setOnCheckedChangeListener(       //设置监听器,并重写方法
15      new OnCheckedChangeListener(){
16   @Override
17   public void onCheckedChanged(CompoundButton buttonView,
18   boolean isChecked) {
19   setBulbState(isChecked);}});}
20   public void setBulbState(boolean state){          //判断灯的状态
21     mimageview=(ImageView)findViewById(R.id.imageview); //根据状态切换图片
22     mimageview.setImageResource((state)?R.drawable.bulb_on:R.drawable.bulb_off);
23     mswitch.setChecked(state);}}                //改变状态

第10~13行表示的是获取Switch控件对象,并设置其属性。其中Switch控件的属性也可以在配置文件中设置。
第14~19行表示为Switch控件设置监听器,并重写相应的方法,第20~24行为根据Switch控件的状态切换ImageView的图片的方法。

相关文章
|
4月前
|
Android开发
Android Stadio Build 窗口字符串乱码问题
在使用Android Studio过程中,如果遇到Build窗口字符串乱码问题,可以通过编辑`studio.vmoptions`文件添加`-Dfile.encoding=UTF-8`配置并重启Android Studio来解决。
183 1
Android Stadio Build 窗口字符串乱码问题
|
3月前
|
Android开发 UED Kotlin
Android中如何跳转到Wi-Fi开关设置页
本文介绍如何在Android应用开发中使用隐式Intent引导用户至特定系统设置页面,如Wi-Fi设置页,并提供Kotlin代码示例。通过设置Intent的Action属性并检查设备兼容性,可轻松实现跳转功能,提升用户体验。此外,还列举了其他常用设置页面的Intent Action及注意事项。
92 15
|
3月前
|
API Android开发 数据安全/隐私保护
Android经典实战之窗口和WindowManager
本文介绍了Android开发中“窗口”的基本概念及其重要性。窗口是承载用户界面的基础单位,而`WindowManager`系统服务则负责窗口的创建、更新和移除等操作。了解这些概念有助于开发复杂且用户体验良好的应用。
70 2
|
5月前
|
Java Android开发 Spring
Android Spingboot 实现SSE通信案例
【7月更文挑战第14天】以下是使用Android和Spring Boot实现SSE(Server-Sent Events)通信的案例摘要: 在`MainActivity`中: - 初始化界面元素并设置按钮点击事件。 - `startSseRequest`方法创建`WebClient`对象,设置请求头,发送请求,并处理响应和错误。 请确保将`your-server-url`替换为实际的服务器地址。
137 14
|
5月前
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
【7月更文挑战第28天】在 Android 开发中, NDK 让 Java 与 C++ 混合编程成为可能, 从而提升应用性能。**为何选 NDK?** C++ 在执行效率与内存管理上优于 Java, 特别适合高性能需求场景。**环境搭建** 需 Android Studio 和 NDK, 工具如 CMake。**JNI** 构建 Java-C++ 交互, 通过声明 `native` 方法并在 C++ 中实现。**实战** 示例: 使用 C++ 计算斐波那契数列以提高效率。**总结** 混合编程增强性能, 但增加复杂性, 使用前需谨慎评估。
151 4
|
6月前
|
Android开发 开发者
Android UI设计中,Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等,定义在`styles.xml`。
【6月更文挑战第26天】Android UI设计中,Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等,定义在`styles.xml`。要更改主题,首先在该文件中创建新主题,如`MyAppTheme`,覆盖所需属性。然后,在`AndroidManifest.xml`中应用主题至应用或特定Activity。运行时切换主题可通过重新设置并重启Activity实现,或使用`setTheme`和`recreate()`方法。这允许开发者定制界面并与品牌指南匹配,或提供多主题选项。
94 6
|
6月前
|
Android开发 开发者
Android UI中的Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等。要更改主题
【6月更文挑战第25天】Android UI中的Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等。要更改主题,首先在`styles.xml`中定义新主题,如`MyAppTheme`,然后在`AndroidManifest.xml`中设置`android:theme`。可应用于全局或特定Activity。运行时切换主题需重置Activity,如通过`setTheme()`和`recreate()`方法。这允许开发者定制界面以匹配品牌或用户偏好。
61 2
|
6月前
|
JSON Java API
【Android】使用 Retrofit2 发送异步网络请求的简单案例
**摘要:** Retrofit是Android和Java的HTTP客户端库,简化了RESTful API交互。它通过Java接口定义HTTP请求,并提供注解管理参数、HTTP方法等。要使用Retrofit,首先在AndroidManifest.xml中添加`INTERNET`权限,然后在`build.gradle`中引入Retrofit和Gson依赖。创建服务器响应数据类和描述接口的接口,如`Result`和`Api`。通过Retrofit.Builder配置基础URL并构建实例,之后调用接口方法创建Call对象并发送异步请求。
234 1
|
6月前
|
Java Android开发 开发者
17. 【Android教程】开关控件ToggleButton/Switch
17. 【Android教程】开关控件ToggleButton/Switch
78 2
|
7月前
|
Android开发
Flutter完整开发实战详解(六、 深入Widget原理),2024百度Android岗面试真题收录解析
Flutter完整开发实战详解(六、 深入Widget原理),2024百度Android岗面试真题收录解析