Android侧边栏滑动切换的view效果
发布时间 - 2026-01-11 00:23:15 点击率:次废话不多说了,直接给大家贴代码了,具体代码如下所示:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.BitmapDrawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class SideBar extends View {
private static final int MARGIN_BOTTOM = 2;
private int mItemHeight = 18;
private OnLetterTouchListener mOnLetterTouchListener;
private Paint mPaint;
private float mWidthCenter;
private int backgroundColor = 0x00F0F0F0;
private char[] chars = AppCommon.INDEXER_CHARS;
public interface OnLetterTouchListener {
public abstract void onPressedDown(int index, char ch);
public abstract void onPressedUp(int index, char ch);
}
public SideBar(Context context) {
this(context, null);
}
public SideBar(Context context, AttributeSet attrs) {
this(context, attrs, -1);
}
public SideBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private int startY = 0;//其实位置的y轴坐标
public SideBar setChars(char[] chars) {
this.chars = chars;
// for(int i = 0 ; i < (26 - chars.length) / 2 ; i++){
// startY += i * mItemHeight;
// }
init();
postInvalidate();
return this;
}
private void init() {
mPaint = new Paint();
mPaint.setColor(0xFFCFCFD0);
mPaint.setAntiAlias(true);
mPaint.setFakeBoldText(true);
mPaint.setTextSize(32);
mPaint.setColor(getResources().getColor(R.color.blue));
mPaint.setSubpixelText(true);
mPaint.setTextAlign(Paint.Align.CENTER);
setBackgroundColor(backgroundColor);
}
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
int idx = (int) event.getY() / mItemHeight;
if (idx >= chars.length) {
idx = chars.length - 1;
} else if (idx < 0) {
idx = 0;
}
if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
setBackgroundResource(R.color.sidebar_select_background);
if (mOnLetterTouchListener != null) {
mOnLetterTouchListener.onPressedDown(idx, chars[idx]);
}
} else if (event.getAction() == MotionEvent.ACTION_UP) {
setBackgroundDrawable(new BitmapDrawable());
setBackgroundColor(backgroundColor);
if (mOnLetterTouchListener != null) {
mOnLetterTouchListener.onPressedUp(idx, chars[idx]);
}
}
return true;
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
mItemHeight = (h - MARGIN_BOTTOM) / 26;
mWidthCenter = getMeasuredWidth() / 2;
super.onSizeChanged(w, h, oldw, oldh);
}
protected void onDraw(Canvas canvas) {
for (int i = 0; i < chars.length; i++) {
canvas.drawText(String.valueOf(chars[i]), mWidthCenter,startY + mItemHeight + (i * mItemHeight), mPaint);
}
super.onDraw(canvas);
}
public void setOnLetterTouchListener(OnLetterTouchListener listener) {
mOnLetterTouchListener = listener;
}
}
以上所述是小编给大家介绍的Android侧边栏滑动切换的view效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# android
# 侧边栏滑动切换
# 侧边栏
# Android实现滑动侧边栏
# Android 实现带字母索引的侧边栏功能
# Android仿微信通讯录列表侧边栏效果
# Android仿人人网滑动侧边栏效果
# Android 开源项目侧边栏菜单(SlidingMenu)使用详解
# Android实现仿通讯录侧边栏滑动SiderBar效果代码
# Android自定义字母选择侧边栏
# 给大家
# 小编
# 在此
# 说了
# 不多
# 所示
# 所述
# 给我留言
# 感谢大家
# 疑问请
# 有任何
# mPaint
# mOnLetterTouchListener
# OnLetterTouchListener
# backgroundColor
# mWidthCenter
# float
# int
# final
# static
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
专业商城网站制作公司有哪些,pi商城官网是哪个?
使用C语言编写圣诞表白程序
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
高防服务器:AI智能防御DDoS攻击与数据安全保障
Python并发异常传播_错误处理解析【教程】
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
JavaScript中的标签模板是什么_它如何扩展字符串功能
如何在橙子建站中快速调整背景颜色?
网站建设整体流程解析,建站其实很容易!
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
Laravel怎么实现模型属性的自动加密
如何用低价快速搭建高质量网站?
如何快速搭建安全的FTP站点?
活动邀请函制作网站有哪些,活动邀请函文案?
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
html如何与html链接_实现多个HTML页面互相链接【互相】
重庆市网站制作公司,重庆招聘网站哪个好?
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
高防服务器租用首荐平台,企业级优惠套餐快速部署
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
如何确保西部建站助手FTP传输的安全性?
如何用VPS主机快速搭建个人网站?
Laravel如何自定义分页视图?(Pagination示例)
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
如何确保FTP站点访问权限与数据传输安全?
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
如何用PHP快速搭建高效网站?分步指南
怎么用AI帮你设计一套个性化的手机App图标?
如何在阿里云通过域名搭建网站?
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
佛山企业网站制作公司有哪些,沟通100网上服务官网?
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
如何快速查询域名建站关键信息?
如何在新浪SAE免费搭建个人博客?
Thinkphp 中 distinct 的用法解析
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
iOS发送验证码倒计时应用
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性

