Android编程实现的简易路径导航条功能示例
短信预约 -IT技能 免费直播动态提醒
本文实例讲述了Android编程实现的简易路径导航条功能。分享给大家供大家参考,具体如下:
这里要实现的是如图所示的路径导航条, 类似于文件管理器的效果。
该导航条包含三个功能:
支持追加任意个子路径(文字一行写不下时可左右滑动);
2. 支持返回到上一个路径;
3. 支持点击中间的某个路径回到指定位置。
代码很简单,已封装成自定义View, 如下:
PathTextView.Java
public class PathTextView extends LinearLayout { private TextView mTextView; private HorizontalScrollView hsView; private OnItemClickListener mListener; //保存每一个路径的id和名称 private LinkedList<PathItem> pathItemList; //可点击部门文本颜色 private static final int TEXT_COLOR = Color.parseColor("#48a0c7"); //分隔符 private static final String DIV_STR = " - "; public PathTextView(Context context) { super(context); } public PathTextView(Context context, AttributeSet attrs) { super(context, attrs); View root = LayoutInflater.from(context).inflate(R.layout.simple_tv, this, true); hsView = (HorizontalScrollView) root.findViewById(R.id.path_hs); mTextView = (TextView) root.findViewById(R.id.path_tv); mTextView.setMovementMethod(LinkMovementMethod.getInstance()); mTextView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { return true; } }); pathItemList = new LinkedList<>(); } public void initRoot(String text) { mTextView.append(createSpannableString(-1, text)); pathItemList.addLast(new PathItem(-1, text)); } public void append(long id, String text) { mTextView.append(DIV_STR); mTextView.append(createSpannableString(id, text)); pathItemList.addLast(new PathItem(id, text)); //HorizontalScrollView滑动到最右边 hsView.postDelayed(new Runnable() { @Override public void run() { hsView.fullScroll(HorizontalScrollView.FOCUS_RIGHT); } }, 100); } public void backParent() { int lastItemLength = pathItemList.removeLast().text.length(); CharSequence oldCs = mTextView.getText(); mTextView.setText(oldCs.subSequence(0, oldCs.length() - lastItemLength - DIV_STR.length())); } private SpannableString createSpannableString(long id, String text) { SpannableString spStr = new SpannableString(text); ClickableSpan clickSpan = new MyClickableSpan(id); spStr.setSpan(clickSpan, 0, text.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); spStr.setSpan(new ForegroundColorSpan(TEXT_COLOR), 0, text.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); return spStr; } private class MyClickableSpan extends ClickableSpan { private long id; MyClickableSpan(long id) { super(); this.id = id; } @Override public void onClick(View widget) { //更新当前路径 int backCount = 0; while (pathItemList.getLast().id != id) { backParent(); backCount++; } //回调 if (mListener != null && backCount > 0) { mListener.onClick(id, backCount); } } } private class PathItem { private long id; private String text; private PathItem(long id, String text) { this.id = id; this.text = text; } } public interface OnItemClickListener { void onClick(long currentId, int backCount); } public void setOnItemClickListener(OnItemClickListener listener) { this.mListener = listener; }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
Android编程实现的简易路径导航条功能示例
下载Word文档到电脑,方便收藏和打印~
下载Word文档
猜你喜欢
Android编程实现的简易路径导航条功能示例
本文实例讲述了Android编程实现的简易路径导航条功能。分享给大家供大家参考,具体如下:这里要实现的是如图所示的路径导航条, 类似于文件管理器的效果。该导航条包含三个功能:1. 支持追加任意个子路径(文字一行写不下时可左右滑动);2. 支
2023-05-31
2024-04-02
Android编程实现的自定义弹窗(PopupWindow)功能示例
本文实例讲述了Android编程实现的自定义弹窗(PopupWindow)功能。分享给大家供大家参考,具体如下:
在开发过程中,如果要弹出一个对话框,一般是使用AlertDialog,但其使用限制太大,灵活性不够,所以我们常需要用到灵活性更
2022-06-06
Android编程基于自定义View实现绚丽的圆形进度条功能示例
本文实例讲述了Android编程基于自定义View实现绚丽的圆形进度条功能。分享给大家供大家参考,具体如下:
本文包含两个组件,首先上效果图:
1.ProgressBarView1(支持拖动):2.ProgressBarView2(不同进度
2022-06-06
Android编程实现对电池状态的监视功能示例
本文实例讲述了Android编程实现对电池状态的监视功能。分享给大家供大家参考,具体如下:
最近在开发一个与GPS相关的项目,因为其中涉及到了GPS的使用,众所周知,GPS是相当耗电的,因此就想着怎么能知道当前的电量,并且在电量达到一个下限
2022-06-06
Android编程实现图片的上传和下载功能示例
本文实例讲述了Android编程实现图片的上传和下载功能。分享给大家供大家参考,具体如下:
在实现一个Android的WEB服务客户端,比如微博,论坛客户端时,经常会使用到图片的上传和下载。在这里介绍如何利用HttpClient实现图片的上
2022-06-06
Android编程实现的首页左右滑动切换功能示例
本文实例讲述了Android编程实现的首页左右滑动切换功能。分享给大家供大家参考,具体如下:很多软件会选择左右滑动的主界面,实现方式也很多,这里的仅供参考,勿喷。不多说什么了,相信大家看看代码就明白,自己也不善言辞,望大家谅解。自定义接口,
2023-05-30
Android编程实现多列显示的下拉列表框Spinner功能示例
本文实例讲述了Android编程实现多列显示的下拉列表框Spinner功能。分享给大家供大家参考,具体如下:
先上张效果图:严格来说,这并不是一个下拉列表,只不过实现的效果很像是下拉列表
实现原理:
该下拉列表其实是一个AlertDialo
2022-06-06
Android编程实现canvas绘制饼状统计图功能示例【自动适应条目数量与大小】
本文实例讲述了Android编程实现canvas绘制饼状统计图功能。分享给大家供大家参考,具体如下:
本例的目的是实现一个简单的饼状统计图,效果如下:
特点:
1.使用非常方便,可放在xml布局文件中,然后在代码中设置内容,即:Pie
2022-06-06
Android编程实现通讯录中联系人的读取,查询,添加功能示例
本文实例讲述了Android编程实现通讯录中联系人的读取,查询,添加功能。分享给大家供大家参考,具体如下:先加二个读和写权限:2023-05-31
Android编程实现支持拖动改变位置的图片中叠加文字功能示例
本文实例讲述了Android编程实现支持拖动改变位置的图片中叠加文字功能。分享给大家供大家参考,具体如下:
之所以做了这么一个Demo,是因为最近项目中有一个奇葩的需求:用户拍摄照片后,分享到微信的同时添加备注,想获取用户在微信的弹出框输入
2022-06-06
编程热搜
Python 学习之路 - Python
一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-chatgpt的中文全称是什么
chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列C/C++可变参数的使用
可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃Python 3 教程
Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 PythonPython pip包管理
一、前言 在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install 和 pip , 目前官方推荐使用 pip。
编程资源站
- 资料下载
- 历年试题