当前位置 博文首页 > m0_58523831的博客:【Android 】零基础到飞升 | 开关按钮Toggle

    m0_58523831的博客:【Android 】零基础到飞升 | 开关按钮Toggle

    作者:[db:作者] 时间:2021-09-09 18:58

    2.3.6 开关按钮ToggleButton和开关Switch

    本节引言:

    本节给大家介绍的Android基本UI控件是:开关按钮ToggleButton和开关Switch,可能大家对着两个组件 并不熟悉,突然想起笔者的第一间外包公司,是否在wifi下联网的开关,竟然用的TextView,然后叫美工 且两个切换前后的图,然后代码中进行设置,当然点击TextView的时候判断状态,然后设置对应的背景...

    好吧,也是醉了,好吧...本节讲解的两个其实都是开关组件,只是后者需要在Android 4.0以后才能使用 所以AndroidManifest.xml文件中的minsdk需要 >= 14 否则会报错~,先来看看这两个控件长什么样先, Android 5.0后这两个控件相比以前来说好看了许多,先看下5.0前的样子:

    5.0以前的ToggleButton和Switch: 5.0版本:

    好吧,鲜明的对比...接下来我们就来学习者两个控件的使用吧,其实两个的使用几乎是相同的。

    开始之前贴下官方API先:Switch;ToggleButton


    1.核心属性讲解:

    1)ToggleButton(开关按钮)

    可供我们设置的属性:

    • android:disabledAlpha:设置按钮在禁用时的透明度
    • android:textOff:按钮没有被选中时显示的文字
    • android:textOn:按钮被选中时显示的文字 另外,除了这个我们还可以自己写个selector,然后设置下Background属性即可~

    2) Switch(开关)

    可供我们设置的属性:

    • android:showText:设置on/off的时候是否显示文字,boolean
    • android:splitTrack:是否设置一个间隙,让滑块与底部图片分隔,boolean
    • android:switchMinWidth:设置开关的最小宽度
    • android:switchPadding:设置滑块内文字的间隔
    • android:switchTextAppearance:设置开关的文字外观,暂时没发现有什么用...
    • android:textOff:按钮没有被选中时显示的文字
    • android:textOn:按钮被选中时显示的文字
    • android:textStyle:文字风格,粗体,斜体写划线那些
    • android:track:底部的图片
    • android:thumb:滑块的图片
    • android:typeface:设置字体,默认支持这三种:sans, serif, monospace;除此以外还可以使用 其他字体文件(*.ttf),首先要将字体文件保存在assets/fonts/目录下,不过需要在Java代码中设置: Typeface typeFace =Typeface.createFromAsset(getAssets(),"fonts/HandmadeTypewriter.ttf"); textView.setTypeface(typeFace);

    2.使用示例:

    因为比较简单,所以我们把他们写到一起,另外,我们为Switch设置下滑块和底部的图片,实现 一个类似于IOS 7的滑块的效果,但是有个缺点就是不能在XML中对滑块和底部的大小进行设置, 就是素材多大,Switch就会多大,我们可以在Java中获得Drawable对象,然后对大小进行修改, 简单的例子:

    运行效果图:

    实现代码: 先是两个drawable的文件: thumb_selctor.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@drawable/switch_btn_pressed"/>
        <item android:state_pressed="false" android:drawable="@drawable/switch_btn_normal"/>
    </selector>

    track_selctor.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="true" android:drawable="@drawable/switch_btn_bg_green"/>
        <item android:state_checked="false" android:drawable="@drawable/switch_btn_bg_white"/>
    </selector>

    布局文件:activity_main.xml:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">
    
    </span><span class="tag">&lt;ToggleButton</span><span class="pln">
        </span><span class="atn">android:id</span><span class="pun">=</span><span class="atv">"@+id/tbtn_open"</span><span class="pln">
        </span><span class="atn">android:layout_width</span><span class="pun">=</span><span class="atv">"wrap_content"</span><span class="pln">
        </span><span class="atn">android:layout_height</span><span class="pun">=</span><span class="atv">"wrap_content"</span><span class="pln">
        </span><span class="atn">android:checked</span><span class="pun">=</span><span class="atv">"true"</span><span class="pln">
        </span><span class="atn">android:textOff</span><span class="pun">=</span><span class="atv">"关闭声音"</span><span class="pln">
        </span><span class="atn">android:textOn</span><span class="pun">=</span><span class="atv">"打开声音"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
    
    </span><span class="tag">&lt;Switch</span><span class="pln">
        </span><span class="atn">android:id</span><span class="pun">=</span><span class="atv">"@+id/swh_status"</span><span class="pln">
        </span><span class="atn">android:layout_width</span><span class="pun">=</span><span class="atv">"wrap_content"</span><span class="pln">
        </span><span class="atn">android:layout_height</span><span class="pun">=</span><span class="atv">"wrap_content"</span><span class="pln">
        </span><span class="atn">android:textOff</span><span class="pun">=</span><span class="atv">""</span><span class="pln">
        </span><span class="atn">android:textOn</span><span class="pun">=</span><span class="atv">""</span><span class="pln">
        </span><span class="atn">android:thumb</span><span class="pun">=</span><span class="atv">"@drawable/thumb_selctor"</span><span class="pln">
        </span><span class="atn">android:track</span><span class="pun">=</span><span class="atv">"@drawable/track_selctor"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
    

    </LinearLayout>

    MainActivity.java:

    public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener{
    
    </span><span class="kwd">private</span><span class="pln"> </span><span class="typ">ToggleButton</span><span class="pln"> tbtn_open</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">private</span><span class="pln"> </span><span class="typ">Switch</span><span class="pln"> swh_status</span><span class="pun">;</span><span class="pln">
    
    </span><span class="lit">@Override</span><span class="pln">
    </span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> onCreate</span><span class="pun">(</span><span class="typ">Bundle</span><span class="pln"> savedInstanceState</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">super</span><span class="pun">.</span><span class="pln">onCreate</span><span class="pun">(</span><span class="pln">savedInstanceState</span><span class="pun">);</span><span class="pln">
        setContentView</span><span class="pun">(</span><span class="pln">R</span><span class="pun">.</span><span class="pln">layout</span><span class="pun">.</span><span class="pln">activity_main</span><span class="pun">);</span><span class="pln">
    
        tbtn_open </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">ToggleButton</span><span class="pun">)</span><span class="pln"> findViewById</span><span class="pun">(</span><span class="pln">R</span><span class="pun">.</span><span class="pln">id</span><span class="pun">.</span><span class="pln">tbtn_open</span><span class="pun">);</span><span class="pln">
        swh_status </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Switch</span><span class="pun">)</span><span class="pln"> findViewById</span><span class="pun">(</span><span class="pln">R</span><span class="pun">.</span><span class="pln">id</span><span class="pun">.</span><span class="pln">swh_status</span><span class="pun">);</span><span class="pln">
        tbtn_open</span><span class="pun">.</span><span class="pln">setOnCheckedChangeListener</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">);</span><span class="pln">
        swh_status</span><span class="pun">.</span><span class="pln">setOnCheckedChangeListener</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    
    </span><span class="lit">@Override</span><span class="pln">
    </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> onCheckedChanged</span><span class="pun">(</span><span class="typ">CompoundButton</span><span class="pln"> compoundButton</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> b</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">switch</span><span class="pln"> </span><span class="pun">(</span><span class="pln">compoundButton</span><span class="pun">.</span><span class="pln">getId</span><span class="pun">()){</span><span class="pln">
            </span><span class="kwd">case</span><span class="pln"> R</span><span class="pun">.</span><span class="pln">id</span><span class="pun">.</span><span class="pln">tbtn_open</span><span class="pun">:</span><span class="pln">
                </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">compoundButton</span><span class="pun">.</span><span class="pln">isChecked</span><span class="pun">())</span><span class="pln"> </span><span class="typ">Toast</span><span class="pun">.</span><span class="pln">makeText</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">,</span><span class="str">"打开声音"</span><span class="pun">,</span><span class="typ">Toast</span><span class="pun">.</span><span class="pln">LENGTH_SHORT</span><span class="pun">).</span><span class="pln">show</span><span class="pun">();</span><span class="pln">
                </span><span class="kwd">else</span><span class="pln"> </span><span class="typ">Toast</span><span class="pun">.</span><span class="pln">makeText</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">,</span><span class="str">"打开声音"</span><span class="pun">,</span><span class="typ">Toast</span><span class="pun">.</span><span class="pln">LENGTH_SHORT</span><span class="pun">).</span><span class="pln">show</span><span class="pun">();</span><span class="pln">
                </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
            </span><span class="kwd">case</span><span class="pln"> R</span><span class="pun">.</span><span class="pln">id</span><span class="pun">.</span><span class="pln">swh_status</span><span class="pun">:</span><span class="pln">
                </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">compoundButton</span><span class="pun">.</span><span class="pln">isChecked</span><span class="pun">())</span><span class="pln"> </span><span class="typ">Toast</span><span class="pun">.</span><span class="pln">makeText</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">,</span><span class="str">"开关:ON"</span><span class="pun">,</span><span class="typ">Toast</span><span class="pun">.</span><span class="pln">LENGTH_SHORT</span><span class="pun">).</span><span class="pln">show</span><span class="pun">();</span><span class="pln">
                </span><span class="kwd">else</span><span class="pln"> </span><span class="typ">Toast</span><span class="pun">.</span><span class="pln">makeText</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">,</span><span class="str">"开关:OFF"</span><span class="pun">,</span><span class="typ">Toast</span><span class="pun">.</span><span class="pln">LENGTH_SHORT</span><span class="pun">).</span><span class="pln">show</span><span class="pun">();</span><span class="pln">
                </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
    
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    

    }


    ← 2.3.5.RadioButton(单选按钮)&Checkbox(复选框)cs
    下一篇:没有了