SlipButton.java:
package com.wistron.other; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; public class SlipButton extends View implements OnTouchListener { public interface OnChangedListener { abstract void OnChanged(String strName, boolean CheckState); } private String strName; private boolean enabled = true; public boolean flag = false; public boolean NowChoose = false; private boolean OnSlip = false; public float DownX = 0f, NowX = 0f; private Rect Btn_On, Btn_Off; private boolean isChgLsnOn = false; private OnChangedListener ChgLsn; private Bitmap bg_on, bg_off, slip_btn; public SlipButton(Context context) { super(context); init(); } public SlipButton(Context context, AttributeSet attrs) { super(context, attrs); init(); } public void setChecked(boolean fl) { if (fl) { flag = true; NowChoose = true; NowX = 80; } else { flag = false; NowChoose = false; NowX = 0; } } public void setEnabled(boolean b) { if (b) { enabled = true; } else { enabled = false; } } private void init() { bg_on = BitmapFactory.decodeResource(getResources(), R.drawable.on); bg_off = BitmapFactory.decodeResource(getResources(), R.drawable.off); slip_btn = BitmapFactory.decodeResource(getResources(), R.drawable.white); Btn_On = new Rect(0, 0, slip_btn.getWidth(), slip_btn.getHeight()); Btn_Off = new Rect(bg_off.getWidth() - slip_btn.getWidth(), 0, bg_off.getWidth(), slip_btn.getHeight()); setOnTouchListener(this); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Matrix matrix = new Matrix(); Paint paint = new Paint(); float x; { if (flag) { NowX = 80; flag = false; } if (NowX < (bg_on.getWidth() / 2)) canvas.drawBitmap(bg_off, matrix, paint); else canvas.drawBitmap(bg_on, matrix, paint); if (OnSlip) { if (NowX >= bg_on.getWidth()) x = bg_on.getWidth() - slip_btn.getWidth() / 2; else x = NowX - slip_btn.getWidth() / 2; } else { if (NowChoose) x = Btn_Off.left; else x = Btn_On.left; } if (x < 0) x = 0; else if (x > bg_on.getWidth() - slip_btn.getWidth()) x = bg_on.getWidth() - slip_btn.getWidth(); canvas.drawBitmap(slip_btn, x, 0, paint); } } public boolean onTouch(View v, MotionEvent event) { if (!enabled) { return false; } switch (event.getAction()) { case MotionEvent.ACTION_MOVE: NowX = event.getX(); break; case MotionEvent.ACTION_DOWN: if (event.getX() > bg_on.getWidth() || event.getY() > bg_on.getHeight()) return false; OnSlip = true; DownX = event.getX(); NowX = DownX; break; case MotionEvent.ACTION_UP: OnSlip = false; boolean LastChoose = NowChoose; if (event.getX() >= (bg_on.getWidth() / 2)) NowChoose = true; else NowChoose = false; if (isChgLsnOn && (LastChoose != NowChoose)) ChgLsn.OnChanged(strName, NowChoose); break; default: } invalidate(); return true; } public void SetOnChangedListener(String name, OnChangedListener l) { strName = name; isChgLsnOn = true; ChgLsn = l; } }
Activity中应用:
slipButton = (SlipButton)findViewById(R.id.slipbutton); slipButton.SetOnChangedListener("WIFI", this); slipButton.setChecked(true); @Override public void OnChanged(String strName, boolean CheckState) { // TODO Auto-generated method stub if(CheckState){ Toast.makeText(this, strName + "is opened!", 1000).show(); mHandler.sendEmptyMessage(1); }else{ Toast.makeText(this, strName + "is closed!", 1000).show(); mHandler.sendEmptyMessage(2); } }
相关推荐
在Android开发中,为了提供与iOS设备类似的用户体验,开发者经常需要实现特定的UI元素,例如Iphone上的滑动按钮(SlipButton)。本教程将详细讲解如何在Android中创建一个仿照iPhone风格的滑动按钮,并探讨其核心原理...
在Android开发中,滑动开关(SlipButton)是一种常见的用户界面组件,它允许用户通过简单的左右滑动操作来切换开关状态,通常用于开启或关闭某个功能。在本例中,我们关注的是一个模仿iOS风格的滑动开关实现,它在...
在Android开发中,SlipButton是一种特殊的按钮控件,它扩展了传统按钮的功能,允许用户通过左右滑动来触发不同的操作。这种交互方式在许多现代应用程序中被广泛使用,为用户提供了一种直观且有趣的交互体验。本文将...
"自定义SlipButton和高仿iPhone滑动按钮"就是一个这样的实践,它旨在为Android应用添加一个模仿iPhone滑动开关的组件。这个组件通常被称为滑动开关(Switch)或滑动选择器(Slider),它允许用户通过简单的滑动动作...
在Android开发中,UI设计是至关重要的一环,而自定义控件可以让我们更好地实现个性化界面。标题"slipbutton"提到的是一种自定义的切换开关控件,它提供了一种简单的方法来改变开关的样式,使得开发者可以根据需求...
"SlipButton"是模仿iPhone中的一种交互元素,它为Android应用提供了类似iOS滑动手势操作的功能。这种滑动按钮不仅能够提供独特的视觉体验,还能增加用户的互动性,使得应用程序的操作更加流畅自然。 1. **滑动操作...
Slipbutton是基于Android原生的ToggleButton或者Switch进行二次定制的组件,其核心在于滑动切换的效果,即用户可以通过手指滑动来切换按钮的状态。在设计上,Slipbutton通常会包含两个状态图标,分别代表开和关,...
在Android开发社区,有许多现成的滑动按钮库可以快速集成到项目中,例如`SlipButton`。从提供的文件名看,这个库可能是最佳选择。集成此类库,开发者只需在Gradle依赖中添加库的依赖,然后在布局XML中引入滑动按钮...
7. **跨平台兼容性**:CMD100如果是跨平台的应用,那么需要确保滑动按钮在不同的操作系统(如Windows、iOS、Android)和浏览器上都能正常工作。 8. **自定义设置**:滑动按钮可能允许用户自定义,比如改变颜色、...
本压缩包中的“安卓Android源码——自定义组件实现可滑动的ToggleButton的功能.zip”提供了一个实例,教我们如何通过源码实现一个具有滑动效果的ToggleButtom。ToggleButtom通常用于切换开关状态,而这个自定义组件...
一个Android常用的UI框架大苹果封装了世面上一些常用的UI组件,其中主要包括1、gifview组件,可以显示支持显示gif图片的显示。2、lettersort组件,在类似显示通讯录时,右侧有字母排序... (4)SlipButton,模拟按钮。
在Android开发中,实现上滑发送文字,下滑发送语音的功能,是通过自定义视图控件...`SlipButton.java`文件就是实现这一功能的核心,通过理解并解析这个类,我们可以了解到Android自定义视图开发的一些基本流程和技巧。
Android编程之滑动按钮事件实例详解 Android编程之滑动按钮事件实例详解是Android编程中的一种重要事件处理机制,本文将通过具体实例形式讲解Android滑动按钮功能的具体实现步骤、布局及功能实现相关操作技巧。 一...
在Android开发中,滑动开关(Switch)是一种常见的UI组件,用于用户进行是/否、开/关的选择操作。滑动开关通常由一个可左右...文件列表中的"slipButton"可能是自定义滑动开关的具体实现代码,可以进一步研究和学习。
在Android Studio中,我们可以创建一个名为`SlipButton`的新类,并让它继承自`ToggleButton`。这样,我们就有了自定义组件的基础框架。 ```java public class SlipButton extends ToggleButton { // 初始化代码,...
通过研究和理解`SlipButton-master`中的代码,开发者不仅可以学习到如何创建自定义控件,还能掌握Android图形绘制、触摸事件处理以及动画效果的实现技巧,这对于提升Android开发能力非常有帮助。同时,这样的控件还...
bigappleui 封装了世面上一些常用的UI组件,其中主要包括: 1、gifview组件,可以显示支持显示gif图片的显示。 2、lettersort组件,在类似显示通讯录时,右侧有字母排序,整个列表按...(4)SlipButton,模拟滑块按钮。
本实例讲解了如何在Android应用中实现这种功能,包括创建自定义的滑动按钮视图类`SlipButton`,以及如何在`MainActivity`中使用它。 `SlipButton`类继承自`View`,并实现了`OnTouchListener`接口。这个类的主要工作...
在Android开发中,我们经常需要根据项目需求定制特定的UI组件。本次我们将探讨如何通过自定义组件来实现一个可滑动的ToggleButton,该功能能够提供更丰富的交互体验,让用户通过滑动来切换开关状态,而不仅仅是点击...