介绍

本博客主要是介绍了一下几种控件的使用:

  • Switch
  • SwitchCompat
  • ImageSwitcher
  • TextSwitcher
  • ViewSwitcher

Switch的使用

  • 先看效果图

如上图所示:是在Android 4.4版本上运行展示效果

如上图所示:是Android 5.0以上运行的效果图
可以看出来,在不同的版本上会有不同的效果

  • 在xml文件中:

    <Switch
        android:id="@+id/mySwitch"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textOn="打开"android:textOff="关闭"/>其中,textOn表示:打开时候展示什么内容,textOff表示:关闭时候展示什么内容 
  • 代码

    mySwitch = (Switch) findViewById(R.id.mySwitch);
    //添加点击事件
    mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if (isChecked){Toast.makeText(MainActivity.this,"选择是"+isChecked,Toast.LENGTH_SHORT).show();}else {Toast.makeText(MainActivity.this, "选择是"+isChecked, Toast.LENGTH_SHORT).show();}}});//表示可以在里面完成相关操作

SwitchCompat

这个存在的意义,是为了兼容5.0一下Switch控件,因为Switch在5.0以后好看,但是5.0一下还是不好看,所以存在了这个兼容包

  • xml文件
<android.support.v7.widget.SwitchCompatandroid:id="@+id/switchcompat"android:textOff="关闭"android:textOn="打开"android:layout_width="wrap_content"android:layout_height="wrap_content" />

需要注意的是,相对于Switch(指的是Switch具有的方法,它都存在),他额外提供了修改颜色的方法。在style中,添加代码,效果如下(并不是在AppTheme主题中修改,在AppTheme主题中修改最低api要21,这里就是自己建立一个新的就可以了)

           <style name="message_switch" parent="Theme.AppCompat.Light"><!-- switch 打开时的按钮的颜色 轨迹颜色默认为30%(看效果就明白30%是怎么回事了)这个颜色 --><item name="colorControlActivated">@color/switch_color_on</item><!--  switch关闭时的按钮的颜色 --><item name="colorSwitchThumbNormal">@color/switch_color_off</item><!-- switch关闭时的轨迹的颜色 30%这个颜色 --><item name="android:colorForeground">@color/switch_color_gui</item></style>
       <color name="sss">#3ce137</color><color name="hhh">#ec0dec</color><color name="xxx">#0b0b0b</color>

需要注意的是,在使用style文件时候,不能直接android:theme=”@style/mine_Switch”/
也不能直接:
style = “@style/mine_Switch”
应该是:
app:theme=”@style/message_switch”

再这里,不仅可以通过改变颜色从而改变开关的样式,还可以设置某些图片,感兴趣的可以自己试试:switch1.setTrackResource();switch1.setThumbResource();
  • 改变了按钮的颜色之后效果:


上面照片是运行在4.4系统下关闭的效果


上面照片是运行在4.4系统下打开的效果

ImagerSwitcher

Goolge体统的一个可以显示图片的一个组件,不同的是,你可以设置动画效果看看下面的效果图

  • xml
    <ImageSwitcher
        android:id="@+id/imageSwitcher"android:layout_width="200dp"android:layout_height="100dp"></ImageSwitcher>
  • 代码
 int[] images = {R.drawable.first,R.drawable.second,R.drawable.third};//图片资源数组imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {//设定工厂,每进来一个图片都用一个ImageView接收@Overridepublic View makeView() {return new ImageView(MainActivity.this);}});//这个设置Factory是必须的imageSwitcher.setImageResource(images[position]);//设置初始图片,也是通过这个代码设置在控件上显示的图片imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));//动画淡入imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));//动画淡出//这里用的是系统提供的动画效果

但是不好的地方是,只能展示图片,

TextSwitcher

正如其显示的,TextSwitcher,为了展示文本的,可以带有动画的切换文本。

  • 效果图

  • xml

<TextSwitcher
        android:id="@+id/textSwitcher"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
  • 代码
textSwitcher = (TextSwitcher) findViewById(R.id.textSwitcher);
Animation in = AnimationUtils.loadAnimation(this, R.anim.myanim);
in.setDuration(1000);//为了突出动画效果,我们设置动画事件为1秒钟
in.setFillAfter(true);
Animation out = AnimationUtils.loadAnimation(this, R.anim.mysss);
out.setDuration(1000);
in.setFillAfter(false);
textSwitcher.setInAnimation(in);
textSwitcher.setOutAnimation(out);
展示随机值
Random rand = new Random();
textSwitcher.setText(String.valueOf(rand.nextInt()));

ViewSwitcher

比TextSwitcher和ImageSwitcher高级点,可以放的是view,但是有一点必须要注意,它只能有两个直接子孩子,这里以 ImageView为演示例子,

  • xml
   <ViewSwitcher
        android:id="@+id/viewSwitcher"android:layout_width="wrap_content"android:layout_height="wrap_content"><ImageView
            android:layout_width="100dp"android:layout_height="100dp"android:src="@drawable/first"/><ImageView
            android:src="@drawable/second"android:layout_width="100dp"android:layout_height="100dp" /></ViewSwitcher>
  • 代码中
slide_in_left = AnimationUtils.loadAnimation(this,android.R.anim.slide_in_left);
slide_out_right = AnimationUtils.loadAnimation(this,android.R.anim.slide_out_right);
viewSwitcher.setInAnimation(slide_in_left);
viewSwitcher.setOutAnimation(slide_out_right);

通过下面代码进行切换

 viewSwitcher.showNext();viewSwitcher.showPrevious();经测试,两个方法,都可以切换下一个。

Android自带Switch系列汇总学习相关推荐

  1. Android多媒体学习八:调用Android自带的音频录制程序,实现录制

    Android中有自带的音频录制程序,我们可以通过指定一个Action为MediaStore.Audio.Media.RECORD_SOUND_ACTION的Intent来 启动它就可以了.然后在on ...

  2. Android入门到精通|安卓/Android开发零基础系列Ⅱ【职坐标】-学习笔记(1)-- 常用控件及资源介绍

    前言 为了巩固Android基础知识,回顾一下学习内容,才有此学习笔记. IDE Androdi Studio 4 + Genymotion 创建项目 修改项目的 build.gradle,添加国内镜 ...

  3. Android多媒体学习五:调用Android自带的播放器播放Audio

    Android有其自带的播放器,我们可以使用隐式Intent来调用它:通过传入一个Action为ACTION_VIEW同时,指定Data为所要播放的Audio的Uri对象,并指定格式信息,则我们就可以 ...

  4. Android 自带的应用统计服务(UsageStatsService)

    最近要弄在 framework 中弄一个统计应用使用时长的功能.刚开始想着要怎么是不是要在 ActivityManagerService(AMS)的几个 Activity 的生命周期那埋几个统计点,后 ...

  5. Android 开源项目及库汇总(2)

    Android 开源项目及库汇总(2) ListenToCode 2.7 2018.10.10 15:43 字数 8527 阅读 1001评论 0喜欢 29 地图 百度地图– Android百度地图 ...

  6. 《Android构建MVVM》系列(一) 之 MVVM架构快速入门

    前言 本文属于<Android构建MVVM>系列开篇,共六个篇章,详见目录树. 该系列文章旨在为Android的开发者入门MVVM架构,掌握其基本开发模式. 辅以讲解Android Arc ...

  7. android 带箭头的按钮,android自定义带箭头对话框

    本文实例为大家分享了android自定义带箭头对话框的具体代码,供大家参考,具体内容如下 import android.content.context; import android.content. ...

  8. android 注册动态广播 注销_Android学习笔记(十一)BroadcastReceiver动态注册、注销示例...

    在上一篇博文中简单介绍了一下BroadcastReceiver的相关知识点,本篇举一个在代码中动态的注册.注销BroadcastReceiver的栗子. 1.首先创建一个MyReceiver并继承Br ...

  9. Android权限申请完全解析(一):Android自带的权限申请

    1.为什么要权限申请 6.0以上就需要了,别问为什么.(不是重点,自行搜索) 2.如何进行权限申请 Android自带的权限申请 EasyPermission权限申请 Ps:EasyPermissio ...

  10. Linux视频教程系列汇总

    Linux视频教程系列汇总 该系列视频涉及Linux学习的方方面面,入门的.高级的.编程的.安全的,都有了,每一套都很完整. 由于文件比较大,全部使用FTP发布的,建议使用能重复连接的下载工具(如迅雷 ...

最新文章

  1. 小学六年级能用计算机器,小学六年级信息技术测试题
  2. C#游戏开发快速入门 2.1 构建游戏场景
  3. Acwing第 25 场周赛【完结】
  4. SAP空格无法带出历史记录的解决办法
  5. linux为什么开机后有多个内核,CentOS7开机界面出现多个内核选项
  6. java nutz_jnutz: 基于nutz的java+js混合开发项目
  7. Git学习总结(24)——彻底搞懂 Git-Rebase
  8. 嵌入式电路设计(电路仿真)
  9. 编译器之后端原理(三十六)
  10. 2020年中级数据库系统工程师考试笔记9—SQL语言
  11. 卸载百度软件修复服务器,快速修复win7系统笔记本卸载百度软件中心助手的解决教程...
  12. 《攻守道》笔记(3)
  13. 出现“性能监视器计数器要求”错误的解决办法
  14. KEIL 不使用microlib 报错__stdin __stdout重复定义
  15. 全国计算机等级考试shi,全国计算机等级考试等级设置
  16. QCC305X-QCC304x系列开发教程(系统篇)之3.4-Mirroring详解
  17. string++php,String 字符串
  18. 关于前后端分离的概念,作用,优缺点
  19. JAVA 编程专业词语解释~~映射
  20. python 求1000以内的完数

热门文章

  1. Hive文件格式(表stored as 的五种类型)
  2. 双路服务器56核系统推荐,双路最高支持56核112线程!华硕妖板羡煞旁人
  3. 全新版大学英语综合教程第一册学习笔记(原文及全文翻译)——7 - Kids On The Track(生死时刻)
  4. mysql中问号传参_问号传值有以下三种方法:
  5. 【JZOJ 5421】【NOIP2017提高A组集训10.25】嘟嘟噜
  6. 九爷带你了解 深入理解 Memcache 原理
  7. 坠落弹球(Bouncing off the walls)
  8. 一个好用的剪切板复制粘贴工具
  9. 基于Matlab的Poisson分布,基于matlab的泊松分布的仿真.doc
  10. EEPROM CAT24CXX实现分页读、写数据