android---gettag()与settag()的妙用
在android中,settag(Object)是可以给一个view添加一个特殊的标签,然后用gettag()获取这个标签.
用处1:多个button设置不同tag,通过tag区分
OnClickListener listener = new OnClickListener() {public void onClick(View v) {
//获取当前view对应的数字int cellId = (Integer) v.getTag();cellClicked(cellId, v);}}View v;for (int i = 0; i < 20; i++) {v = findViewById(cellIDs[i]);v.setOnClickListener(listener);v.setTag(i);}
用法2:在adapter中的getview实现回收的convertView的复用(这代码高亮搞不好,总是出问题)
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {phonedemo demo;if (convertView==null) {convertView = LayoutInflater.from(context).inflate(R.layout.cell, null);demo = new phonedemo();demo.name = (TextView) convertView.findViewById(R.id.name);demo.number = (TextView) convertView.findViewById(R.id.number);demo.img = (ImageView) convertView.findViewById(R.id.imageView1);demo.name.setText(data.get(position).getName());demo.number.setText(data.get(position).getNumber());
// demo.img.setImageResource(data.get(position).getId());//利用tag达到循环利用资源convertView.setTag(demo);}else {//这里获取已经回收的demo,并不用重新创建,这样就可以 直接复用,节省资源demo = (phonedemo) convertView.getTag();demo.name.setText(data.get(position).getName());demo.number.setText(data.get(position).getNumber());
// demo.img.setImageResource(data.get(position).getId());}return convertView;}public static class phonedemo{TextView name,number;ImageView img;}
用处3:当开关来使用,比如对于手电筒,tag设置为true开启,为false,关闭.
//控制语句
if ((Boolean) flashlight.getTag() == false) {startflashlight();}else{stopflashlight();}
protected void startflashlight() {//使用transitiondrawable来控制动画,也就是flashlight.xml这个文件TransitionDrawable drawable = (TransitionDrawable) flashlight.getDrawable(); //控制转变时间200毫秒drawable.startTransition(200);//设置标识,如果被打开,则tag为trueflashlight.setTag(true);/** 下面开始打开照相机,然后处理图像到后台,然后设置闪光灯打开*/try {/** camera和其组件之间的交流,通过参数parmeters来进行关联,camera可以获取当前的状态参数* 再通过setparameters来进行设置新的参数*/mcamera = Camera.open();//打开照相机int texttrueid = 0;//?暂时不知道是啥mcamera.setPreviewTexture(new SurfaceTexture(texttrueid));mcamera.startPreview();mparaters = mcamera.getParameters();//设置打开闪光的,并点亮mparaters.setFlashMode(Parameters.FLASH_MODE_TORCH);mcamera.setParameters(mparaters);} catch (Exception e) {}}/** 控制闪光的的关闭*/protected void stopflashlight() {TransitionDrawable drawable = (TransitionDrawable) flashlight.getDrawable();if((Boolean) flashlight.getTag()){drawable.reverseTransition(200);flashlight.setTag(false);if(mcamera != null){mparaters = mcamera.getParameters();mparaters.setFlashMode(Parameters.FLASH_MODE_OFF);mcamera.setParameters(mparaters);mcamera.stopPreview();//停止预览mcamera.release();//释放掉资源,不然下次打不开mcamera = null;//设置为null为了垃圾回收机制尽快回收}}}
上面三个例子都挺常用的,tag的妙用还是能节省不少代码的,对于程序美观性还是有不少作用的.
版权声明:本文为博主原创文章,未经博主允许不得转载。
转载于:https://www.cnblogs.com/-niuli/p/4856418.html
android---gettag()与settag()的妙用相关推荐
- Android 不得不知Tag的妙用
setTag () 是 Android 的 View 类中很有用的一个方法,可以用它来给控件附加一些信息,在很多场合下都得到妙用.我们可以看到 setTat() 有两个方法重载,setTag(Obje ...
- android listview settag,Android View中setTag的二三事
每一个APP,都离不开View的使用,小到一个登陆注册页面,大到复杂的网上商城,都是View使用的具体体现. 往往我们使用View,其实就是为了向用户展示一定的数据,因此,view的使用又总是离不开数 ...
- Android中focusable属性的妙用——底层按钮的实现
2019独角兽企业重金招聘Python工程师标准>>> 看到百威啤酒的客户端主界面的按钮,感觉比较新奇,先看下图片: 注意图中我画的箭头,当时鼠标点击的黑色圈圈的位置,然后按钮出现了 ...
- android:gravity=“bottom|center_horizontal“的妙用
今天,在java SE课堂上,老师讲逻辑或"|"表示:左侧条件成立,也会继续执行右侧条件.例如: int x=5; if((x>1)|(x/0==1)){ //即使左侧的x& ...
- iptables 在 Android 抓包中的妙用
本文介绍一种在 Andorid 中实现单应用.全局.优雅的抓包方法. 此文于去年端午节编写,由于种种原因,当时藏拙并未发布.现删除一些敏感信息后分享出来,希望对各位有所启发. 背景 昨天在测试一个 A ...
- com.android.ut是什么文件,妙用UT数据文件夹%AppData%\uTorrent
tray.ico 这是一个标准的 Windows 图标文件.如果 %AppData%\uTorrent 中存在 tray.ico,则该图标文件将替换系统托盘(位于屏幕右下角)中的默认图标. main. ...
- Android setTag和getTag()的使用
首先我们要知道setTag方法是干什么的,SDK解释为 Tags Unlike IDs, tags are not used to identify views. Tags are essential ...
- android关于控件中setTag(key,Object)的设置的相关问题
setTag () 是 Android 的 View 类中很有用的一个方法,可以用它来给控件附加一些信息,在很多场合下都得到妙用. 所以抛出IllegalArgumentException 的原因就在 ...
- android tag的使用方法,Android setTag方法的key问题解决办法
android在设计View类时,为了能储存一些辅助信息,设计一个一个setTag/getTag的方法.这让我想起在Winform设计中每个Control同样存在一个Tag. 今天要说的是我最近学习a ...
- android中tag的用法,Android中setTag的用法
首先我们要知道setTag 是干什么的,官方给的api解释是: Tags Unlike IDs,tags are not used to identify views,Tags are essenti ...
最新文章
- android组件启动,Android四大组件Service之StartService启动
- IDEA 15款神级良心插件强烈推荐收藏,提高一倍工作效率!
- 使用ab进行页面的压力测试
- IntelliJ IDEA代码格式化,代码超出规定宽度自动换行
- CactiEZ中文解决方案和使用教程
- 关于Euler-Poisson积分的几种解法
- 对话Oneledger联合创始人Edwin Zhang
- 【Kafka】Cancelled fetchMetadata request with correlation id due to node -1 being disconnected
- 服务机器人研究报告:产业链分析及投资前景预测
- 电信网编号计划征求意见 物联网产业有望迎来风口
- .[转] 家里有娃娃的请注意,终于把儿歌凑齐了!! 儿歌大全
- 8个免费在线编程游戏网站,让每个人都可以学习编程
- HDU 2094 产生冠军
- Java使用Tesseract-OCR文字识别(Java调用tess4j提取图片中文、英文、数字信息)
- @4-1 CCF 2020-06-1 线性分类器
- Azure Key Vault 简介
- EasyWord的使用——POI操作Word的工具
- 爬虫入门教程⑧— BeautifulSoup解析豆瓣即将上映的电影信息
- 数据湖如何为企业带来9%的高增长?可否取代数据仓库?
- plc s7-200的a/d转换的c语言程序,西门子S7-200中A/D转换模块的技术指标
热门文章
- 服务器网口显示图像,简单的python3web服务器,可以在浏览器中显示图像
- 基于Springboot的理财系统
- android 通过浏览器下的apk无法安装_安卓手机必备,文件管理利器!ES文件浏览器特别版安卓软件...
- 个人简历怎么写怎么做(还有怎么培养无私奉献的精神--模板)
- 还不知道如何使用 IDEA ?教你三招快速掌握 IDEA
- python源代码文件_Python代码编译与反编译
- 小D课堂 - 新版本微服务springcloud+Docker教程_4-01 常用的服务间调用方式讲解
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_9_等待唤醒机制代码实现_吃货类测试类...
- HDU2072 tri树/map/set/字符串hash
- 文件上传漏洞及其绕过