編輯:關於Android編程
Spinner是一個下拉列表,通常用於選擇一系列可選擇的列表項,它可以使用適配器,也可以
直接設置數組源。
android:entries=”@array/xx”/>//設置數組源
public class MainActivity extends Activity { Spinner spinner; String[] array = { "", "普快", "空調", "特快", "動車", "高鐵" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapteradapter = new ArrayAdapter (this, android.R.layout.simple_spinner_item, array); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { // position 就是選中的條目,從0開始 String zheng = getResources().getStringArray(R.array.select)[position]; Toast.makeText(getBaseContext(), zheng, Toast.LENGTH_SHORT) .show(); } @Override public void onNothingSelected(AdapterView parent) { // 從沒觸發過 Log.e("TAG", "------------->>沒有選擇"); } }); } } //xml中的配置
ListView是Android中最重要的一種視圖,基本上是個軟件基本都會使用ListView,它以垂直列
表形式列出需要顯示的列表,只有通過Adapter才可以把列表中的數據映射到ListView中。
列表的顯示需要三個元素:
ListVeiw 用來展示列表的View。
適配器用來把數據映射到ListView上的中介。
數據具體的將被映射的字符串,圖片,或者基本組件
XML配置:
1.
public class MainActivity extends Activity { String[] names = { "范冰冰", "李晨", "王寶強", "小澤瑪利亞", "吳京" }; String[] contents = { "簡介:范冰冰,1981年9月16日生於山東青島,華語影視女演員、歌手、制片人。1996年參演電視劇《女強人》。1998年主演電視劇《還珠格格》系列成名,2001年起投身大銀幕。", "簡介:李晨,1978年11月24日出生於北京市,中國內地影視男演員、監制、賽車手,畢業於北京群星藝術學院。", "王寶強,1984年5月29日出生於河北省邢台市,中國內地男演員、導演。王寶強6歲開始練習武術,8歲在嵩山少林寺做俗家弟子。2003年,憑借劇情片《盲井》獲得第40屆台灣電影金馬獎最佳新演員獎[1-2] 。2004年,因參演馮小剛執導的劇情片《天下無賊》而獲得關注。", "簡介:小澤瑪利亞(日語:小澤マリア、おざわ まりあ,英語:Ozawa Maria,1986年1月8日-)日本AV女優,出生於日本北海道,混血兒(父親是法裔加拿大人,母親是日本人),擁有歐洲人的面容和東方人的嬌小體格。", "姓名:吳京生日:1974年04月03日職業:演員,導演簡介:吳京,1974年04月3日出生於北京,中國內地演員,導演。畢業於北京體育大學。1989年進入北京市武術隊" }; int[] ids = { R.drawable.fbb, R.drawable.lichen, R.drawable.wangbaoqiang,R.drawable.xz,R.drawable.wj }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lv = (ListView) findViewById(R.id.lv); //適配器 List> list = new ArrayList >(); final List list2 = new ArrayList (); for (int i = 0; i < 5; i++) { HashMap map = new HashMap (); map.put("img", ids[i]); map.put("name", names[i]); map.put("content", contents[i]); list.add(map); list2.add(new Article(ids[i],names[i] , contents[i])); } MyBaseAdapter2 adapter = new MyBaseAdapter2(this,list2); lv.setAdapter(adapter); } public static class Article { String name; String content; int id; @Override public String toString() { return "int="+ id +",name=" + name + ", content=" + content + "]"; } public Article(int id,String name, String content) { super(); this.id = id; this.name = name; this.content = content; } } }
//自己寫的一個適配器
public class MyBaseAdapter2 extends BaseAdapter { private Context context; private Listlist; public MyBaseAdapter2(Context context, List list) { this.context = context; this.list = list; } @Override public int getCount() { // TODO Auto-generated method stub return list == null ? 0 : list.size(); } @Override public Article getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = View.inflate(context, R.layout.item_layout, null); holder = new ViewHolder(convertView); convertView.setTag(holder); } else holder = (ViewHolder) convertView.getTag(); holder.setData(list.get(position)); return convertView; } // 對於一個較復雜的布局,組件比較多 class ViewHolder// 保存的是所有的布局上的組件 { ImageView img; TextView name; TextView content; public ViewHolder(View convertView) { img = (ImageView) convertView.findViewById(R.id.img); name = (TextView) convertView.findViewById(R.id.text1); content = (TextView) convertView.findViewById(R.id.text2); // convertView.setTag(this); } public void setData(Article a) { img.setImageResource(a.id); name.setText(a.name); content.setText(a.content); } } }
//主xml//顯示樣式的xml
GridView網格視圖是按照行,列分布的方式來顯示多個組件,通常用於顯示圖片或是圖標等,在使
用網格視圖時,首先需要要在屏幕上添加GridView組件。
常用屬性:
1. android:columnWidth 用於設置列的寬度
2. android:gravity 用於設置對齊方式
3. android:horizontalSpacing 用於設置各元素之間的水平間距
4. android:numColumns 用於設置列數
5. android:stretchMode 用於設置拉伸模式,其中屬性值可以是
6. //none(不拉伸),
7. //spacingWidth(僅拉伸元素之間的間距),
8. //columnWidth(僅拉伸表格元素本身)或
9. //spacingWidthUniform(表格元素本身,元素之間的間距一起拉伸)
10. android:verticalSpacing 用於設置各元素之間的垂直間距
GridView與ListView一樣,都需要通過Adapter來提供顯示的數據,ListView可以使用android:entries 來得到數據,但GridView不可以,必須通過適配器來為其添加數據。
GridView的事件和ListView一樣,都是設
置 setOnItemClickListener(OnItemClickListener listener);
public class MainActivity extends Activity { GridView gr; int[] ids = { R.drawable.p01, R.drawable.p02, R.drawable.p03, R.drawable.p04, R.drawable.p05, R.drawable.p06, R.drawable.p07, R.drawable.p08, R.drawable.p09, R.drawable.p10, R.drawable.p11, R.drawable.p12 };//圖片需要自己導入drawable目錄下 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //這是用自己的布局 setContentView(R.layout.activity_main); gr = (GridView) findViewById(R.id.gr); List> data = new ArrayList >(); for (int i = 0; i < 12; i++) { HashMap map = new HashMap (); map.put("img1", ids[i]); data.add(map); } SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item_star, new String[] { "img1" }, new int[] { R.id.img1 }); //spinner.setAdapter(adapter); gr.setAdapter(adapter); gr.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { final ImageView iv = (ImageView) findViewById(R.id.img2); if (iv==null) { Toast.makeText(MainActivity.this, "xuanzhongl"+position, Toast.LENGTH_SHORT).show(); }else { iv.setImageResource(ids[position]); } } }); } }
//主xml//顯示樣式的xml
這是Android mediaserver的提權漏洞,利用CVE-2014-7920和CVE-2014-7921實現提權,從0權限提到media權限,其中CVE-2014
一、概述講解優化查詢相冊圖片之前,我們先來看下PM提出的需求,PM的需求很簡單,就是要做一個類似微信的本地相冊圖片查詢控件,主要包含兩個兩部分: 進入圖片選擇頁面就要顯
public class MainFragmentPagerAdapter extends FragmentPagerAdapter implement
在這裡,總結一下loading進度條的使用簡單總結一下。一、說起進度條,必須說說條形進度條,經常都會使用到嘛,特別是下載文件進度等等,還有像騰訊QQ安裝進度條一樣,有個進