您的位置:首页 > 移动开发 > Android开发

Android滑动实现开关

2017-12-06 19:51 375 查看
首先效果图:



然后是分别建立三个文件,第一个是main.class,第二个是SlipButton.class,第三个是 onchangeListener.class

main.class

import Android.app.Activity;  

import Android.os.Bundle;  

import Android.widget.Toast;  

  

public class Main extends Activity implements OnChangedListener {  

      

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

          

        SlipButton myBtn =(SlipButton) findViewById(R.id.slipBtn);//获得指定控件   

        myBtn.SetOnChangedListener(this);//为控件设置监听器   

    }  

  

    @Override  

    public void OnChanged(boolean CheckState) {//当按钮状态被改变时   

        // TODO Auto-generated method stub   

        if(CheckState)  

            Toast.makeText(this,"打开了..." , Toast.LENGTH_SHORT).show();  

        else  

            Toast.makeText(this,"关闭了..." , Toast.LENGTH_SHORT).show();  

    }  



SlipButton.class

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{  

  

    private boolean NowChoose = false;//记录当前按钮是否打开,true为打开,flase为关闭   

    private boolean OnSlip = false;//记录用户是否在滑动的变量   

    private float DownX,NowX;//按下时的x,当前的x,   

    private Rect Btn_On,Btn_Off;//打开和关闭状态下,游标的Rect   

      

    private boolean isChgLsnOn = false;  

    private OnChangedListener ChgLsn;  

      

    private Bitmap bg_on,bg_off,slip_btn;  

      

    public SlipButton(Context context) {  

        super(context);  

        // TODO Auto-generated constructor stub   

        init();  

    }  

  

    public SlipButton(Context context, AttributeSet attrs) {  

        super(context, attrs);  

        // TODO Auto-generated constructor stub   

        init();  

    }  

  

    private void init(){//初始化   

        //载入图片资源   

        bg_on = BitmapFactory.decodeResource(getResources(), R.drawable.slip_bg_on);  

        bg_off = BitmapFactory.decodeResource(getResources(), R.drawable.slip_bg_off);  

        slip_btn = BitmapFactory.decodeResource(getResources(), R.drawable.slip_btn);  

        //获得需要的Rect数据   

        Btn_On = new Rect(0,0,slip_btn.getWidth(),slip_btn.getHeight());  

        Btn_Off = new Rect(  

                bg_off.getWidth()-slip_btn.getWidth(),  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: