精华内容
下载资源
问答
  • VC++实现的切换按钮控件源码

    热门讨论 2013-01-23 14:09:21
    VC++实现的切换按钮控件源码,用一个按钮实现两个选项的切换,带切换动画,类似于开关按钮。自绘实现。
  • 主要介绍了python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例,需要的朋友可以参考下
  • PyQt5切换按钮控件QPushButton简介QAbstractButton类为抽象类,不能实例化,必须由其他的按钮类继承QAbstractButton类,来实现不同的功能和表现形式,常见的按钮QPushButton,QToolButton,QRadioButton和QCheckBox...

    PyQt5切换按钮控件QPushButton简介

    QAbstractButton类为抽象类,不能实例化,必须由其他的按钮类继承QAbstractButton类,来实现不同的功能和表现形式,常见的按钮QPushButton,QToolButton,QRadioButton和QCheckBox这些按钮均继承自QAbstractButton类,根据各自的使用场景通过图形显示出来

    QAbstractButton提供的状态如下表

    状态

    含义

    isDown()

    提示按钮是否已按下

    isChecked()

    提示按钮是否已经标记

    isEnable()

    提示按钮是否可以被用户点击

    isCheckAble()

    提示按钮是否为可标记的

    setAutoRepeat()

    设置按钮是否在用户长按时可以自动重复执行

    QAbstractButton提供的信号如下表

    信号

    含义

    Pressed

    当鼠标指针在按钮上并按下左键时触发该信号

    Released

    当鼠标左键被释放时触发该信号

    Clicked

    当鼠标左键被按下然后释放时,或者快捷键被释放时触发该信号

    Toggled

    当按钮的标记状态发生改变时触发该信号

    QPUshButton类中的常用方法

    方法

    描述

    setCheckable()

    设置按钮是否已经被选中,如果设置True,则表示按钮将保持已点击和释放状态

    toggle()

    在按钮状态之间进行切换

    setIcon()

    设置按钮上的图标

    setEnabled()

    设置按钮是否可以使用,当设置为False时,按钮变成不可用状态,点击它不会发射信号

    isChecked()

    返回按钮的状态,返回值为True或者False

    setDefault()

    设置按钮的默认状态

    setText()

    设置按钮的显示文本

    text()

    返回按钮的显示文本

    为QPushButton设置快捷键

    通过按钮名字能为QPushButton设置快捷键,比如名字为‘&Download'的按键,它的快捷键是‘Alt+D'。其规则是;想要实现快捷键为“Alt+D”,那么按钮的名字里有D这个字母,并且在D的前面加上“&”,这个字母D一般是按钮名称的首字母,而且在按钮显示时。“&”不会显示出来,如果想显示,那么需要转义,核心代码如下

    self.btn4=QPushButton('&Download')

    self.btn4.setDefault(True)

    QPushButton按钮的使用实例

    import sys

    from PyQt5.QtCore import *

    from PyQt5.QtGui import *

    from PyQt5.QtWidgets import *

    class Form(QDialog):

    def __init__(self,parent=None):

    super(Form, self).__init__(parent)

    #垂直布局

    layout=QVBoxLayout()

    #创建按钮1

    self.btn1=QPushButton('Button1')

    #setCheckable():设置按钮是否已经被选中,如果为True,则表示按钮将保持已点击和释放状态

    self.btn1.setCheckable(True)

    #toggle():在按钮状态之间进行切换

    self.btn1.toggle()

    #点击信号与槽函数进行连接,这一步实现:在控制台输出被点击的按钮

    self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1))

    #点击信号与槽函数进行连接,实现的目的:输入安妞的当前状态,按下还是释放

    self.btn1.clicked.connect(self.btnstate)

    #添加控件到布局中

    layout.addWidget(self.btn1)

    #创建按钮2

    self.btn2=QPushButton('image')

    #为按钮2添加图标

    self.btn2.setIcon(QIcon(QPixmap('E:\pyqt5快速开发与实战\第四章\images\python.png')))

    ##点击信号与槽函数进行连接,这一步实现:在控制台输出被点击的按钮

    self.btn2.clicked.connect(lambda :self.whichbtn(self.btn2))

    layout.addWidget(self.btn2)

    self.btn3=QPushButton('Disabled')

    #setEnabled()设置按钮是否可以使用,当设置为False的时候,按钮变成不可用状态,点击它不会发射信号

    self.btn3.setEnabled(False)

    layout.addWidget(self.btn3)

    #创建按钮并添加快捷键

    self.btn4=QPushButton('&Download')

    #setDefault():设置按钮的默认状态

    self.btn4.setDefault(True)

    ##点击信号与槽函数进行连接,这一步实现:在控制台输出被点击的按钮

    self.btn4.clicked.connect(lambda :self.whichbtn(self.btn4))

    layout.addWidget(self.btn4)

    self.setWindowTitle("Button demo")

    self.setLayout(layout)

    def btnstate(self):

    #isChecked():判断按钮的状态,返回值为True或False

    if self.btn1.isChecked():

    print('button pressed')

    else:

    print('button released')

    def whichbtn(self,btn):

    #输出被点击的按钮

    print('clicked button is '+btn.text())

    if __name__ == '__main__':

    app=QApplication(sys.argv)

    btnDemo=Form()

    btnDemo.show()

    sys.exit(app.exec_())

    效果图如下

    QPushButton代码分析:

    在这个例子中,创建了四个按钮,这四个QPushButton对象被定义为类的实例变量,每个按钮都将clicked的信号发送给指定的槽函数,来响应按钮点击的事件

    第一个按钮btn1,**通过toggle()函数来切换按钮的状态,其核心代码是

    self.btn1=QPushButton('Button1')

    self.btn1.setCheckable(True)

    self.btn1.toggle()

    当这个按钮点击时,将clicked信号发送给槽函数btnstate(),通过btn.isChecked来获得按钮是否被点击或者释放的状态,其核心代码是

    self.btn1.clicked.connect(self.btnstate)

    还可以通过lambda表达式来传递额外的参数btn1,将clicked信号发送给槽函数whichbtn(),其核心代码

    self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1))

    第二个按钮btn2,上面显示一个图标,使用setIcon()方法接受一个QPixmap对象的图像文件作为输入参数,其核心代码是

    self.btn2.setIcon(QIcon(QPixmap('E:\pyqt5快速开发与实战\第四章\images\python.png')))

    第三个按钮btn3,使用setEnabled()方法来禁用btn3按钮

    self.btn3.setEnabled(False)

    第四个按钮btn4,使用setDefault()方法·来设置按钮的默认状态。快捷键是‘&+文本'(&Download),通过‘Alt+D'快捷键来调用槽函数

    self.btn4=QPushButton('&Download')

    本文主要讲解了PyQt5切换按钮控件QPushButton详细使用方法与实例,更多关于PyQt5控件教程请查看下面的相关链接

    展开全文
  • PyQt5切换按钮控件QPushButton简介QAbstractButton类为抽象类,不能实例化,必须由其他的按钮类继承QAbstractButton类,来实现不同的功能和表现形式,常见的按钮QPushButton,QToolButton,QRadioButton和QCheckBox...

    PyQt5切换按钮控件QPushButton简介

    QAbstractButton类为抽象类,不能实例化,必须由其他的按钮类继承QAbstractButton类,来实现不同的功能和表现形式,常见的按钮QPushButton,QToolButton,QRadioButton和QCheckBox这些按钮均继承自QAbstractButton类,根据各自的使用场景通过图形显示出来

    QAbstractButton提供的状态如下表

    状态

    含义

    isDown()

    提示按钮是否已按下

    isChecked()

    提示按钮是否已经标记

    isEnable()

    提示按钮是否可以被用户点击

    isCheckAble()

    提示按钮是否为可标记的

    setAutoRepeat()

    设置按钮是否在用户长按时可以自动重复执行

    QAbstractButton提供的信号如下表

    信号

    含义

    Pressed

    当鼠标指针在按钮上并按下左键时触发该信号

    Released

    当鼠标左键被释放时触发该信号

    Clicked

    当鼠标左键被按下然后释放时,或者快捷键被释放时触发该信号

    Toggled

    当按钮的标记状态发生改变时触发该信号

    QPUshButton类中的常用方法

    方法

    描述

    setCheckable()

    设置按钮是否已经被选中,如果设置True,则表示按钮将保持已点击和释放状态

    toggle()

    在按钮状态之间进行切换

    setIcon()

    设置按钮上的图标

    setEnabled()

    设置按钮是否可以使用,当设置为False时,按钮变成不可用状态,点击它不会发射信号

    isChecked()

    返回按钮的状态,返回值为True或者False

    setDefault()

    设置按钮的默认状态

    setText()

    设置按钮的显示文本

    text()

    返回按钮的显示文本

    为QPushButton设置快捷键

    通过按钮名字能为QPushButton设置快捷键,比如名字为‘&Download'的按键,它的快捷键是‘Alt+D'。其规则是;想要实现快捷键为“Alt+D”,那么按钮的名字里有D这个字母,并且在D的前面加上“&”,这个字母D一般是按钮名称的首字母,而且在按钮显示时。“&”不会显示出来,如果想显示,那么需要转义,核心代码如下

    self.btn4=QPushButton('&Download')

    self.btn4.setDefault(True)

    QPushButton按钮的使用实例

    import sys

    from PyQt5.QtCore import *

    from PyQt5.QtGui import *

    from PyQt5.QtWidgets import *

    class Form(QDialog):

    def __init__(self,parent=None):

    super(Form, self).__init__(parent)

    #垂直布局

    layout=QVBoxLayout()

    #创建按钮1

    self.btn1=QPushButton('Button1')

    #setCheckable():设置按钮是否已经被选中,如果为True,则表示按钮将保持已点击和释放状态

    self.btn1.setCheckable(True)

    #toggle():在按钮状态之间进行切换

    self.btn1.toggle()

    #点击信号与槽函数进行连接,这一步实现:在控制台输出被点击的按钮

    self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1))

    #点击信号与槽函数进行连接,实现的目的:输入安妞的当前状态,按下还是释放

    self.btn1.clicked.connect(self.btnstate)

    #添加控件到布局中

    layout.addWidget(self.btn1)

    #创建按钮2

    self.btn2=QPushButton('image')

    #为按钮2添加图标

    self.btn2.setIcon(QIcon(QPixmap('E:\pyqt5快速开发与实战\第四章\images\python.png')))

    ##点击信号与槽函数进行连接,这一步实现:在控制台输出被点击的按钮

    self.btn2.clicked.connect(lambda :self.whichbtn(self.btn2))

    layout.addWidget(self.btn2)

    self.btn3=QPushButton('Disabled')

    #setEnabled()设置按钮是否可以使用,当设置为False的时候,按钮变成不可用状态,点击它不会发射信号

    self.btn3.setEnabled(False)

    layout.addWidget(self.btn3)

    #创建按钮并添加快捷键

    self.btn4=QPushButton('&Download')

    #setDefault():设置按钮的默认状态

    self.btn4.setDefault(True)

    ##点击信号与槽函数进行连接,这一步实现:在控制台输出被点击的按钮

    self.btn4.clicked.connect(lambda :self.whichbtn(self.btn4))

    layout.addWidget(self.btn4)

    self.setWindowTitle("Button demo")

    self.setLayout(layout)

    def btnstate(self):

    #isChecked():判断按钮的状态,返回值为True或False

    if self.btn1.isChecked():

    print('button pressed')

    else:

    print('button released')

    def whichbtn(self,btn):

    #输出被点击的按钮

    print('clicked button is '+btn.text())

    if __name__ == '__main__':

    app=QApplication(sys.argv)

    btnDemo=Form()

    btnDemo.show()

    sys.exit(app.exec_())

    效果图如下

    b4648ac2235001dcd167ef5ac22ba6f5.png

    QPushButton代码分析:

    在这个例子中,创建了四个按钮,这四个QPushButton对象被定义为类的实例变量,每个按钮都将clicked的信号发送给指定的槽函数,来响应按钮点击的事件

    第一个按钮btn1,**通过toggle()函数来切换按钮的状态,其核心代码是

    self.btn1=QPushButton('Button1')

    self.btn1.setCheckable(True)

    self.btn1.toggle()

    当这个按钮点击时,将clicked信号发送给槽函数btnstate(),通过btn.isChecked来获得按钮是否被点击或者释放的状态,其核心代码是

    self.btn1.clicked.connect(self.btnstate)

    还可以通过lambda表达式来传递额外的参数btn1,将clicked信号发送给槽函数whichbtn(),其核心代码

    self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1))

    第二个按钮btn2,上面显示一个图标,使用setIcon()方法接受一个QPixmap对象的图像文件作为输入参数,其核心代码是

    self.btn2.setIcon(QIcon(QPixmap('E:\pyqt5快速开发与实战\第四章\images\python.png')))

    第三个按钮btn3,使用setEnabled()方法来禁用btn3按钮

    self.btn3.setEnabled(False)

    第四个按钮btn4,使用setDefault()方法·来设置按钮的默认状态。快捷键是‘&+文本'(&Download),通过‘Alt+D'快捷键来调用槽函数

    self.btn4=QPushButton('&Download')

    本文主要讲解了PyQt5切换按钮控件QPushButton详细使用方法与实例,更多关于PyQt5控件教程请查看下面的相关链接

    展开全文
  • 一个支持多风格切换的VB按钮控件实例,支持11种按钮风格的切换,每种的风格都挺漂亮简洁,按钮上还带有气泡提示效果,大大增强了按钮的功能。包括的风格有Java风格、Office XP风格、Windows xp风格、苹果风格、水晶...
  • 准备两张图片,按钮背景,上面的小开关 创建一个类MyToggleBtn,继承View 实现三个构造方法,传递上下文, 实现构造方法,传递Context对象,在java代码中实例化时主要使用这个 实现构造方法,传递Context对象,...

    准备两张图片,按钮背景,上面的小开关

    创建一个类MyToggleBtn,继承View

    实现三个构造方法,传递上下文,

    实现构造方法,传递Context对象,在java代码中实例化时主要使用这个

    实现构造方法,传递Context对象,AttributeSet对象,在布局文件中主要使用

     

    View对象显示在屏幕上,有几个重要步骤

    1.构造方法创建对象

    2.测量view的大小 onSeasure(int,int)

    3.确定view的位置,view自身有一些建议权,决定权在父view手中 onLayout()

    4.绘制view的内容 onDraw(Canvas)

     

    构造方法,初始化view

    调用BitmapFactory.decodeResurce()方法,把图片资源转成Bitmap对象,参数:Resource对象(getResources()),资源id

     

    重写onMesaure()方法,

    不要调用父类

    调用setMeasuredDimension()方法,参数:宽度,高度;调用背景Bitmap对象的getWidth()getHeight()

     

    重写onDraw()方法,传递进来Canvas对象

    调用Canvas对象的drawBitmap()方法,参数:Bitmap对象,左边点(0),上边点(0),Paint对象

    获取Paint对象,new出来

    调用Paint对象的setAntiAlias(),设置抗锯齿,参数:布尔值

     

     

    滑动按钮

    滑动按钮目前的位置,00,状态是 关

    canvas.drawBitmap(bitmapBtn, 0, 0, paint);

    滑动按钮的位置在,背景图的宽度-滑动按钮的宽度,0,状态是 开

    canvas.drawBitmap(bitmapBtn, 背景图的宽度-滑动按钮的宽度, 0, paint);

     

    定义成员变量currentState存储当前状态,值:布尔值

    调用setOnClickListener()方法,设置点击事件,参数:this

    当前类实现obClickListener接口,实现onClick()方法

    切换当前状态currentState=!currentState

     

    判断当前状态

    如果为真,滑动按钮的左边是背景图的宽度-滑动按钮的宽度

    如果为假,滑动按钮的左边是0

    调用invalidate()方法,刷新当前视图

    MyToggleBtn.java

     

    package com.tsh.myswitchbtn;
    
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.view.View;
    import android.view.View.OnClickListener;
    
    public class MyToggleBtn extends View implements OnClickListener {
        //背景图片
        private Bitmap bitmapBackground;
        //按钮图片
        private Bitmap bitmapBtn;
        private Paint paint;
        /**
         * 布局文件中使用
         * @param context
         * @param attrs
         */
        public MyToggleBtn(Context context, AttributeSet attrs) {
            super(context, attrs);
            initView();
        }
        /**
         * 初始化view
         */
        private void initView() {
            bitmapBackground=BitmapFactory.decodeResource(getResources(), R.drawable.switch_background);
            bitmapBtn=BitmapFactory.decodeResource(getResources(), R.drawable.slide_button);
            paint=new Paint();
            paint.setAntiAlias(true);
            //点击事件
            setOnClickListener(this);
        }
        /**
         * 计算大小
         */
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            setMeasuredDimension(bitmapBackground.getWidth(), bitmapBackground.getHeight());
        }
        //当前状态
        private boolean currentState=false;
        //滑动按钮的当前left
        private float slideBtnLeft=0;
        /**
         * 绘制view
         */
        @Override
        protected void onDraw(Canvas canvas) {
            //绘制背景
            canvas.drawBitmap(bitmapBackground, 0, 0, paint);
            //绘制滑动按钮
            canvas.drawBitmap(bitmapBtn, slideBtnLeft, 0, paint);
        }
        /**
         * 点击事件
         */
        @Override
        public void onClick(View v) {
            currentState=!currentState;
            if(currentState==true){
                slideBtnLeft=bitmapBackground.getWidth()-bitmapBtn.getWidth();
            }else{
                slideBtnLeft=0;
            }
            invalidate();
        }
    
    }

     

    布局:

    <RelativeLayout 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"
        tools:context="${relativePackage}.${activityClass}" >
    
        <com.tsh.myswitchbtn.MyToggleBtn
            android:layout_centerInParent="true"
            android:id="@+id/my_toggle_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
    
    </RelativeLayout>

     

    展开全文
  • // 根据当前按下的位置, 和控件中心的位置进行比较. boolean state = currentX > center; // 如果开关状态变化了, 通知界面. 里边开关状态更新了. if (state != mSwitchState && onSwitchListener != null) { ...

    1.自定义属性values/attrs.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <declare-styleable name="ToggleView">
            <attr name="switch_background" format="reference" />
            <attr name="slide_button" format="reference" />
            <attr name="switch_state" format="boolean" />
        </declare-styleable>
    
    </resources>

    2.view的java文件:

    package zdl.switchbutton.view;
    
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
    import android.view.View;
    
    /**
     * 自定义开关
     *
     */
    public class ToggleView extends View {
    
        private Bitmap switchBackgroupBitmap; // 背景图片
        private Bitmap slideButtonBitmap; // 滑块图片
        private Paint paint; // 画笔
        private boolean mSwitchState = false; // 开关状态, 默认false
        private float currentX;
    
        /**
         * 用于代码创建控件
         *
         * @param context
         */
        public ToggleView(Context context) {
            super(context);
            init();
        }
    
        /**
         * 用于在xml里使用, 可指定自定义属性
         *
         * @param context
         * @param attrs
         */
        public ToggleView(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
            // 获取配置的自定义属性
            String namespace = "http://toly.android.com/apk/res/zdl.switchbutton.view.ToggleView";
            int switchBackgroundResource = attrs.getAttributeResourceValue(namespace, "switch_background", -1);
            int slideButtonResource = attrs.getAttributeResourceValue(namespace, "slide_button", -1);
    
            mSwitchState = attrs.getAttributeBooleanValue(namespace, "switch_state", false);
            setSwitchBackgroundResource(switchBackgroundResource);
            setSlideButtonResource(slideButtonResource);
        }
    
        /**
         * 用于在xml里使用, 可指定自定义属性, 如果指定了样式, 则走此构造函数
         *F:\Android\SwitchButton\app\src\main\java\zdl\switchbutton\view\ToggleView.java
         * zdl.switchbutton.view.ToggleView
         * @param context
         * @param attrs
         * @param defStyle
         */
        public ToggleView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            init();
        }
    
        private void init() {
            paint = new Paint();
        }
    
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            setMeasuredDimension(switchBackgroupBitmap.getWidth(), switchBackgroupBitmap.getHeight());
        }
    
        // Canvas 画布, 画板. 在上边绘制的内容都会显示到界面上.
        @Override
        protected void onDraw(Canvas canvas) {
            // 1. 绘制背景
            canvas.drawBitmap(switchBackgroupBitmap, 0, 0, paint);
    
            // 2. 绘制滑块
    
            if (isTouchMode) {
                // 根据当前用户触摸到的位置画滑块
    
                // 让滑块向左移动自身一半大小的位置
                float newLeft = currentX - slideButtonBitmap.getWidth() / 2.0f;
    
                int maxLeft = switchBackgroupBitmap.getWidth() - slideButtonBitmap.getWidth();
    
                // 限定滑块范围
                if (newLeft < 0) {
                    newLeft = 0; // 左边范围
                } else if (newLeft > maxLeft) {
                    newLeft = maxLeft; // 右边范围
                }
    
                canvas.drawBitmap(slideButtonBitmap, newLeft, 0, paint);
            } else {
                // 根据开关状态boolean, 直接设置图片位置
                if (mSwitchState) {// 开
                    int newLeft = switchBackgroupBitmap.getWidth() - slideButtonBitmap.getWidth();
                    canvas.drawBitmap(slideButtonBitmap, newLeft, 0, paint);
                } else {// 关
                    canvas.drawBitmap(slideButtonBitmap, 0, 0, paint);
                }
            }
    
        }
    
        boolean isTouchMode = false;
        private OnSwitchListener onSwitchListener;
    
        // 重写触摸事件, 响应用户的触摸.
        @Override
        public boolean onTouchEvent(MotionEvent event) {
    
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    isTouchMode = true;
                    System.out.println("event: ACTION_DOWN: " + event.getX());
                    currentX = event.getX();
                    break;
                case MotionEvent.ACTION_MOVE:
                    System.out.println("event: ACTION_MOVE: " + event.getX());
                    currentX = event.getX();
                    break;
                case MotionEvent.ACTION_UP:
                    isTouchMode = false;
                    System.out.println("event: ACTION_UP: " + event.getX());
                    currentX = event.getX();
    
                    float center = switchBackgroupBitmap.getWidth() / 2.0f;
    
                    // 根据当前按下的位置, 和控件中心的位置进行比较.
                    boolean state = currentX > center;
    
                    // 如果开关状态变化了, 通知界面. 里边开关状态更新了.
                    if (state != mSwitchState && onSwitchListener != null) {
                        // 把最新的boolean, 状态传出去了
                        onSwitchListener.onStateUpdate(state);
                    }
    
                    mSwitchState = state;
                    break;
    
                default:
                    break;
            }
    
            // 重绘界面
            invalidate(); // 会引发onDraw()被调用, 里边的变量会重新生效.界面会更新
    
            return true; // 消费了用户的触摸事件, 才可以收到其他的事件.
        }
    
        /**
         * 设置背景图
         *
         * @param switchBackground
         */
        public void setSwitchBackgroundResource(int switchBackground) {
            switchBackgroupBitmap = BitmapFactory.decodeResource(getResources(), switchBackground);
        }
    
        /**
         * 设置滑块图片资源
         *
         * @param slideButton
         */
        public void setSlideButtonResource(int slideButton) {
            slideButtonBitmap = BitmapFactory.decodeResource(getResources(), slideButton);
        }
    
        /**
         * 设置开关状态
         */
        public void setSwitchState(boolean mSwitchState) {
            this.mSwitchState = mSwitchState;
        }
    
        public interface OnSwitchListener {
            // 状态回调, 把当前状态传出去
            void onStateUpdate(boolean state);
        }
    
        public void setOnSwitchListener(OnSwitchListener onSwitchListener) {
            this.onSwitchListener = onSwitchListener;
        }
    
    }
    
    


    3.layout中使用

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:toly="http://toly.android.com/apk/res/zdl.switchbutton.view.ToggleView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
    <zdl.switchbutton.view.ToggleView
        android:id="@+id/toggleView"
        toly:switch_background="@drawable/switch_background"
        toly:slide_button="@drawable/slide_button"
        toly:switch_state="false"
        android:layout_width="20dp"
        android:layout_height="wrap_content"/>
    </LinearLayout>

    4.MainActivity.java中:

    package zdl.switchbutton;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Toast;
    
    import zdl.switchbutton.view.ToggleView;
    
    public class MainActivity extends AppCompatActivity {
    
        private Toolbar mTb;
        private ToggleView toggleView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            toggleView = (ToggleView) findViewById(R.id.toggleView);
            // 设置开关更新监听
            toggleView.setOnSwitchListener(new ToggleView.OnSwitchListener(){
    
                @Override
                public void onStateUpdate(boolean state) {
                    Toast.makeText(getApplicationContext(), "state: " + state, 0).show();
                }
    
            });
    
    
    }
    


    转载于:https://www.cnblogs.com/toly-top/p/9782039.html

    展开全文
  • 我有一个包含不同类型控件的窗口。在class FindReplaceWindow(wx.MiniFrame):def __init__(self, parent):Style = wx.DEFAULT_MINIFRAME_STYLE|wx.SYSTEM_MENU|wx.CLOSE_BOXsuper(FindReplaceWindow, self).__init__...
  • GUI界面设计中,按钮是最常用的触发执行交互操作的控件。PyQt中根据不同的使用场景将按钮分为不同的表现形式。按钮基类是QAbstractButton。QAbstractButton提供的状态状态含义isDown()提示按钮是否被按下isChecked()...
  • C#中英文切换,实现菜单,工具栏,按钮控件的中英文切换
  • 能有多种状态指示,安防领域一般用来表示防区或者设备,可以直接显示防区号,有多种状态颜色指示,例如布防、撤防、旁路、报警、离线、在线等状态,可以作为一个通用的设备按钮对象使用。实现的功能 * 1:可设置防区...
  • 经过查找,找到出现这个问题...2.每次切换界面时没有释放完毕内存,这里推荐使用WM_DeleteWindow();函数调用后释放全部内存 那么坑来了,他清不了image,icon view之类的(太神奇了,我也不懂) 总之问题解决了 ...
  • 定义滑动按钮的左边就是这个移动的距离   判断 slideBtnLeft 位于合理的位置, 0 到背景图的宽度 - 滑动按钮的宽度 调用 invalidate() 方法,刷新视图   onClick 事件和 onTouchEvent 是有冲突 定义一...
  • 编译环境:WIN8 32位 VC++6.0下编译通过 最近在做一个项目,有一个小功能需要实现,即回车切换控件...主要实现了回车切换控件焦点,BUTTON等其它控件功能不影响。 作者:依星(邮箱airen3339@163.com) 2016-5-18
  • WPF RadioButton按钮控件取消选中设置 通常我们使用的RadioButton控件选中之后就不能进行取消选中的操作,我上网查找到了解决方法,如下: 首先我们在View视图这里写这个按钮的点击触发事件 然后来到后台,先声明一...
  • 用于Xamarin.Forms的灵活按钮控件,具有用于不同状态,颜色叠加层以及可调整的形状和填充物的事件。 支持iOS,Android和UWP。 特征: 可调按钮尺寸和形状 大小可调的图标 背景和图标的彩色叠加(正常和按下状态) ...
  • 展开全部#coding=utf-8importwximportwx.richtextasrtclassCopyPanel(wx.Panel):def__init__(self,parent):wx.Panel.__init__(self,parent)#用于点击按钮时保存self.msg=""self.initGUI()definitGUI(self):self.__cr...
  • Qt开源作品7-高亮按钮控件

    千次阅读 2020-05-12 09:44:52
    这个高亮按钮控件并非本人原创作品,是参考的Qt界的一个大师级人物公孙二狗的作品,各位有兴趣可以去搜索查看,在原作者的代码上,我只是改成了自己的控件的框架结构,然后完善了一些细节,比如增加了各种颜色设置,...
  • Button 导入 import QtQuick.Controls 1.4 或 import QtQuick.Controls 2.4 ...当设置为true时,Button变为切换按钮,有两种状态:按下/弹起 添加一些信号槽连接 import QtQuick 2.9 import QtQuick.Window 2
  • 今天学习MFC的时候,按钮一直自动...就这样一直进去,当时都快疯了,自己摸索了半天才发现是对其辅助线的问题,只要把辅助线切换下就可以了。点个按钮就好了,如图: 现在就可以随便移动了,(o゜▽゜)o☆,如图 ...
  • statusbar控件上加载进度条控件,当加载完成,进度条消失,显示按钮,再次加载的时候隐藏按钮显示进度条,怎么在按钮和进度条间切换呢?
  • VC++实现切换按钮

    2018-08-05 17:40:04
    VC++实现切换按钮 有时候要实现两个选项的切换,常规做法1是放两个Radio按钮控件,并设置这两个按钮为一组。2是放一个Check按钮控件。但感觉都不是那么理想和直观。有没有更好的实现方式呢?下面将给你介绍一种我自...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,405
精华内容 562
关键字:

切换按钮控件