600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > android---gettag()与settag()的妙用

android---gettag()与settag()的妙用

时间:2018-08-07 19:40:49

相关推荐

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的妙用还是能节省不少代码的,对于程序美观性还是有不少作用的.

版权声明:本文为博主原创文章,未经博主允许。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。