首先效果图:
然后是分别建立三个文件,第一个是main.class,第二个是SlipButton.class,第三个是onchangeListener.class
main.class
importAndroid.app.Activity;<wbr><wbr><br>
import Android.os.Bundle;<wbr><wbr><br>
importAndroid.widget.Toast;<wbr><wbr><br><wbr><wbr><br>
public class Main extends Activity implements OnChangedListener{<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr>@Override<wbr><wbr><br><wbr><wbr><wbr> public voidonCreate(Bundle savedInstanceState){<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>super.onCreate(savedInstanceState);<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>setContentView(R.layout.main);<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>SlipButton myBtn =(SlipButton)findViewById(R.id.slipBtn);//获得指定控件<wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>myBtn.SetOnChangedListener(this);//为控件设置监听器<wbr><wbr><wbr><br><wbr><wbr><wbr>}<wbr><wbr><br><wbr><wbr><br><wbr><wbr><wbr>@Override<wbr><wbr><br><wbr><wbr><wbr> public voidOnChanged(boolean CheckState){//当按钮状态被改变时<wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>// TODO Auto-generated methodstub<wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>if(CheckState)<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>Toast.makeText(this,"打开了..." ,Toast.LENGTH_SHORT).show();<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>else<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>Toast.makeText(this,"关闭了..." ,Toast.LENGTH_SHORT).show();<wbr><wbr><br><wbr><wbr><wbr>}<wbr><wbr><br>
}<wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
SlipButton.class
importAndroid.content.Context;<wbr><wbr><br>
importAndroid.graphics.Bitmap;<wbr><wbr><br>
importAndroid.graphics.BitmapFactory;<wbr><wbr><br>
importAndroid.graphics.Canvas;<wbr><wbr><br>
importAndroid.graphics.Matrix;<wbr><wbr><br>
importAndroid.graphics.Paint;<wbr><wbr><br>
importAndroid.graphics.Rect;<wbr><wbr><br>
importAndroid.util.AttributeSet;<wbr><wbr><br>
importAndroid.view.MotionEvent;<wbr><wbr><br>
import Android.view.View;<wbr><wbr><br>
importAndroid.view.View.OnTouchListener;<wbr><wbr><br><wbr><wbr><br>
public class SlipButton extends View implementsOnTouchListener{<wbr><wbr><br><wbr><wbr><br><wbr><wbr><wbr> privateboolean NowChoose =false;//记录当前按钮是否打开,true为打开,flase为关闭<wbr><wbr><wbr><br><wbr><wbr><wbr> privateboolean OnSlip =false;//记录用户是否在滑动的变量<wbr><wbr><wbr><br><wbr><wbr><wbr> privatefloatDownX,NowX;//按下时的x,当前的x,<wbr><wbr><wbr><br><wbr><wbr><wbr> private RectBtn_On,Btn_Off;//打开和关闭状态下,游标的Rect<wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr> privateboolean isChgLsnOn =false;<wbr><wbr><br><wbr><wbr><wbr> privateOnChangedListener ChgLsn;<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr> privateBitmapbg_on,bg_off,slip_btn;<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr> publicSlipButton(Context context){<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>super(context);<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>// TODO Auto-generated constructorstub<wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>init();<wbr><wbr><br><wbr><wbr><wbr>}<wbr><wbr><br><wbr><wbr><br><wbr><wbr><wbr> publicSlipButton(Context context, AttributeSet attrs){<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>super(context, attrs);<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>// TODO Auto-generated constructorstub<wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>init();<wbr><wbr><br><wbr><wbr><wbr>}<wbr><wbr><br><wbr><wbr><br><wbr><wbr><wbr> private voidinit(){//初始化<wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>//载入图片资源<wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>bg_on = BitmapFactory.decodeResource(getResources(),R.drawable.slip_bg_on);<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>bg_off = BitmapFactory.decodeResource(getResources(),R.drawable.slip_bg_off);<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>slip_btn = BitmapFactory.decodeResource(getResources(),R.drawable.slip_btn);<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>//获得需要的Rect数据<wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>Btn_On = newRect(0,0,slip_btn.getWidth(),slip_btn.getHeight());<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>Btn_Off = new Rect(<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
分享到:
相关推荐
本教程将深入探讨如何在Android应用中实现滑动开关组件,包括基本使用、自定义样式以及事件监听。 首先,Android SDK提供了内置的`SwitchCompat`(对于兼容库)或`Switch`(对于API 14以上)控件,我们可以直接在...
总之,自定义Android滑动开关是一个涉及UI绘制、触摸事件处理和状态管理的过程。通过这种方式,开发者可以创造出符合项目需求的独特组件,提高应用程序的用户体验。提供的资源链接提供了更详细的实现步骤和演示,...
本教程将深入讲解如何在Android应用中创建和定制滑动开关,并探讨相关的设计原则和实现细节。 首先,Android的滑动开关组件是基于`SwitchCompat`(在`androidx.appcompat.widget`包中)或原生的`ToggleButton`。`...
通过查看和学习这些代码,你可以更深入地理解如何在Android应用中实现滑动开关和动画效果。 总之,创建一个带有滑动和动画效果的Android开关,需要掌握自定义视图、触摸事件处理、动画API以及UI设计技巧。通过不断...
首先,滑动开关在Android中通常由Switch或CompoundButton类来实现,但我们为了满足特定需求,需要创建一个自定义的View类。创建一个新的Java类,继承自CompoundButton,因为这个类已经包含了开关的基本行为和回调...
在Android开发中,滑动开关(Switch)是一种常见的UI组件,它允许用户通过左右滑动来切换开关状态,通常用于开启或关闭某些功能。滑动开关不仅提供了视觉上的交互反馈,还增强了用户体验,因为它允许用户直观地看到...
在编程中,实现滑动开关功能通常涉及到触摸事件处理、图形渲染以及状态管理等多个技术环节。 在iOS和Android系统中,滑动开关通常有各自特定的组件。在iOS中,滑动开关称为UISwitch,而在Android中,我们使用Switch...
本文将深入探讨如何在Android中模仿iOS风格的滑动开关以及实现Material Design的滑动开关效果。 **一、iOS风格的滑动开关** iOS的滑动开关,又称UISwitch,在设计上通常具有明确的分隔线和明显的颜色区分,以展示...
本教程将深入探讨如何实现一个滑动选择开关(Slide Switch)的自定义控件,该控件通常用于开启或关闭某个功能,如开启蓝牙、Wi-Fi等。 首先,我们需要创建一个新的Java类,继承自Android的`View`类或者`...
Android Studio 实现滑动开关 Android Studio 是一款功能强大且流行的集成开发环境(IDE),它提供了许多功能来帮助开发者快速构建高质量的 Android 应用程序。在这个资源中,我们将详细介绍如何使用 Android ...
在Android开发中,滑动开关(Switch)是一种常用的UI组件,它允许用户通过左右滑动来切换开关状态,通常用于二选一的选择场景,如开启/关闭某项功能。滑动开关在Android SDK中被定义为`SwitchCompat`或`Switch`控件...
本篇文章将深入探讨如何在Android中创建一个自定义的滑动开关控件。 首先,我们需要了解滑动开关的基本构成。滑动开关通常由两部分组成:一个可滑动的轨道(track)和一个滑块(thumb),用户通过拖动滑块在轨道上...
在Android开发中,为了提供与iOS相似的用户体验,开发者经常需要创建自定义控件来实现特定的交互效果,比如仿iOS的滑动开关。本文将深入探讨如何在Android平台上实现这样一个仿iOS风格的滑动开关(Slide Switch)。 ...
本篇将深入探讨如何在Android应用中实现苹果风格的滑动开关按钮。 首先,Android原生提供了一个名为`SwitchCompat`的组件,它在`androidx.appcompat.widget`包中,适用于兼容多种Android版本。这个组件提供了类似...
在Android开发中,为了提供与iOS类似的用户体验,我们经常需要实现滑动开关(Slide Switch)这一控件。滑动开关通常被用作一种二元选择器,用户可以通过左右滑动来切换开关的状态,例如开启或关闭某个功能。下面将...
在本例中,我们关注的是一个模仿iOS风格的滑动开关实现,它在Android平台上运行良好,并且已经修复了初始状态显示的bug。 滑动开关在Android中通常被实现为Switch或CompoundButton的子类,例如ToggleButton。但是,...
本文将深入探讨如何在Android应用中创建一个滑动开关(Slider Switch),并关注其背后的实现原理。 滑动开关通常被称为ToggleSwitch或者SwitchCompat,在Android中,它属于Compound Button的一种,允许用户在两种...
在默认情况下,Android SDK提供了内置的`SwitchCompat`或`Switch`视图,但有时候开发者可能希望创建更加个性化、具有独特设计的滑动开关。本篇将深入探讨如何在Android中自定义`Switch Button`,打造既漂亮又美观的...
这篇博客文章的配套源码提供了一个自定义滑动开关的实现,让我们深入探讨这个自定义控件的设计和实现。 首先,滑动开关的基本原理是利用Android的View类或者CompoundButton类进行扩展。在这个例子中,开发者可能...
通过以上步骤,我们就可以在Android应用中实现一个仿iOS的滑动开关。这个过程涉及到Android图形绘制、触摸事件处理、自定义View以及UI交互等多个方面的知识,对于提升Android开发技能大有裨益。而"滑动开关"这个...