在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()的妙用相关推荐

  1. Android 不得不知Tag的妙用

    setTag () 是 Android 的 View 类中很有用的一个方法,可以用它来给控件附加一些信息,在很多场合下都得到妙用.我们可以看到 setTat() 有两个方法重载,setTag(Obje ...

  2. android listview settag,Android View中setTag的二三事

    每一个APP,都离不开View的使用,小到一个登陆注册页面,大到复杂的网上商城,都是View使用的具体体现. 往往我们使用View,其实就是为了向用户展示一定的数据,因此,view的使用又总是离不开数 ...

  3. Android中focusable属性的妙用——底层按钮的实现

    2019独角兽企业重金招聘Python工程师标准>>> 看到百威啤酒的客户端主界面的按钮,感觉比较新奇,先看下图片: 注意图中我画的箭头,当时鼠标点击的黑色圈圈的位置,然后按钮出现了 ...

  4. android:gravity=“bottom|center_horizontal“的妙用

    今天,在java SE课堂上,老师讲逻辑或"|"表示:左侧条件成立,也会继续执行右侧条件.例如: int x=5; if((x>1)|(x/0==1)){ //即使左侧的x& ...

  5. iptables 在 Android 抓包中的妙用

    本文介绍一种在 Andorid 中实现单应用.全局.优雅的抓包方法. 此文于去年端午节编写,由于种种原因,当时藏拙并未发布.现删除一些敏感信息后分享出来,希望对各位有所启发. 背景 昨天在测试一个 A ...

  6. com.android.ut是什么文件,妙用UT数据文件夹%AppData%\uTorrent

    tray.ico 这是一个标准的 Windows 图标文件.如果 %AppData%\uTorrent 中存在 tray.ico,则该图标文件将替换系统托盘(位于屏幕右下角)中的默认图标. main. ...

  7. Android setTag和getTag()的使用

    首先我们要知道setTag方法是干什么的,SDK解释为 Tags Unlike IDs, tags are not used to identify views. Tags are essential ...

  8. android关于控件中setTag(key,Object)的设置的相关问题

    setTag () 是 Android 的 View 类中很有用的一个方法,可以用它来给控件附加一些信息,在很多场合下都得到妙用. 所以抛出IllegalArgumentException 的原因就在 ...

  9. android tag的使用方法,Android setTag方法的key问题解决办法

    android在设计View类时,为了能储存一些辅助信息,设计一个一个setTag/getTag的方法.这让我想起在Winform设计中每个Control同样存在一个Tag. 今天要说的是我最近学习a ...

  10. android中tag的用法,Android中setTag的用法

    首先我们要知道setTag 是干什么的,官方给的api解释是: Tags Unlike IDs,tags are not used to identify views,Tags are essenti ...

最新文章

  1. android组件启动,Android四大组件Service之StartService启动
  2. IDEA 15款神级良心插件强烈推荐收藏,提高一倍工作效率!
  3. 使用ab进行页面的压力测试
  4. IntelliJ IDEA代码格式化,代码超出规定宽度自动换行
  5. CactiEZ中文解决方案和使用教程
  6. 关于Euler-Poisson积分的几种解法
  7. 对话Oneledger联合创始人Edwin Zhang
  8. 【Kafka】Cancelled fetchMetadata request with correlation id due to node -1 being disconnected
  9. 服务机器人研究报告:产业链分析及投资前景预测
  10. 电信网编号计划征求意见 物联网产业有望迎来风口
  11. .[转] 家里有娃娃的请注意,终于把儿歌凑齐了!! 儿歌大全
  12. 8个免费在线编程游戏网站,让每个人都可以学习编程
  13. HDU 2094 产生冠军
  14. Java使用Tesseract-OCR文字识别(Java调用tess4j提取图片中文、英文、数字信息)
  15. @4-1 CCF 2020-06-1 线性分类器
  16. Azure Key Vault 简介
  17. EasyWord的使用——POI操作Word的工具
  18. 爬虫入门教程⑧— BeautifulSoup解析豆瓣即将上映的电影信息
  19. 数据湖如何为企业带来9%的高增长?可否取代数据仓库?
  20. plc s7-200的a/d转换的c语言程序,西门子S7-200中A/D转换模块的技术指标

热门文章

  1. 服务器网口显示图像,简单的python3web服务器,可以在浏览器中显示图像
  2. 基于Springboot的理财系统
  3. android 通过浏览器下的apk无法安装_安卓手机必备,文件管理利器!ES文件浏览器特别版安卓软件...
  4. 个人简历怎么写怎么做(还有怎么培养无私奉献的精神--模板)
  5. 还不知道如何使用 IDEA ?教你三招快速掌握 IDEA
  6. python源代码文件_Python代码编译与反编译
  7. 小D课堂 - 新版本微服务springcloud+Docker教程_4-01 常用的服务间调用方式讲解
  8. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_9_等待唤醒机制代码实现_吃货类测试类...
  9. HDU2072 tri树/map/set/字符串hash
  10. 文件上传漏洞及其绕过