Android之单复选框及Spinner实现二级联动
一、基礎學習
??? 1.圖形學真的很神奇啊。。。。查了些資料做出了3D云標簽,哈哈。。。其實直接拿來用的,我們要效仿魯迅先生的拿來主義,嘿嘿~~3D標簽云就是做一個球面,然后再球面上取均勻分布的點,把點坐標賦給標簽,再根據(jù)抽象出來的Z軸大小來改變標簽的字體大小,透明度,做出立體感覺,然后球體就做好了。用到的就是簡單的球面方程:已知半徑r和球心,一般為了方便,我們都以坐標軸原點為球心,有下面三個方程x=r*sinθ*cosΦ?? y=r*sinθ*sinΦ?? z=r*cosθ;也就是說,我們可以對θ和Φ取隨機數(shù),來獲得圓上的隨機點坐標。但僅此還不夠,因為如果要做3D標簽云,一個很重要點的就是平均分布。如果單純的取隨機坐標,會導致一些標簽重疊,相對來說就沒那么美觀了.怎么解決呢,自己搞吧,我也不懂。這是引用大牛的話,真的很犀利。
??? 2.最近看到MVP們都在搞高并發(fā)測試。
??? 3.openSSL鬧得兇啊。
??? 4.spinner:微調(diào);county:城鎮(zhèn),縣
二、代碼實例
??? 博客園自帶的CnblogsCode老出問題,代碼顯示不完整,究竟咋回事
?? 1.單選框RadioGroup
main.xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:id="@+id/encinfo" android:layout_width="fill_parent"android:layout_height="wrap_content" android:textSize="20px"android:text="請選擇要使用的文字編碼:" /><RadioGroupandroid:id="@+id/encoding" android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"android:checkedButton="@+id/gbk"><RadioButtonandroid:id="@+id/utf"android:text="UTF編碼" /><RadioButtonandroid:id="@+id/gbk"android:text="GBK編碼" /></RadioGroup><TextViewandroid:id="@+id/sexinfo" android:layout_width="fill_parent"android:layout_height="wrap_content" android:textSize="20px"android:text="您的性別是:" /><RadioGroupandroid:id="@+id/sex" android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:checkedButton="@+id/male"><RadioButtonandroid:id="@+id/male"android:text="男" /><RadioButtonandroid:id="@+id/female"android:text="女" /></RadioGroup> </LinearLayout>?????????????
2.復選框CheckBox
main.xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:id="@+id/info" android:layout_width="fill_parent"android:layout_height="wrap_content" android:text="您經(jīng)常瀏覽的網(wǎng)站是:" /><CheckBox android:id="@+id/url1"android:text="www.mldn.cn"android:layout_width="fill_parent"android:layout_height="wrap_content" /><CheckBox android:id="@+id/url2"android:text="bbs.mldn.cn"android:layout_width="fill_parent"android:layout_height="wrap_content" /><CheckBox android:id="@+id/url3"android:layout_width="fill_parent"android:layout_height="wrap_content" /> </LinearLayout>
????????????
3.固定下拉
???????????????
Activitypackage org.lxh.demo;import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Spinner;public class MySpinnerDemo extends Activity {private Spinner spiColor = null; // 表示要讀取的顏色列表框private ArrayAdapter<CharSequence> adapterColor = null; // 所有的數(shù)據(jù)都是String@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.spiColor = (Spinner) super.findViewById(R.id.mycolor); // 取得顏色的下拉框this.spiColor.setPrompt("請選擇您喜歡的顏色:");//下面這兩句不太懂this.adapterColor = ArrayAdapter.createFromResource(this,R.array.color_labels, android.R.layout.simple_spinner_item); // 實例化了ArrayAdapterthis.adapterColor .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 換個風格this.spiColor.setAdapter(this.adapterColor); // 設置顯示信息} }
main.xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><TextView android:id="@+id/info_city"android:layout_width="fill_parent"android:layout_height="wrap_content" android:text="請選擇您喜歡的城市:" /><Spinner android:id="@+id/mycity"android:prompt="@string/city_prompt"android:layout_width="fill_parent"android:layout_height="wrap_content"android:entries="@array/city_labels"/><TextView android:id="@+id/info_color"android:layout_width="fill_parent"android:layout_height="wrap_content" android:text="請選擇您喜歡的顏色:" /><Spinner android:id="@+id/mycolor"android:layout_width="fill_parent"android:layout_height="wrap_content" /><TextView android:id="@+id/info_edu"android:layout_width="fill_parent"android:layout_height="wrap_content" android:text="請選擇您的學歷:" /><Spinner android:id="@+id/myedu"android:layout_width="fill_parent"android:layout_height="wrap_content" /> </LinearLayout>
city<?xml version="1.0" encoding="utf-8"?> <resources><string-array name="color_labels"><item>紅色</item><item>綠色</item><item>藍色</item></string-array> </resources>
color<?xml version="1.0" encoding="utf-8"?> <resources><string-array name="color_labels"><item>紅色</item><item>綠色</item><item>藍色</item></string-array> </resources>
string<?xml version="1.0" encoding="utf-8"?> <resources><string name="hello">Hello World, MySpinnerDemo!</string><string name="app_name">下拉列表</string><string name="city_prompt">請選擇您喜歡的城市:</string> </resources>
??????????????
4.動態(tài)生成下拉內(nèi)容
????? 結(jié)構(gòu)和上面一樣,不過Edu都是動態(tài)生成的,就是從list里獲取。
Activitypackage org.lxh.demo;import java.util.ArrayList; import java.util.List;import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Spinner;public class MySpinnerDemo extends Activity {private Spinner spiColor = null; // 表示要讀取的顏色列表框private Spinner spiEdu = null; // 定義下拉列表private ArrayAdapter<CharSequence> adapterColor = null; // 所有的數(shù)據(jù)都是Stringprivate ArrayAdapter<CharSequence> adapterEdu = null; // 所有的數(shù)據(jù)肯定是字符串private List<CharSequence> dataEdu = null; // 定義一個集合數(shù)據(jù)/** 既然list里是Sting,為什么不用呢,所以我想CharSequence和Sting什么區(qū)別呢?* 查看javaAPI得知,CharSequence是接口,String是其實現(xiàn)類。* CharSequence 是 char 值的一個可讀序列,是接口,String本質(zhì)上是通過字符數(shù)實現(xiàn)的。* 那么換成String行嗎,不行* 第31行提示轉(zhuǎn)換錯誤*/@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.spiColor = (Spinner) super.findViewById(R.id.mycolor); // 取得顏色的下拉框this.spiColor.setPrompt("請選擇您喜歡的顏色:");this.adapterColor = ArrayAdapter.createFromResource(this,R.array.color_labels, android.R.layout.simple_spinner_item); // 實例化了ArrayAdapterthis.adapterColor.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 換個風格this.spiColor.setAdapter(this.adapterColor); // 設置顯示信息// 配置List集合包裝的下拉框內(nèi)容this.dataEdu = new ArrayList<CharSequence>();this.dataEdu.add("大學");this.dataEdu.add("研究生");this.dataEdu.add("高中");this.spiEdu = (Spinner) super.findViewById(R.id.myedu); // 取得下拉框this.spiEdu.setPrompt("請選擇您喜歡的學歷:");//只是下面這個方法不同而已this.adapterEdu = new ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item, this.dataEdu); // 準備好下拉列表框的內(nèi)容this.adapterEdu .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 換個風格this.spiEdu.setAdapter(this.adapterEdu);} }
???????????
5.Spinner二級聯(lián)動
????? 點擊第一級都要觸發(fā)事件,關(guān)鍵還是怎么添加資源文件。
Activitypackage org.lxh.demo;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView;public class MainActivity extends Activity {private TextView textView ;private Spinner province;private Spinner city;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);textView = (TextView)this.findViewById(R.id.textView);province = (Spinner)this.findViewById(R.id.province);city = (Spinner)this.findViewById(R.id.city);//(處理省的顯示)//將可選內(nèi)容與ArrayAdapter的連接(從資源數(shù)組文件中獲取數(shù)據(jù))ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.province, android.R.layout.simple_spinner_item);//設置下拉列表的風格adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//將數(shù)據(jù)綁定到Spinner視圖上province.setAdapter(adapter);//第二個默認被選中province.setSelection(1, true);//添加條目被選中監(jiān)聽器province.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {//parent既是province對象Spinner spinner = (Spinner)parent;String pro = (String)spinner.getItemAtPosition(position);//(處理省的市的顯示)//將默認值與ArrayAdapter連接(從資源數(shù)組文件中獲取數(shù)據(jù))//下面的R.array.province隨意都行ArrayAdapter<CharSequence> cityAdapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.province, android.R.layout.simple_spinner_item);//new ArrayAdapter<CharSequence>// (MainActivity.this,android.R.layout.simple_spinner_item, cities);//獲取所在省含有哪些市(從資源數(shù)組文件中獲取數(shù)據(jù))if(pro.equals("河北省")){cityAdapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.hb, android.R.layout.simple_spinner_item);}else if(pro.equals("北京市")){cityAdapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.bj, android.R.layout.simple_spinner_item);}else if(pro.equals("山西省")){cityAdapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.shx, android.R.layout.simple_spinner_item);}//綁定數(shù)據(jù)到Spinner(City)上city.setAdapter(cityAdapter);}public void onNothingSelected(AdapterView<?> parent) {}});}}main.xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/textView"android:layout_width="fill_parent"android:layout_height="wrap_content" /><RelativeLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content" ><Spinnerandroid:id="@+id/province"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Spinnerandroid:id="@+id/city"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/province" /></RelativeLayout></LinearLayout>
main.xml<?xml version="1.0" encoding="utf-8"?> <resources><string-array name="province"><item>-省份-</item><item>河北省</item><item>山西省</item><item>北京市</item></string-array><string-array name="hb"><item>-城市-</item><item>承德市</item><item>邯鄲市</item><item>廊坊市</item></string-array><string-array name="bj"><item>-城市-</item><item>海淀區(qū)</item><item>朝陽區(qū)</item><item>崇文區(qū)</item></string-array><string-array name="shx"><item>-城市-</item><item>大同市</item><item>臨汾市</item></string-array></resources>
??? 要獲取下拉框spinner中選中的值,用下面這方法就OK了.
三、后記
?? 查資料的過程中發(fā)現(xiàn)很多原創(chuàng)博文被掛在不知名的網(wǎng)站上,估計是自動抓取過來的,筆者在此除了表示氣憤以外也沒有別的辦法,我就想抓取和Android的消息推送有沒有關(guān)系,還有就是如何防止博文被盜鏈,希望路過的看官給留點資料。
?? 關(guān)于博客園自帶代碼插件CnblogsCode在writer里代碼顯示不完整問題我已反應,dudu說確實有問題,需要時間來解決。
總結(jié)
以上是生活随笔為你收集整理的Android之单复选框及Spinner实现二级联动的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL-22 统计各个部门对应员工涨幅的
- 下一篇: 内部类及内部类什么时候使用