精华内容
下载资源
问答
  • 在ajax里如果data传的values是数组发到后端则可以设置traditonal为true,让后端接收。此方法不支持values为字典,字符串列表等都支持。

    在ajax里如果data传的values是数组发到后端则可以设置traditonal为true,让后端接收。此方法不支持values为字典,字符串列表等都支持。

    展开全文
  • -+ | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | dec8 | DEC West European | dec8_swedish_ci | 1 | | cp850 | DOS West European | cp850_general_ci | 1 | | hp8 | HP West European | hp8_...

    接下来我们再来看看 MySQL 自带的 ORD() 这个函数有什么作用。

    ORD() 函数

    ORD() 函数返回字符串第一个字符的 ASCII 值。

    语法: ORD(string)

    举一些简单的例子:

    mysql> SELECT ORD('i');

    +----------+

    | ORD('i') |

    +----------+

    | 105 |

    +----------+

    1 row in set

    或者:

    mysql> SELECT ORD('NowaMagic');

    +------------------+

    | ORD('NowaMagic') |

    +------------------+

    | 78 |

    +------------------+

    1 row in set

    如果汉字又如何呢?

    mysql> SELECT ORD('简明现代魔法');

    +---------------------+

    | ORD('简明现代魔法') |

    +---------------------+

    | 15183488 |

    +---------------------+

    1 row in set

    mysql> SELECT ORD('简');

    +-----------+

    | ORD('简') |

    +-----------+

    | 15183488 |

    +-----------+

    1 row in set

    为什么会有 8 位数那么长呢?原因是数据库使用的字符集问题,此处的数据库使用的是 UTF-8,16位表示一个符号。顺便贴一下SQL的执行语句:

    mysql> SHOW CHARACTER SET;

    +----------+-----------------------------+---------------------+--------+

    | Charset | Description | Default collation | Maxlen |

    +----------+-----------------------------+---------------------+--------+

    | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |

    | dec8 | DEC West European | dec8_swedish_ci | 1 |

    | cp850 | DOS West European | cp850_general_ci | 1 |

    | hp8 | HP West European | hp8_english_ci | 1 |

    | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |

    | latin1 | cp1252 West European | latin1_swedish_ci | 1 |

    | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |

    | swe7 | 7bit Swedish | swe7_swedish_ci | 1 |

    | ascii | US ASCII | ascii_general_ci | 1 |

    | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |

    | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 |

    | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |

    | tis620 | TIS620 Thai | tis620_thai_ci | 1 |

    | euckr | EUC-KR Korean | euckr_korean_ci | 2 |

    | koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 |

    | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |

    | greek | ISO 8859-7 Greek | greek_general_ci | 1 |

    | cp1250 | Windows Central European | cp1250_general_ci | 1 |

    | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |

    | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |

    | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |

    | utf8 | UTF-8 Unicode | utf8_general_ci | 3 |

    | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |

    | cp866 | DOS Russian | cp866_general_ci | 1 |

    | keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 |

    | macce | Mac Central European | macce_general_ci | 1 |

    | macroman | Mac West European | macroman_general_ci | 1 |

    | cp852 | DOS Central European | cp852_general_ci | 1 |

    | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |

    | utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |

    | cp1251 | Windows Cyrillic | cp1251_general_ci | 1 |

    | utf16 | UTF-16 Unicode | utf16_general_ci | 4 |

    | cp1256 | Windows Arabic | cp1256_general_ci | 1 |

    | cp1257 | Windows Baltic | cp1257_general_ci | 1 |

    | utf32 | UTF-32 Unicode | utf32_general_ci | 4 |

    | binary | Binary pseudo charset | binary | 1 |

    | geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 |

    | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 |

    | eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |

    +----------+-----------------------------+---------------------+--------+

    39 rows in set

    展开全文
  • 将netcat-openbsd替换成为netcat-traditional

    千次阅读 2017-05-15 20:33:30
    因为netcat-openbsd的用法与netcat-traditional用法有所不同,所以想切换到nc的传统版本中。1.update-alternatives 命令update-alternatives是Debian系统中专门维护系统命令链接符的工具,通过它可以很方便的设置...

    项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
    欢迎大家star,留言,一起学习进步

    ubuntu里默认的nc命令指向的是netcat-openbsd。因为netcat-openbsd的用法与netcat-traditional用法有所不同,所以想切换到nc的传统版本中。

    1.update-alternatives 命令

    update-alternatives是Debian系统中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令、哪个软件版本。

    update-alternatives --help
    用法:update-alternatives [<选项> ...] <命令>
    
    命令:
      --install <链接> <名称> <路径> <优先级>
        [--slave <链接> <名称> <路径>] ...
                               在系统中加入一组候选项。
      --remove <名称> <路径>   从 <名称> 替换组中去除 <路径> 项。
      --remove-all <名称>      从替换系统中删除 <名称> 替换组。
      --auto <名称>            将 <名称> 的主链接切换到自动模式。
      --display <名称>         显示关于 <名称> 替换组的信息。
      --query <名称>           机器可读版的 --display <名称>.
      --list <名称>            列出 <名称> 替换组中所有的可用候选项。
      --get-selections         列出主要候选项名称以及它们的状态。
      --set-selections         从标准输入中读入候选项的状态。
      --config <名称>          列出 <名称> 替换组中的可选项,并就使用其中
                               哪一个,征询用户的意见。
      --set <名称> <路径>      将 <路径> 设置为 <名称> 的候选项。
      --all                    对所有可选项一一调用 --config 命令。
    
    <链接> 是指向 /etc/alternatives/<名称> 的符号链接。
        (如 /usr/bin/pager)
    <名称> 是该链接替换组的主控名。
        (如 pager)
    <路径> 是候选项目标文件的位置。
        (如 /usr/bin/less)
    <优先级> 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高。
    
    选项:
      --altdir <目录>          改变候选项目录。
      --admindir <目录>        设置 statoverride 文件的目录。
      --log <文件>             改变日志文件。
      --force                  就算没有通过自检,也强制执行操作。
      --skip-auto              在自动模式中跳过设置正确候选项的提示
                               (只与 --config 有关)
      --verbose                启用详细输出。
      --quiet                  安静模式,输出尽可能少的信息。不显示输出信息。
      --help                   显示本帮助信息。
      --version                显示版本信息。
    
    

    常用的选项包括display,install,config,remove等。

    2.替换netcat-openbsd

    1.先安装传统的netcat

    sudo apt-get install netcat
    

    2.运行如下命令:

    sudo update-alternatives --config nc
    

    此时会显示如下:

    有 2 个候选项可用于替换 nc (提供 /bin/nc)。
    
      选择       路径               优先级  状态
    ------------------------------------------------------------
    * 0            /bin/nc.openbsd       50        自动模式
      1            /bin/nc.openbsd       50        手动模式
      2            /bin/nc.traditional   10        手动模式
    
    要维持当前值[*]请按回车键,或者键入选择的编号:
    

    3.根据提示选择
    我们现在是想切换到第2个,所以输入2

    4.Done!

    展开全文
  • Arrays.asList("Traditional ViewPager", "FragmentManager & Fragment")的作用是把"Traditional ViewPager", "FragmentManager & Fragment"、 这两个字符串变成一个一个不可以add和remove的list 因此因此有...
    package com.example.test.mainframework2;
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import com.example.test.mainframework2.fragment.FragmentMainActivity;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    public class MainActivity extends Activity {
            private ListView listView;
        private ArrayAdapter<String> adapter;
            private List<String> mData = new ArrayList<String>(Arrays.asList("Traditional ViewPager", "FragmentManager & Fragment"));
            /*
                 Arrays.asList("Traditional ViewPager", "FragmentManager & Fragment")的作用是把"Traditional ViewPager", "FragmentManager & Fragment"、
                 这两个字符串变成一个一个不可以add和remove的list
                 因此因此有Arrays.asList转换出来的List他其实是一个AbstractList,他可以像List一样访问,但是不可其做任何修改操作。
                 详见http://xixinfei.iteye.com/blog/1260852查看
            */
            @Override
            protected void onCreate(Bundle savedInstanceState)
            {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.welcome);
                listView = (ListView) findViewById(R.id.id_listview);
                //Android中Adapter是数据和视图之间的桥梁,数据在adapter中做处理,然后显示到视图上面。
                //而 ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mData)的作用类似于创建
                //一个个textview然后把mData的数据写在textview上面展示到屏幕上
                //其中this是指当前这个activity,android.R.layout.simple_list_item_1指展示的样式,mData是展示的数据
                adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mData);
                listView.setAdapter(adapter);
                listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
                {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id)
                    {
                        Intent intent = null;
                        switch (position)
                        {
                            case 0:
                                intent = new Intent(MainActivity.this, TraditionalViewPagerAcvitity.class);
                                break;
                            case 1:
                                intent = new Intent(MainActivity.this, FragmentMainActivity.class);
                                break;
    
                            default:
                                break;
                        }
                        startActivity(intent);
                    }
                });
            }
    }
    MainActivity的布局文件:R.layout.welcome
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#eee"
        android:orientation="vertical" >
    
        <android.support.v4.view.ViewPager
            android:id="@+id/id_viewpager"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" >
        </android.support.v4.view.ViewPager>
    
        <include layout="@layout/bottom_bar" />
    
    </LinearLayout>

     "FragmentManager & Fragment"的介绍这里我就介绍重点的东西,所以就不全部写出了啦
    package com.example.test.mainframework2.fragment;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ImageButton;
    import android.widget.LinearLayout;
    import android.widget.Toast;
    
    import com.example.test.mainframework2.R;
    public class FragmentMainActivity extends Activity implements OnClickListener
    {
    	//这是四个fragment用来展示数据的
    	private MainTab02 mTab02;
    	private MainTab01 mTab01;
    	private MainTab03 mTab03;
    	private MainTab04 mTab04;
    
    	/**
    	 * 底部四个按钮
    	 */
    	private LinearLayout mTabBtnWeixin;
    	private LinearLayout mTabBtnFrd;
    	private LinearLayout mTabBtnAddress;
    	private LinearLayout mTabBtnSettings;
    	/**
    	 * 用于对Fragment进行管理
    	 */
    	private FragmentManager fragmentManager;
    
    	@SuppressLint("NewApi")
    	@Override
    	protected void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.fragment_main);
    		initViews();
    		//获取fragment的管理类fragmentManager
    		fragmentManager = getFragmentManager();
    		setTabSelection(0);
    	}
    
    	
    	//初始化四个按钮并添加监听事件
    	private void initViews()
    	{
    
    		mTabBtnWeixin = (LinearLayout) findViewById(R.id.id_tab_bottom_weixin);
    		mTabBtnFrd = (LinearLayout) findViewById(R.id.id_tab_bottom_friend);
    		mTabBtnAddress = (LinearLayout) findViewById(R.id.id_tab_bottom_contact);
    		mTabBtnSettings = (LinearLayout) findViewById(R.id.id_tab_bottom_setting);
    
    		mTabBtnWeixin.setOnClickListener(this);
    		mTabBtnFrd.setOnClickListener(this);
    		mTabBtnAddress.setOnClickListener(this);
    		mTabBtnSettings.setOnClickListener(this);
    	}
    	//按钮的监听事件处理
    	@Override
    	public void onClick(View v)
    	{
    		switch (v.getId())
    		{
    		case R.id.id_tab_bottom_weixin:
    			setTabSelection(0);
    			break;
    		case R.id.id_tab_bottom_friend:
    			setTabSelection(1);
    			break;
    		case R.id.id_tab_bottom_contact:
    			setTabSelection(2);
    			break;
    		case R.id.id_tab_bottom_setting:
    			setTabSelection(3);
    			break;
    		default:
    			break;
    		}
    	}
    
    	/**
    	 * 根据传入的index参数来设置选中的tab页。
    	 * 
    	 */
    	@SuppressLint("NewApi")
    	private void setTabSelection(int index)
    	{
    		// 重置按钮
    		resetBtn();
    		// 开启一个Fragment事务
    		FragmentTransaction transaction = fragmentManager.beginTransaction();
    		// 先隐藏掉所有的Fragment,以防止有多个Fragment显示在界面上的情况
    		hideFragments(transaction);
    		switch (index)
    		{
    		case 0:
    			// 当点击了消息tab时,改变控件的图片和文字颜色
    			((ImageButton) mTabBtnWeixin.findViewById(R.id.btn_tab_bottom_weixin))
    					.setImageResource(R.drawable.tab_weixin_pressed);
    			if (mTab01 == null)
    			{
    				// 如果MessageFragment为空,则创建一个并添加到界面上
    				mTab01 = new MainTab01();
    				transaction.add(R.id.id_content, mTab01);
    			} else
    			{
    				// 如果MessageFragment不为空,则直接将它显示出来
    				transaction.show(mTab01);
    			}
    			break;
    		case 1:
    			// 当点击了消息tab时,改变控件的图片和文字颜色
    			((ImageButton) mTabBtnFrd.findViewById(R.id.btn_tab_bottom_friend))
    					.setImageResource(R.drawable.tab_find_frd_pressed);
    			if (mTab02 == null)
    			{
    				// 如果MessageFragment为空,则创建一个并添加到界面上
    				mTab02 = new MainTab02();
    				transaction.add(R.id.id_content, mTab02);
    			} else
    			{
    				// 如果MessageFragment不为空,则直接将它显示出来
    				transaction.show(mTab02);
    			}
    			break;
    		case 2:
    			// 当点击了动态tab时,改变控件的图片和文字颜色
    			((ImageButton) mTabBtnAddress.findViewById(R.id.btn_tab_bottom_contact))
    					.setImageResource(R.drawable.tab_address_pressed);
    			if (mTab03 == null)
    			{
    				// 如果NewsFragment为空,则创建一个并添加到界面上
    				mTab03 = new MainTab03();
    				transaction.add(R.id.id_content, mTab03);
    			} else
    			{
    				// 如果NewsFragment不为空,则直接将它显示出来
    				transaction.show(mTab03);
    			}
    			break;
    		case 3:
    			// 当点击了设置tab时,改变控件的图片和文字颜色
    			((ImageButton) mTabBtnSettings.findViewById(R.id.btn_tab_bottom_setting))
    					.setImageResource(R.drawable.tab_settings_pressed);
    			if (mTab04 == null)
    			{
    				// 如果SettingFragment为空,则创建一个并添加到界面上
    				mTab04 = new MainTab04();
    				transaction.add(R.id.id_content, mTab04);
    			} else
    			{
    				// 如果SettingFragment不为空,则直接将它显示出来
    				transaction.show(mTab04);
    			}
    			break;
    		}
    		transaction.commit();
    	}
    
    	/**
    	 * 清除掉所有的选中状态。
    	 */
    	private void resetBtn()
    	{
    		((ImageButton) mTabBtnWeixin.findViewById(R.id.btn_tab_bottom_weixin))
    				.setImageResource(R.drawable.tab_weixin_normal);
    		((ImageButton) mTabBtnFrd.findViewById(R.id.btn_tab_bottom_friend))
    				.setImageResource(R.drawable.tab_find_frd_normal);
    		((ImageButton) mTabBtnAddress.findViewById(R.id.btn_tab_bottom_contact))
    				.setImageResource(R.drawable.tab_address_normal);
    		((ImageButton) mTabBtnSettings.findViewById(R.id.btn_tab_bottom_setting))
    				.setImageResource(R.drawable.tab_settings_normal);
    	}
    
    	/**
    	 * 将所有的Fragment都置为隐藏状态。
    	 * 
    	 * @param transaction
    	 *            用于对Fragment执行操作的事务
    	 */
    	@SuppressLint("NewApi")
    	private void hideFragments(FragmentTransaction transaction)
    	{
    		if (mTab01 != null)
    		{
    			transaction.hide(mTab01);
    		}
    		if (mTab02 != null)
    		{
    			transaction.hide(mTab02);
    		}
    		if (mTab03 != null)
    		{
    			transaction.hide(mTab03);
    		}
    		if (mTab04 != null)
    		{
    			transaction.hide(mTab04);
    		}
    		
    	}
    
    }
    

    FragmentMainActivity的布局文件:R.layout.fragment_main
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <FrameLayout
            android:id="@+id/id_content"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" >
        </FrameLayout>
    
       <include layout="@layout/bottom_bar"/>
    
    </LinearLayout>

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ly_main_tab_bottom"
        android:layout_width="fill_parent"
        android:layout_height="55dp"
        android:layout_alignParentBottom="true"
        android:background="@drawable/bottom_bar" >
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="55dp" >
    
            <LinearLayout
                android:id="@+id/id_tab_bottom_weixin"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:descendantFocusability="beforeDescendants"
                android:gravity="center"
                android:orientation="vertical" >
    
                <ImageButton
                    android:id="@+id/btn_tab_bottom_weixin"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#0000"
                    android:clickable="false"
                    android:src="@drawable/tab_weixin_pressed" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="微信" />
            </LinearLayout>
    
            <LinearLayout
                android:id="@+id/id_tab_bottom_friend"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:descendantFocusability="beforeDescendants"
                android:gravity="center"
                android:orientation="vertical" >
    
                <ImageButton
                    android:id="@+id/btn_tab_bottom_friend"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#0000"
                    android:clickable="false"
                    android:src="@drawable/tab_find_frd_normal" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="朋友" />
            </LinearLayout>
    
            <LinearLayout
                android:id="@+id/id_tab_bottom_contact"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:descendantFocusability="beforeDescendants"
                android:gravity="center"
                android:orientation="vertical" >
    
                <ImageButton
                    android:id="@+id/btn_tab_bottom_contact"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#0000"
                    android:clickable="false"
                    android:src="@drawable/tab_address_normal" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="通讯录" />
            </LinearLayout>
    
            <LinearLayout
                android:id="@+id/id_tab_bottom_setting"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:descendantFocusability="beforeDescendants"
                android:gravity="center"
                android:orientation="vertical" >
    
                <ImageButton
                    android:id="@+id/btn_tab_bottom_setting"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#0000"
                    android:clickable="false"
                    android:src="@drawable/tab_settings_normal" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="设置" />
            </LinearLayout>
        </LinearLayout>
    
    </RelativeLayout>
    下面就给出一个fragment的用法和布局。其他都类似,大家可以自己模仿写成
    package com.example.test.mainframework2.fragment;
    
    import android.annotation.SuppressLint;
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    @SuppressLint("NewApi")
    public class MainTab01 extends Fragment
    {
    
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    	{
    		return inflater.inflate(com.example.test.mainframework2.R.layout.main_tab_01, container, false);
    
    	}

    布局文件
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ly_main_weixin"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#fcfcfc"
        android:orientation="vertical" >
        
        <include layout="@layout/title_bar"/>
    
       	<TextView 
       	    android:layout_width="fill_parent"
       	    android:layout_height="0dp"
       	    android:layout_weight="1"
       	    android:gravity="center"
       	    android:text="this is first tab !"
       	    android:textColor="#000000"
       	    android:textSize="30sp"
       	    />
    </LinearLayout>
     
    于FragmentManager & Fragment不同的是Traditional ViewPager有动态滑动的效果,但是却不具有fragment中点击的功能。而Traditional ViewPager相对于FragmentManager & Fragment不需要写很多的Fragment。
    package com.example.test.mainframework2;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v4.view.ViewPager.OnPageChangeListener;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageButton;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    
    public class TraditionalViewPagerAcvitity extends Activity
    {
    
    	/**
    	 * ViewPager
    	 */
    	private ViewPager mViewPager;
    	/**
    	 * ViewPager的适配器
    	 */
    	private PagerAdapter mAdapter;
    	private List<View> mViews;
    	private LayoutInflater mInflater;
    
    	private int currentIndex;
    
    	/**
    	 * 底部四个按钮
    	 */
    	private LinearLayout mTabBtnWeixin;
    	private LinearLayout mTabBtnFrd;
    	private LinearLayout mTabBtnAddress;
    	private LinearLayout mTabBtnSettings;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		mInflater = LayoutInflater.from(this);
    		mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
    
    		/**
    		 * 初始化View
    		 */
    		initView();
    
    		mViewPager.setAdapter(mAdapter);
    
    		mViewPager.setOnPageChangeListener(new OnPageChangeListener()
    		{
    
    			@Override
    			public void onPageSelected(int position)
    			{
    				resetTabBtn();
    				switch (position)
    				{
    					case 0:
    						((ImageButton) mTabBtnWeixin.findViewById(R.id.btn_tab_bottom_weixin))
    								.setImageResource(R.drawable.tab_weixin_pressed);
    						break;
    					case 1:
    						((ImageButton) mTabBtnFrd.findViewById(R.id.btn_tab_bottom_friend))
    								.setImageResource(R.drawable.tab_find_frd_pressed);
    						break;
    					case 2:
    						((ImageButton) mTabBtnAddress.findViewById(R.id.btn_tab_bottom_contact))
    								.setImageResource(R.drawable.tab_address_pressed);
    						break;
    					case 3:
    						((ImageButton) mTabBtnSettings.findViewById(R.id.btn_tab_bottom_setting))
    								.setImageResource(R.drawable.tab_settings_pressed);
    						break;
    				}
    
    				currentIndex = position;
    			}
    
    			@Override
    			public void onPageScrolled(int arg0, float arg1, int arg2)
    			{
    
    			}
    
    			@Override
    			public void onPageScrollStateChanged(int arg0)
    			{
    			}
    		});
    
    	}
    
    	protected void resetTabBtn()
    	{
    		((ImageButton) mTabBtnWeixin.findViewById(R.id.btn_tab_bottom_weixin))
    				.setImageResource(R.drawable.tab_weixin_normal);
    		((ImageButton) mTabBtnFrd.findViewById(R.id.btn_tab_bottom_friend))
    				.setImageResource(R.drawable.tab_find_frd_normal);
    		((ImageButton) mTabBtnAddress.findViewById(R.id.btn_tab_bottom_contact))
    				.setImageResource(R.drawable.tab_address_normal);
    		((ImageButton) mTabBtnSettings.findViewById(R.id.btn_tab_bottom_setting))
    				.setImageResource(R.drawable.tab_settings_normal);
    	}
    
    	private void initView()
    	{
    
    		mTabBtnWeixin = (LinearLayout) findViewById(R.id.id_tab_bottom_weixin);
    		mTabBtnFrd = (LinearLayout) findViewById(R.id.id_tab_bottom_friend);
    		mTabBtnAddress = (LinearLayout) findViewById(R.id.id_tab_bottom_contact);
    		mTabBtnSettings = (LinearLayout) findViewById(R.id.id_tab_bottom_setting);
    
    		mViews = new ArrayList<View>();
    		View first = mInflater.inflate(R.layout.main_tab_01, null);
    		View second = mInflater.inflate(R.layout.main_tab_02, null);
    		View third = mInflater.inflate(R.layout.main_tab_03, null);
    		View fourth = mInflater.inflate(R.layout.main_tab_04, null);
    		mViews.add(first);
    		mViews.add(second);
    		mViews.add(third);
    		mViews.add(fourth);
    
    		mAdapter = new PagerAdapter()
    		{
    			@Override
    			public void destroyItem(ViewGroup container, int position, Object object)
    			{
    				container.removeView(mViews.get(position));
    			}
    
    			@Override
    			public Object instantiateItem(ViewGroup container, int position)
    			{
    				View view = mViews.get(position);
    				container.addView(view);
    				return view;
    			}
    
    			@Override
    			public boolean isViewFromObject(View arg0, Object arg1)
    			{
    				return arg0 == arg1;
    			}
    
    			@Override
    			public int getCount()
    			{
    				return mViews.size();
    			}
    		};
    	}
    
    }
    
    运行截图:
    资源下载地址:http://download.csdn.net/detail/linzhiqiang0316/9026049
    
    转载于:http://blog.csdn.net/lmj623565791/article/details/24740977
    
    展开全文
  • Matlab中的class用法

    万次阅读 2015-04-13 17:27:35
    Matlab中的class主要是返回对象的数据类型,用法为class(); 可能的返回值有:  double -- Double precision floating point number array  (this is the traditional MATLAB matrix or array)
  • 深度学习:bert embedding用法详解

    千次阅读 2019-07-13 17:09:27
    如BERT-Base, Chinese: Chinese Simplified and Traditional, 12-layer, 768-hidden, 12-heads, 110M parameters 解压到目录/.../chinese_L-12_H-768_A-12/,其中...为你自己的某个目录。 [https://github.co...
  • Linux ed命令用法详解

    2021-01-09 20:40:45
    Linux ed命令 Linux ed命令是文本编辑器,用于文本编辑。...-G或–traditional 提供回兼容的功能。 -p 指定ed在command mode的提示字符。 -s,-,–quiet或–silent 不执行开启文件时的检查功能。 –help 显
  • 全部切开雕刻开创切片雕塑Wudi welcomes the friends from the whole earth to invest, develop and carve out....期刊摘选Paint line carve also become overseas many favorite Chinese traditional culture o...
  • 全部四级六级高考考研Renters, meanwhile, pay less than they would if they bought the item themselves, or turned to a traditional provider such as a hotel or car-hire firm.出自-2013年12月阅读原文The ...
  • 全部四级六级高考Traditional Ukrainian decorated eggs also spoke to those fears.出自-2017年6月阅读原文There's an ancient legend that as long as these eggs are made, evil will not prevail in the world, ...
  • 文章目录Word Preparationstadium: 体育场renowned: 著名的modern architecture: 现代...之一traditional architecture: 传统建筑man-made structure: 人造建筑Grammarbecause of的用法 Word Preparation stadium: ...
  • 中文文案排版指北

    2019-10-06 21:56:42
    统一中文文案、排版的相关用法,降低团队成员之间的沟通成本,增强网站气质。 转载自 GitHub,作为参考: mzlogin/chinese-copywriting-guidelines Other languages: English Chinese Traditional Chinese ...
  • .net实现简繁体转换

    热门讨论 2008-09-10 11:06:49
    .net 简繁体转换 Encode.dll EncodeRobert Traditional。 .net实现简繁体转换 主要用Encode.dll 实现的。 我发上来的是实例源码,大家有兴趣的可以用反编译工具看看Encode.dll 的代码实现。 具体用法请参考: ...
  • flume的三个简单案例

    2021-01-06 21:26:41
    文章目录简介监控端口数据案例实时读取本地文件到 HDFS 案例实时读取目录文件到 HDFS 案例netstat 用法 简介 监控端口数据案例 案例需求: 首先启动 Flume 任务,监控本机 44444 端口,服务端; 然后通过 netcat ...
  • AI小白入门本文根据自己的学习过程以及查阅相关资料的理解,对自然语言基础技术之词性标注进行了相对全面的简绍,包括定义、目前的难点以及常见方法,还推荐了一大波python实战利器,并且包括工具的用法。...
  • 剧照:约定的梦幻岛(第二季)作者:古明地盆来源:www.cnblogs.com/traditional/p/12580638.html楔子...首先我们要安装,直接 pip install psutil 即可,安装之后来看看它的用法。CPU 相关获取 CPU 的逻辑数量importp...
  • 欢迎关注同名微信公众号:AI小白入门。跟着博主的脚步,每天进步一点点哟本文根据自己的学习过程以及查阅相关资料的...词性定义维基百科上对词性的定义为:In traditional grammar, a part of speech (abbreviated f...
  • 4.Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool Document.chm 汉字与繁体互转中文API 详细用法文章: http://blog.csdn.net/qq395537505/article/details/51848681
  • 統一中文文案、排版的相關用法,降低團隊成員之間的溝通成本,增強網站氣質。Other languages: English Chinese Traditional Chinese Simplifed 目次 空格 中英文之間需要增加空格 中文與數字之間需要增加空格 數字...
  • 向AI转型的程序员都关注...,回头看了一下自己写了这么多东西一直围绕着traditional machine learning,所以就有了一个整理出深度学习在我熟悉的风控、推荐、CRM等等这些领域的用法的想法。我想在这边篇文章浅入浅出的
  • 一个非常好用繁简体转换js 调用方法。 JS繁简切换 Code By Sundj. 网络上有一个Edited by tMosport写的JS繁简切换的脚本,我觉得不太... <a id="ST_translate" onclick="do_simple_to_traditional();">繁體中文</a>
  • JS繁简切换 Code By Sundj. 网络上有一个Edited by tMosport写的JS繁简切换的脚本,我觉得不太方便用。 参考了tMosport的代码重写了... <a id="ST_translate" onclick="do_simple_to_traditional();">繁體中文</a>
  • ZendFramework中文文档

    2011-03-22 10:11:12
    2.3. 高级用法 2.3.1. 保存 ACL 数据确保持久性 2.3.2. 使用声明(Assert)来编写条件性的 ACL 规则 3. Zend_Auth 3.1. 简介 3.1.1. 适配器 3.1.2. 结果 3.1.3. 身份的持久(Persistence) 3.1.3.1. 在...
  • 用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径 词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒...
  • 02 Python range的用法以及练习 03 Python 课上练习解释 04 Python 基础知识练习题试题 第12章 01 今日内容介绍以及基础测试题答案讲解 02 Python 列表的魔法 03 Python 元组的魔法 04 Python 字典的魔法 05 ...
  • 用法: Jieba::loadUserDict(file_name) # file_name 為自定義詞典的絕對路徑 詞典格式和 dict.txt 一樣,一個詞佔一行;每一行分為三部分,一部分為詞語,一部分為詞頻,一部分為詞性,用空格隔開 範例: ...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

traditional用法