編輯:關於Android編程
android中的上下文菜單類似於PC上的鼠標右鍵單擊,不同的是android上沒有鼠標這一概念,更談不上右鍵單擊,在android中,一般是長按某個View,調出上下文菜單。與OptionsMenu不同的是,ContextMenu是一個針對View的菜單,它綁定在某一個View上,而OptionsMenu是屬於一個Activity的。
現在大部分浏覽器都有長按復制的功能,如下圖:
這種效果的實現是使用PopupWindow來實現的(關於PopupWindow的使用可以參見我的另一篇文章popupWindow使用詳解
),雖然它和我們即將要說的ContextMenu很像。
好了,說了這麼多,我們該說說怎麼實現上下文菜單了。
實現上下文菜單一共三個步驟:
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.setHeaderTitle(你想干啥?); menu.setHeaderIcon(R.drawable.a4c); menu.add(0, 0, Menu.NONE, 復制); menu.add(0, 1, Menu.NONE, 剪貼); menu.add(0, 2, Menu.NONE, 重命名); menu.add(1, 3, Menu.NONE, 去新的Activity); }
@Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case 0: tv.setText(item.getTitle().toString()); break; case 1: tv.setText(item.getTitle().toString()); break; case 2: tv.setText(item.getTitle().toString()); break; case 3: tv.setText(item.getTitle().toString()); startActivity(new Intent(this, SecondActivity.class)); break; default: return super.onContextItemSelected(item); } return true; }
tv = (TextView) this.findViewById(R.id.tv); this.registerForContextMenu(tv);
public class SecondActivity extends Activity { private ListView lv; private String[] menuStrs; private ArrayAdapteradapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); lv = (ListView) this.findViewById(R.id.lv); initListView(); this.registerForContextMenu(lv); } private void initListView() { menuStrs = new String[] { 慶歷四年春, 滕子京谪守巴陵郡, 越明年, 政通人和 }; adapter = new ArrayAdapter (this, android.R.layout.simple_list_item_1, menuStrs); lv.setAdapter(adapter); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.setHeaderTitle(你想干啥?); menu.setHeaderIcon(R.drawable.a4c); menu.add(0, 0, Menu.NONE, 岳); menu.add(0, 1, Menu.NONE, 陽); menu.add(0, 2, Menu.NONE, 樓); menu.add(1, 3, Menu.NONE, 記); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item .getMenuInfo(); switch (item.getItemId()) { case 0: menuStrs[menuInfo.position] += 岳; break; case 1: menuStrs[menuInfo.position] += 陽; break; case 2: menuStrs[menuInfo.position] += 樓; break; case 3: menuStrs[menuInfo.position] += 記; break; default: return super.onContextItemSelected(item); } adapter.notifyDataSetChanged(); return true; } }
實現的效果如下圖所示:
Android實際開發中我們一般需要圓角的按鈕,一般情況下我們可以讓美工做出來相應的按鈕圖片,然後放上去即可,另外我們可以在布局文件中直接設置,也可以達到一樣的效果。下面
今天來講講自定義單個控件,就拿開關按鈕來講講,相信大家見了非常多這樣的了,先看看效果:我們可以看到一個很常見的開關按鈕,那就來分析分析。首先:這是由兩張圖片構成:①一張為
終於拋棄了卡頓惡心的Eclipse,在使用一個月Android Studio 之後,對Android Studio 的設計實在是非常敬佩,雖然現在Android
最近項目需要用到涉及數據庫SQLite的知識,真正用的時候才發現自己一點都不熟悉。所以打算將其使用方法總結一下,方便自己以後復習。SQLiteDatabaseSQLite