2015年6月19日星期五

Android第三十八期 - 评价标签FlowLayout

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
Android第三十八期 - 评价标签FlowLayout  阅读原文»

代码已经整理好,这里要说一下,因为手动和Json获取写法不一样。

手动直接xml设置:

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="fill_parent"      android:layout_height="fill_parent"      android:background="#E1E6F6"      android:orientation="vertical" >      <com.zhy.zhy_flowlayout02.FlowLayout          android:layout_width="fill_parent"          android:layout_height="wrap_content" >          <TextView              style="@style/text_flag_01"              android:text="Welcome" />          <TextView              style="@style/text_flag_01"              android:text="IT工程师" />          <TextView              style="@style/text_flag_01"              android:text="学习ing" />          <TextView              style="@style/text_flag_01"              android:text="恋爱ing" />          <TextView              style="@style/text_flag_01"              android:text="挣钱ing" />          <TextView              style="@style/text_flag_01"              android:text="努力ing" />          <TextView              style="@style/text_flag_01"              android:text="I thick i can" />      </com.zhy.zhy_flowlayout02.FlowLayout>      <com.zhy.zhy_flowlayout02.FlowLayout          android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:layout_marginTop="20dp" >          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_02"              android:text="Welcome"              android:textColor="#888888" />          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_02"              android:text="IT工程师"              android:textColor="#888888" />          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_02"              android:text="学习ing"              android:textColor="#888888" />          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_02"              android:text="恋爱ing"              android:textColor="#888888" />          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_02"              android:text="挣钱ing"              android:textColor="#888888" />          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_02"              android:text="努力ing"              android:textColor="#888888" />          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_02"              android:text="I thick i can"              android:textColor="#888888" />      </com.zhy.zhy_flowlayout02.FlowLayout>      <com.zhy.zhy_flowlayout02.FlowLayout          android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:layout_marginTop="20dp" >          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_03"              android:text="Welcome"              android:textColor="#43BBE7" />          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_03"              android:text="IT工程师"              android:textColor="#43BBE7" />          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_03"              android:text="学习ing"              android:textColor="#43BBE7" />          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_03"              android:text="恋爱ing"              android:textColor="#43BBE7" />          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_03"              android:text="挣钱ing"              android:textColor="#43BBE7" />          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_03"              android:text="努力ing"              android:textColor="#43BBE7" />          <TextView              style="@style/text_flag_01"              android:background="@drawable/flag_03"              android:text="I thick i can"              android:textColor="#43BBE7" />      </com.zhy.zhy_flowlayout02.FlowLayout>  </LinearLayout>  

效果如下:

wKioL1WDhcqjYyk7AAFiw8wzLyY331.jpg

Json获取:

      if(message.what == 1) {          // 处理操作          pingjia = newArrayList<Pingjia>();          pingjia.addAll(JsonUtils.getBeanList(message.result,"Items",          Pingjia.class));          FlowLayout layout = (FlowLayout)findViewById(R.id.layou23);          LinearLayout.LayoutParams params = newLinearLayout.LayoutParams(          LinearLayout.LayoutParams.WRAP_CONTENT,          LinearLayout.LayoutParams.WRAP_CONTENT);          params.gravity =Gravity.CENTER_VERTICAL;          // 加载TextView          for (int i = 0; i < pingjia.size();i++) {          Pingjia ping = pingjia.get(i);          tvNav = new TextView(this);          tvNav.setTextSize(13.f);          // tvNav.setWidth((int)Math.floor(Double.valueOf(a)));          // tvNav.setHeight((int)Math.floor(Double.valueOf(b)));          tvNav.setText(ping.getContent());          tvNav.setId(ping.getId());          tvNav.setBackgroundResource(R.anim.flag_022);          tvNav.setTag(false);          tvNav.setTextColor(getResources().getColor(R.color.gray));          // tvNav.setPadding(30, 10, 30, 10);          // tvNav.setGravity(Gravity.CENTER_HORIZONTAL);          tvNav.setOnClickListener(newTvClickListener(tvNav));          layout.addView(tvNav, params);      }      private TextView tvNav;          private String str = "";          private String strId = "";          /**           * 标题栏textview 点击事件           *           * @author fei           *           */          private final class TvClickListener implements View.OnClickListener {                  // private int index;                  private TextView tvNav;                  public TvClickListener(TextView tvNav) {                          super();                          // this.index = index;                          this.tvNav = tvNav;                  }                  @Override                  public void onClick(View v) {                          Boolean isclick = (Boolean) tvNav.getTag();                          if (!isclick) {                                  tvNav.setBackgroundResource(R.anim.flag_0444);                                  tvNav.setTextColor(getResources().getColor(R.color.red));                                  tvNav.setTag(true);                                  // 显示到上面                                  str = str + tvNav.getText().toString() + ",";                                  ed_en.setText(str);                                  // 记录Id                                  strId = strId + tvNav.getId() + ",";                                  // strId = strId.substring(0, strId.length() - 1);                                  // MyLogUtil.v("传->strId", strId);                          } else {                                  tvNav.setBackgroundResource(R.anim.flag_022);                                  tvNav.setTextColor(getResources().getColor(R.color.gray));                                  tvNav.setTag(false);                                  // 显示到上面                                  str = str.replace(tvNav.getText().toString() + ",", "");                                  ed_en.setText(str);                                  // 记录Id                                  strId = strId.replace(tvNav.getId() + ",", "");                                  // strId = strId.substring(0, strId.length() - 1);                                  // MyLogUtil.v("Delete->strId", strId);                          }                          // ToastUtil.showToastLong(tvNav.getId() + ","                          // + tvNav.getText().toString());                  }          }  

xml设置:

       <LinearLayout                      android:layout_width="fill_parent"                      android:layout_height="wrap_content"                      android:layout_marginBottom="@dimen/dimens_10"                      android:layout_marginLeft="@dimen/x10"                      android:layout_marginRight="@dimen/x10"                      android:layout_marginTop="@dimen/y20"                      android:orientation="vertical" >                      <TextView                          android:layout_width="wrap_content"                          android:layout_height="wrap_content"                          android:drawableLeft="@drawable/biaoqian1"                          android:drawablePadding="@dimen/dimens_10"                          android:text="@string/bq3"                          android:textColor="@color/black"                          android:textSize="15sp" />                      <com.kangxin.patient.utils.FlowLayout                          android:id="@+id/layou23"                          android:layout_width="fill_parent"                          android:layout_height="wrap_content"                          android:layout_marginTop="@dimen/y10"              
思科加强生成树性能的属性(Portfast /Uplinkfast/BackboneFast)与RSTP的关系  阅读原文»

思科加强生成树性能的属性(Portfast /Uplinkfast/BackboneFast)与RSTP的关系

思科加强生成树性能的属性(Portfast/Uplinkfast/BackboneFast)与RSTP的关系

本文截自于博主CCNP交换技术稿件内容

4.2.6思科加强生成树性能的属性(Portfast/Uplinkfast/BackboneFast)与RSTP的关系

首先说明一下,为什么笔者专门将(Portfast/Uplinkfast/BackboneFast)与RSTP的关系来独立成一个小节进行描述,那是因为,笔者不知被现实工程中的技术实施人员问了同一个问题N次,关于这个问题如下:"为什么在很多资料上,描述RSTP特性时都会提到Portfast /Uplinkfast/BackboneFast这三个特性,甚至说RSTP是具备这三个特性的,然而通过实践工程环境大家不难发现,在很多设备上支持Uplinkfast/BackboneFast这两个特性的交换机一般都不支持RSTP,相反支持RSTP的交换机上一般都不会存在Uplinkfast/BackboneFast这两个特性(至少没有配置它们的命令),而Portfast是乎是所有设备都支持的,这是为什么呢?"

因原是Portfast/Uplinkfast/BackboneFast这三个思科的属性被完整的移植并集成到了RSTP生成树中,也就是因为这个原因,所以很多关于生成树的资料典籍中,在描述RSTP时会同时讨论Portfast/Uplinkfast/BackboneFast三个属性。所以读者在查看别的资料时别被这个给弄混淆了,它们的关键区别如下:

一、Portfast/Uplinkfast/BackboneFast本是思科在RSTP提出之前就具备的三个厂商特性,后来当RSTP集成了Portfast/Uplinkfast/BackboneFast的功能后,通常在支持RSTP生成树的交换机中,IOS就不再提供Uplinkfast/BackboneFast这两个特性的独立配置指令了,因为RSTP会自动完成这两个功能的配置。所以支持RSTP的生成树,就不会存在Uplinkfast/BackboneFast功能的配置指令。下一小节取证将给大家更详细证明这一现象。

二、但是传统的独立支持Portfast/Uplinkfast/BackboneFast三个属性指令的交换机和支持RSTP生成树的交换机都保留了Portfast功能配置的指令,在RSTP中这里的portfast被另一个名词所替代,那就是RSTP中的"边缘端口",事实上RSTP中的"边缘接口"和传统交换机上的portfast是一回事儿,只是说RSTP不会自动启用它,因为这样太危险,需要管理员手工启动,所以用户才会在传统的独立支持Portfast/Uplinkfast/BackboneFast三个属性指令的交换机和支持RSTP生成树的交换机上都能看到portfast的配置指令。

关于RSTP的特性和基本理论,笔者将在4.3小节部分做更多的描述。

4.2.7取证: Portfast/Uplinkfast/BackboneFastRSTP的关系

为了更充分的证实4.2.6小节所描述的内容,现在可以通过对两台不同年代设备的生成树功能进行取证,来彻底的理解Portfast/Uplinkfast/BackboneFastRSTP的关系。因为多数人习惯了在仿真平台上进行学习,那么也可以使用个不同的仿真平台来进行该小节的取证,比如:使用仿真平台GNS3中的3640交换机模块和思科官方的仿真平台Cisco Packet Tracer中的3560交换机。注意这两个设备在生成树功能上的区别在于,GNS3中的3640的交换模块相对于Cisco Packet Tracer中的3560交换机更传统,年代更久远。

首先在传统设备3640上在spanning-tree后面打问号,如1所示,可以看到在所列出的可用参数中,用户是不能执行spanning-tree mode 来选择RSTP的生成树模式,因为它不支持RSTP模式,所以它提供了Portfast/Uplinkfast/BackboneFast三个思科私有属性来加速传统生成树;所以拥有独立执行三个思科私有属性的指令;相反在Cisco Packet Tracer中相对较新的交换机3560上在spanning-tree后面打问号,如2所示,可以看到在所列出的可用参数中,用户是可以执行spanning-tree mode 来选择RSTP的生成树模式,由于RSTP是自动集成了Uplinkfast/BackboneFast,简单的讲就是RSTP生成树启动时,Uplinkfast/BackboneFast机制就被开启了,所以在3560spanning-tree后面打问号就再也看不到启动Uplinkfast/BackboneFast的独立指令了。但是不难发现,无论是传统的3640还是相对较新的3560都能支持portfast指令,请注意对比1图3就很清晰,它们都支持portfast,是因为在RSTP生成树中,为了防止潜在的成环风险,边缘端口不会自动启用,需要管理员手工配置。

wKiom1WDJJuRq_qiAAI_thBoQY8693.jpg

注意:通过上面的取证过程,说明了一个问题,如果交换机已经具备RSTP功能模式,还去独立搞个启动Uplinkfast/BackboneFast功能的指令作甚?这不画蛇添足吗?这并不是IOS镜像有问题,而是进一步体现了思科IOS镜像功能设计的精简性和科学性,如果用户有更好的网络技术基础,并知道一项技术的发展历程、以及移植集成性,还会在更多的功能上发现诸如此种特性。

本文出自 "无名的基督" 博客,谢绝转载!

分享至 一键收藏,随时查看,分享好友!
昵称:
登录快速注册
内容:
每日博报 精彩不止一点关闭

阅读更多内容

没有评论:

发表评论