Material Designer的低版本兼容实现(十一)—— Switch

5.0中的switch和之前完全不同了,漂亮不漂亮咱们另说,总之4.x上是没有这样的效果了。实现方式有两种,一种是用这个兼容包来做类似的效果,一种是用传统的checkbox来代替。我感觉兼容包的效果是不错,但少了点击后立刻开关的感觉,而且在scrollView等可以滑动的中,可能会出现操作不灵敏的问题(因为左右时你不可能确保手指没有上下滑动,所以可能会触发scrollView的滑动事件)。用传统的Checkbox虽然没有拖动的效果,但是用户按下去立刻有开关的反馈,十分干净利落。当然,本文还是讲如何用兼容包来实现,至于通过checkbox来实现的效果自行百度就好了,没太大难度。

一、导入到自己的工程中

要用这个控件还是得添加开源项目的支持,开源项目地址:

我维护的:https://github.com/shark0017/MaterialDesignLibrary

添加lib支持后我们就可以用这个控件了,放入布局文件前还是要写命名空间的。

xmlns:app="http://schemas.android.com/apk/res-auto"

  <com.gc.materialdesign.views.Switch
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center_horizontal" />

由于我没有做可视化的效果,所以在编译器中没办法实时显示状态,默认就是一个透明的view。如果大家想在编译器中看个大概的样子,可以给它通过background=“#xxxxxx”添加个背景颜色。

真实运行的效果:

二、在布局文件中设定各种属性

app:checked="true"  设定初始的状态,如果为true就是开启状态。默认是不开启

android:background="#ff0000"  设定开关的颜色,默认是绿色

android:layout_width="200dp"  设置开关控件的整体大小,和开关圆球无关
android:layout_height="100dp"

app:thumbSize="40dp"  设定开关圆球的大小

三、通过代码进行各种设定

package com.example.hhh;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.Toast;

import com.gc.materialdesign.views.Switch;
import com.gc.materialdesign.views.Switch.OnCheckListener;

public class SwitchTest extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.switch01);

        final Switch switch = (Switch)findViewById(R.id.switch01);
        switch.setChecked(true);// 初始为开启的状态

        switch.setBackgroundColor(0xffff0000);// 颜色

        switch.setBackgroundColor(getResources().getColor(R.color.orange));// 设置颜色

        switch.setThumbSize(40);// 滑块的大小
        // 监听开关事件
        switch05.setOncheckListener(new OnCheckListener() {

            @Override
            public void onCheck(boolean isChecked) {
                // TODO 自动生成的方法存根
                System.out.println("isChecked = "+ switch.isChecked());
                Toast.makeText(SwitchTest.this, "Switch status = "+isChecked, 0).show();
            }
        });

    }
}

参考自:

http://www.th7.cn/Program/Android/201411/314138.shtml

时间: 2024-09-29 00:12:54

Material Designer的低版本兼容实现(十一)—— Switch的相关文章

Material Designer的低版本兼容实现(五)—— ActivityOptionsCompat

extends:http://www.cnblogs.com/tianzhijiexian/p/4087917.html 本文是对API中的方法做了介绍,如果想要看如何让这些方法兼容4.x或2.x可以看这篇文章:  用开源项目ActivityOptionsICS让ActivityOptions的动画实现兼容 新版的V4包中有了这个类-- ActivityOptionsCompat,我们可以通过这个类来启动activity和添加动画.但不幸的是所有的动画都没有给2.x用的,大部分动画也对4.x不兼

Material Designer的低版本兼容实现(十)—— CheckBox

ChekBox的用途我们就不必多说了,算是一个很古老的控件了,何其类似的还有RadioButton,这个东西因为我目前还没写出来,以后可能会参考别的lib来写.顺便说一句,如果你的app是在5.0环境下编译的,那么你用传统的checkbox时,你会发现checkbox在低版本机子上运行出来的样子和以前不同了,虽然没有动画效果,但样子和5.0以上的checkbox还是很像的. 最小尺寸 48 x 48 开源lib中对于不同的屏幕做了不同大小的对勾图片,应该能满足高清屏的要求.至于不可用状态目前还没

Material Designer的低版本兼容实现(十二)—— Slider or SeekBar

Slider,我更喜欢叫他SeekBar,其实是一个东西啦,就是拖动条.5.0的拖动条和4.x上的HOLO风格完全不同,平添了一些精致.此外还加入了数值指示器,让用户在滑动的时候就能知道现在到了什么位置.Ok,理想很美好,兼容很残酷!我虽然改了很多兼容包本身的bug,但是还是有个挺大的bug没有解决——指示器错位.当你在一个可以滑动的view中放着歌slider的时候,它的指示器出现的位置会根据它初次出现的位置来显示,也就是说如果你把它滚动了,那么它的指示器还是会傻傻的根据它原来的位置进行显示,

Material Designer的低版本兼容实现(十四)—— CardView

今天说的又是一个5.0中才有的新控件——CardView(卡片视图).这个东东其实我们早就见过了,无论是微博还是人人客户端,它都有出现.通常我们都是通过自定义一个背景图片,然后通过给layout进行设置背景样式来实现这个卡片视图.虽然现在5.0和第三方库都有了这个view,但是我还是很建议去自定义这个view,为啥?能在编译器中直观的看到效果,而且可定制度好.最重要的是自己做也不难,引入第三方库反而会增大应用的体积.总之,本篇主要讲解的还是如何使用开源库和supportV7中的cardView.

Material Designer的低版本兼容实现(十三)—— ProgressBar

进度条我们都很常见了,新的设计规范中提出了各式各样的进度条,本篇就会介绍大部分进度条的实现.实现方式和规范的示例图可能略有差异,还是那句话根据具体需求进行改变吧. PS:本文较长 参考文档:http://design.1sters.com/material_design/components/progress-activity.html 我们先来看设计规范中的一段话:进度条(指示器)的类型有两种:线形进度指示器和圆形进度指示器.你可以使用其中任何一项来指示确定性和不确定性的操作. 线性进度条:

Material Designer的低版本兼容实现(九)—— Float Button

5.0一个新特性就是出现了这么一个圆形的悬浮指示按钮,这个按钮可以用来体现一个全局的重要功能,比如添加账户什么的.这个按钮有两种大小,一种是正常的按钮大小,一种是小型的按钮.官方文档中介绍的是小心的按钮尺寸仅仅用于配合屏幕上的其他元素制造视觉上的连续性(不理解).总之我们经常用的是正常的按钮,小型按钮就看需求了.从代码来看,小尺寸的按钮就是继承的正常尺寸的按钮,写这部分的代码这也是令我最痛苦的,后来慢慢就好了.所以大家测试的时候,如果正常的按钮没有问题,小尺寸的按钮也绝对没有什么问题了. 按钮尺

Material Designer的低版本兼容实现(七)—— RectangeButton

矩形按钮是我们很常用的控件,让其拥有5.0动效必须自定义控件.本文讲解的控件是参考:https://github.com/navasmdc/MaterialDesignLibrary 从这个lib中提取的控件,下面讲解如何使用它. 一.布局文件

Material Designer的低版本兼容实现(八)—— ButtonFlat

   除了中规中矩的矩形按钮外,5.0中将按钮扁平化,产生了一个扁平按钮——Flat Button.这个按钮降低了很多存在感,主要用于在对话框,提示栏中.让整个界面减少层级.今天说的就是它的用法. 这个按钮继承自矩形按钮,所以拥有很多矩形按钮的属性,关于矩形按钮请看上一篇文章. 首先还是添加lib的依赖.lib地址:https://github.com/shark0017/MaterialDesignLibrary 一.放入布局文件 自定义命名空间:xmlns:app="http://schem

Material Designer的低版本兼容实现(六)—— LayoutRipple

新版的Android5.0添加了涟漪效果,虽然开源的库提供了各种控件便于大家使用涟漪效果.但是仍旧不可能满足所有需求,因此我今天改出来一个类叫做,LayoutRipple,其实感觉跟应该叫RippleLayout.在这个layout被选中的时候会触发涟漪效果,比较适合list中的item.下面说下怎么用这个类. 一.下载开源项目并添加支持 https://github.com/shark0017/MaterialDesignLibrary 在新建的工程中添加这个项目为library. 二.将la