android studio开关按钮,Android studio实现滑动开关
大家好,今天刚学会使用Android Studio实现滑动开关的效果,自己感觉还可以,和大家分享一下,如果觉得可以的可以拿去,然后再给我点个赞,谢谢。本人也是学Android studiok开发不久,是个菜鸟,各位大佬觉得有不好的地方,可以讨论一下,共同学习,一起进步。
实现效果
下面是代码,代码写的比较粗糙,注释没有写的很好,需要用的可以自己移植一下
package com.example.biansheng2;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import androidx.annotation.Nullable;
/**
* 用于选择手动模式还是路线规划模式
*/
public class ModelSelectView extends View {
Paint backPaint = new Paint();//背景画笔
Paint facePaint = new Paint();//表面视图画笔
Paint colorPaint1 = new Paint();//绘制红色和蓝色
Paint colorPaint2 = new Paint();//绘制橙色
Paint colorPaint3 = new Paint();//绘制灰色
Paint handFont = new Paint();//手动控制模式字体
Paint routeFont = new Paint();//路线规划模式字体
boolean modelFlag = false;//false表示为手动控制模式,true表示为路线规划模式
RectF mRectF1 = new RectF(150, 840, 580, 960);
int x = 150, y = 900;//得到手指再控件上移动的坐标
public ModelSelectView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paintInit();
canvas.drawRect(mRectF1, backPaint);
canvas.drawCircle(150, 900, 60, backPaint);
canvas.drawCircle(580, 900, 60, backPaint);
if (!modelFlag){
canvas.drawCircle(150, 900, 60, facePaint);
canvas.drawRect(150,840,x,960,facePaint);
//设置手动控制字体可见
handFont.setAlpha(255);
//设置路线规划字体不可见
routeFont.setAlpha(0);
}else {
canvas.drawCircle(580, 900, 60, facePaint);
canvas.drawRect(x,840,580,960,facePaint);
//设置手动控制字体不可见
handFont.setAlpha(0);
//设置路线规划字体可见
routeFont.setAlpha(255);
}
canvas.drawText("手动控制",250,915,handFont);
canvas.drawText("路线规划",250,915,routeFont);
canvas.drawCircle(x, y, 44, backPaint);
canvas.drawCircle(x, y, 40, colorPaint2);
canvas.drawCircle(x, y, 47, colorPaint3);
}
private void paintInit() {
if (!modelFlag) {
backPaint.setAntiAlias(true);
backPaint.setColor(Color.parseColor("#ff00b5eb"));
facePaint.setColor(Color.parseColor("#D81B60"));
facePaint.setAntiAlias(true);
}else {
backPaint.setAntiAlias(true);
backPaint.setColor(Color.parseColor("#D81B60"));
facePaint.setColor(Color.parseColor("#ff00b5eb"));
facePaint.setAntiAlias(true);
}
colorPaint2.setAntiAlias(true);
colorPaint2.setColor(Color.parseColor("#FF6407"));
colorPaint1.setAntiAlias(true);
colorPaint1.setColor(Color.BLUE);
colorPaint3.setColor(Color.WHITE);
colorPaint3.setAntiAlias(true);
colorPaint3.setStyle(Paint.Style.STROKE);
colorPaint3.setStrokeWidth(5);
Typeface font = Typeface.create(Typeface.DEFAULT_BOLD,Typeface.BOLD_ITALIC);
handFont.setTypeface(font);
handFont.setColor(Color.WHITE);
handFont.setAntiAlias(true);
handFont.setTextSize(50);
routeFont.setTypeface(font);
routeFont.setColor(Color.WHITE);
routeFont.setAntiAlias(true);
routeFont.setTextSize(50);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
int getX = (int) event.getX();
int getY = (int) event.getY();
//判断得到的坐标是否在视图范围之内
if (getX >= 150 && getX <= 580 && getY >= 840 && getY <= 960) {
x = getX;
y = 900;
}
break;
case MotionEvent.ACTION_UP:
int getX1 = (int) event.getX();
int getY1 = (int) event.getY();
//判断是否在控件内
if (getY1 >= 810 && getY1 <= 990) {
if (getX1 <= 280) {
x = 150;
modelFlag = false;
} else if (getX1 >= 443) {
x = 580;
modelFlag = true;
} else {
if (!modelFlag) {
x = 150;
modelFlag = false;
} else {
x = 580;
modelFlag = true;
}
}
}
break;
}
invalidate();//刷新界面
return true;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
android studio开关按钮,Android studio实现滑动开关相关推荐
- Android Studio 开关按钮Switch
点此查看全部文字教程.视频教程.源代码 本文目录 1. 功能 2. 界面 3. 获取开关情况 4. 监听开关状态 1. 功能 开关按钮功能其实跟复选框CheckBox一样,都是表示是否选中.只不过界面 ...
- android dimensions.xml,[Android Studio #2] 操作資源XML檔
利用Android Studio產生出第一個程式後,點擊Project按鈕觀察專案的目錄結構,再研究資源檔的使用方法,同時在第一個程式畫面裡增加另一個文字元件. Android Studio的專案目錄 ...
- android studio visual studio 2015,Visual Studio Emulator for Android
Visual Studio Emulator for Android 11/15/2016 4 分钟可看完 本文内容 Note This article applies to Visual Studi ...
- 使用Android Studio搭建Android集成开发环境
一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(Android平台集成开发环境).它基于Intellij IDEA开发环境,旨 ...
- 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )
文章目录 一.Visual Studio 中安装 " 使用 C++ 的移动开发 " 开发库 二.Visual Studio 中安装的 Android SDK 和 NDK 位置 三. ...
- 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | VS 自带的 Android 平台应用创建与配置 )
文章目录 一.Visual Studio 安装 " 使用 C++ 的移动开发 " 二.Visual Studio 中创建 " 动态共享库(Android) " ...
- 【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 )
文章目录 安卓直播推流专栏博客总结 一. x264 简介 二. x264 交叉编译 三. Android Studio 导入函数库 四. 交叉编译版本 五. GitHub 项目地址 安卓直播推流专栏博 ...
- 基于Android Studio搭建Android应用开发环境
备注:电脑是windows xp系统 1. 安装JDK和环境变量设置 JDK是java development kit,Java JDK下载地址 http://www.oracle.com/t ...
- android studio socket 失败,Android应用开发Android Studio建立Socket连接失败解决方法
本文将带你了解Android应用开发Android Studio建立Socket连接失败解决方法,希望本文对大家学Android有所帮助. < Android Studio建立Socket连接失 ...
最新文章
- 【Qt】通过QtCreator源码学习Qt(九):容器算法总结
- 写一个ArrayList类的动态代理类
- 我们部署个额外域控制器
- 17、有名管道与无名管道之间的区别
- python3 class init_python3 module中__init__.py的需要注意的地方
- 水烟炭行业调研报告 - 市场现状分析与发展前景预测
- 文档转成html在线预览,java poi Word文档转为HTML文件 实现在线预览功能
- PHP博客导入导出,Thinkphp5.0导入导出详解
- springboot+自定义注解实现灵活的切面配置
- Git版本控制及远程仓库的使用
- 用Go语言打印三角形汇总 (Golang经典编程案例)
- 一文讲清跨境S2B2C模式及线上品牌/新零售品牌实战打法
- 奋斗的小孩系列 FPGA学习altera系列: 第一篇 软件的安装与破解
- 串口打印调试信息(干货)
- Outlook打不开的问题
- TR-069 协议简介
- 2021届毕业应届生到现在的职场工作,从一个懵懂大学生到IT职场人的转变
- Methyltetrazine-PEG8-DBCO,甲基四嗪--八聚乙二醇-二苯并环辛炔
- 让自己不烦心的心理暗示
- Object.keys方法详解
热门文章
- 王琦:5G新视频应用的机会窗口将在2-3年内
- FFmpeg代码导读——基础篇
- 从 bug 中学习:六大开源项目告诉你 go 并发编程的那些坑
- 腾讯成本优化黑科技:整机CPU利用率最高提升至90%
- 金融业对区块链必须有足够认识
- 我又来说Git了, Git 与 SVN 大对比!
- leetcode 453,462. Minimum Moves to Equal Array Elements I, II | 453, 462. 最少移动次数使数组元素相等(图解)
- leetcode 530. 二叉搜索树的最小绝对差(Java版)
- Java中的类型推断和lambda表达式
- 使用IBM Blockchain Platform extension开发你的第一个fabric智能合约