成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android基本概念小整理(二)

移動開發 Android
Android是一種基于Linux的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由Google公司和開放手機聯盟領導及開發。尚未有統一中文名稱,中國大陸地區較多人使用“安卓”或“安致”。

1.SQLite

圖形化界面來查看數據庫,使用Sqliteman

>sudo apt-get install sqliteman

2.關于Activity間的跳轉

>1.Intent it = getIntent();

>2.Intent it = new Intent();

說說第一種,假設注冊了個單擊跳轉的事件,第一次點擊是有反應的,現在退出整個應用程序,再次啟動,此時的單擊事件都失效,其他的監聽事件都沒問題,就屬單擊事件.

3.關于ListView 和 ExpandableListView這種列表控件

Java代碼

  1. @Override   

  2.         public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {   

  3.             ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) menuInfo;   

  4.             int type = ExpandableListView.getPackedPositionType(info.packedPosition);   

  5.             if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {   

  6.                 String title = ((TextView) info.targetView.findViewById(R.id.groupName)).getText().toString();   

  7.                 menu.setHeaderTitle(title);   

  8.                 menu.add(0, MENU_GROUP_ADD, 0"添加分組");   

  9.                 menu.add(0, MENU_GROUP_DELETE, 0"刪除分組");   

  10.                 menu.add(0, MENU_GROUP_MODIFY, 0"重命名");   

  11.                 menu.add(0, MENU_GROUP_ADDCONTACT, 0"添加聯系人");   

  12.             } else if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {   

  13.                 String title = ((TextView) info.targetView.findViewById(R.id.chats_view_name)).getText().toString();   

  14.                 menu.setHeaderTitle(title);menu.add(0, MENU_CONTACTS_DELETE, 0"刪除聯系人");   

  15.                 menu.add(0, MENU_CONTACTS_MODIFY, 0"編輯聯系人");   

  16.                 menu.add(0, MENU_CONTACTS_MOVE, 0"移動聯系人到...");}   

  17.             }   

  18.         @Override   

  19.         public boolean onContextItemSelected(MenuItem item) {   

  20.             ExpandableListContextMenuInfo menuInfo = (ExpandableListContextMenuInfo) item.getMenuInfo();   

  21.             int type = ExpandableListView.getPackedPositionType(menuInfo.packedPosition);   

  22.             if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {   

  23.                 String groupName = ((TextView) menuInfo.targetView.findViewById(R.id.groupName)).getText().toString();   

  24.                 Log.i(TAG, groupName);   

  25.                 switch (item.getItemId()) {   

  26.                     case MENU_GROUP_ADD:break;   

  27.                     case MENU_GROUP_DELETE:break;   

  28.                     case MENU_GROUP_MODIFY:break;   

  29.                     case MENU_GROUP_ADDCONTACT:break;   

  30.                 }   

  31.             } else if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {   

  32.                 String childName = ((TextView) menuInfo.targetView.findViewById(R.id.chats_view_name)).getText().toString();   

  33.                 Log.i(TAG, childName);   

  34.                 switch (item.getItemId()) {   

  35.                     case MENU_CONTACTS_DELETE:break;   

  36.                     case MENU_CONTACTS_MODIFY:break;   

  37.                     case MENU_CONTACTS_MOVE:break;   

  38.                 }   

  39.             }   

  40.             return true;   

  41.         }  

如果需要給group或者child 加上個長按事件

這樣寫了,沒反應,需要將實列注冊給監聽器

Java代碼

  1. ExpandableListView mElv = (ExpandableListView) findViewById(android.R.id.list);registerForContextMenu(mElv);    

另外需要提到一點的是,我在項目里注冊了長按事件,同時group下的child也有個onClick()事件,這時候,onClick()事件無效

需要給child增加單擊事件

Java代碼

  1. mElv.setOnChildClickListener(mChildClickListener);// 注冊group下的item的點擊事件   

  2. OnChildClickListener mChildClickListener = new OnChildClickListener() {   

  3. @Override   

  4. public boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {   

  5. // TODO Auto-generated method stub   

  6. Intent intent = new Intent();   

  7. intent.setClass(Main.this, ChatActivity.class);   

  8. startActivity(intent);   

  9. return false;   

  10. }   

  11. };  

> 今天發現 想要將列表控件中間的分割符去掉,可以通過android:divider="@null"來設置.

別走開 ,下頁繼續深入分析

#p#

4.讓控件顯示在底部(不是界面上的底部),也就是從底部開始顯示,可以采用android:layout_gravity="bottom",該控件不能放在相對布局里,否則沒效果

5.想做出個跟CSS里的Float效果,可以采用RelativeLayout的嵌套,在子RelativeLayout里設置android:layout_alignParentRight="true"等一系列屬性.

6.ListView中如何使用Button,讓onClick和onItemClick事件共存,可以在布局文件里,將這個Button添加個android:focusable="false"屬性

7.EditText控件,讓光標停在字符最後

Java代碼

  1. EditText inputField = new EditText(this);   

  2. Editable eText = inputField.getText();   

  3. int position = eText.length();   

  4. Selection.setSelection(eText, position); 

8.讓控件均勻分布,整齊的排列

Java代碼

  1. <LinearLayout android:id="@+id/chat_bottom"   

  2.                 android:layout_width="fill_parent" android:layout_height="50dip"   

  3.                 android:orientation="horizontal" android:visibility="gone">   

  4.                 <RelativeLayout android:layout_width="fill_parent"   

  5.                     android:layout_height="wrap_content" android:layout_weight="1.0"   

  6.                     android:layout_gravity="center_vertical">   

  7.                     <Button android:id="@+id/btn_chat_history"   

  8.                         android:layout_width="wrap_content" android:layout_height="wrap_content"   

  9. android:background="@drawable/chat_history_button"   

  10.                         android:layout_centerInParent="true" />   

  11.                 </RelativeLayout>   

  12.                 <RelativeLayout android:layout_width="fill_parent"   

  13.                     android:layout_height="wrap_content" android:layout_weight="1.0"   

  14.                     android:layout_gravity="center_vertical">   

  15.                     <Button android:id="@+id/button2" android:layout_width="wrap_content"   

  16.                         android:layout_height="wrap_content" android:background="@drawable/widget_qq"   

  17.                         android:layout_centerInParent="true" />   

  18.                 </RelativeLayout>   

  19.                 <RelativeLayout android:layout_width="fill_parent"   

  20.                     android:layout_height="wrap_content" android:layout_weight="1.0"   

  21.                     android:layout_gravity="center_vertical">   

  22.                     <Button android:id="@+id/back_chats_view"   

  23.                         android:layout_width="wrap_content" android:layout_height="wrap_content"   

  24.                         android:background="@drawable/back_btn"   

  25.                         android:layout_centerInParent="true" />   

  26.                 </RelativeLayout>   

  27.             </LinearLayout>  

9.有時候發現你界面上有個EditText控件,真機上進入這個界面,會獲得焦點,然后彈出一個軟鍵盤出來,可以做如下處理,將焦點給轉移.

Java代碼

  1. <!-- 使EditText的焦點移到linearlayout上,同時保證EditText還可以獲得焦點 -->   
  2.     <LinearLayout android:focusable="true"   
  3.         android:focusableInTouchMode="true" android:layout_height="0px"   
  4.         android:layout_width="0px">   
  5.     </LinearLayout>  

10.控制軟件盤的顯示與隱藏

Java代碼

  1. /**  
  2.      * 控制軟鍵盤的顯示與隱藏  
  3.      */   
  4.     private void opSoftInput(View view, boolean hasFocus){   
  5.         if(hasFocus){   
  6. putMethodManager)getSystemService(INPUT_METHOD_SERVICE)).showSoftInput(view, 0);   
  7.         } else {    
  8. putMethodManager)getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);    
  9.         }   
  10.     }   

11.上次寫了篇關于TextView里解析包含圖片的博客,這次去弄了下EditText中,點擊表情,將表情圖片添加到EditText (類似QQ表情的發送吧)

呵呵,中間走了點彎路,開始是將EditText中的內容拿去解析,還用了正則去匹配,結果失敗,

SpannableString類的setSpan(Object what, int start, int end, int flags)

我采用map保存了表情,

看下當時寫的重寫的EditText的setText()方法

Java代碼

  1. @Override   
  2.         public void setText(CharSequence text, BufferType type) {   
  3.             // TODO Auto-generated method stub   
  4.             initFaceMap();   
  5.             // 需要處理的文本   
  6.             SpannableString spannable = new SpannableString(text.toString());   
  7.             if (text != null && faceMap != null) {   
  8.                 // 對表情符以img標記進行修飾,改用drawable顯示出來   
  9.                 Set<String> keys = faceMap.keySet();   
  10.                 for (String key : keys) {   
  11.                     if (text.toString().contains(key)) {   
  12.                         Drawable drawable = getResources().getDrawable(faceMap.get(key));    
  13.                         drawable.setBounds(00, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());   
  14.                         //要讓圖片替代指定的文字就要用ImageSpan   
  15.                         ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);      
  16.                         int start = text.toString().indexOf(key);   
  17.                         spannable.setSpan(span, start, start + key.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);   
  18.                     }   
  19.                 }   
  20.             }   
  21.             super.setText(spannable, type);   
  22.         }  

這樣寫,如果有輸入相同的表情,則只有第一個顯示正常,后續的都是字符,因為我只遍歷了一遍map,而且是替換了一遍.

下面是簡單方法(需要在布局文件里給每個表情按鈕添加一個tag屬性,展示的是表情,實質內容還是tag的文本,方便接收方的解析)

Java代碼

  1. /** 聊天表情圖片監聽器 */   
  2.  
  3.     private OnClickListener faceImageButtonListener = new OnClickListener() {   
  4.         @Override   
  5.         public void onClick(View v) {   
  6.             // TODO Auto-generated method stub     
  7.             ImageButton imageButton = (ImageButton) v;   
  8.             String emotionTag = imageButton.getTag().toString();   
  9.             int cursor = content.getSelectionEnd();   
  10.             content.getText().insert(cursor, emotionTag);   
  11.             SpannableString spannable = new SpannableString(content.getText());   
  12.             Drawable draw = imageButton.getDrawable();   
  13.             ImageSpan span = new ImageSpan(draw, ImageSpan.ALIGN_BASELINE);   
  14.             // 下面flags參數換成Spannable.SPAN_INCLUSIVE_EXCLUSIVE,會導致添加了表情后,無法刪除表情,也無法輸入字符   
  15.             spannable.setSpan(span, cursor, cursor + emotionTag.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);   
  16.             content.setText(spannable);   
  17.             Editable eText = content.getText();    
  18.             Selection.setSelection(eText, content.getText().length());// 控制光標顯示在字符最后   
  19.         }   
  20.     }; 

最后貼上效果圖

 

 

 

責任編輯:閆佳明 來源: dev.10086
相關推薦

2013-04-16 10:45:52

Android基本概念

2017-07-20 15:59:45

LinuxDevice Tree

2011-03-28 11:05:17

ODBC

2010-01-25 14:13:36

Android菜單系統

2014-04-16 15:11:19

Spark

2012-09-11 14:39:03

Moosefs

2009-03-20 11:46:10

MGCP協議網關

2009-12-21 10:27:52

WCF基本概念

2010-02-23 16:32:29

WCF服務

2009-12-29 18:29:09

Silverlight

2017-04-07 10:19:22

交易支付概念

2010-06-24 13:26:53

FTP協議

2010-07-07 15:17:40

LDAP協議

2010-08-23 16:58:17

DHCP協議

2012-12-03 17:12:10

HDFS

2009-08-18 10:34:31

Java入門基本概念

2010-07-12 09:43:38

Symbian開發

2011-07-19 13:44:39

JavaScript

2010-01-25 10:57:57

Android系統應用

2013-12-26 15:34:19

Android開發Android應用基本概念
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人精选 | 视频在线一区二区 | 国产精品伦理一区二区三区 | 一区二区三区国产精品 | 福利久久 | 久久大陆 | 国产成视频在线观看 | 中文字幕一区二区三区四区 | 91久久 | 在线观看特色大片免费网站 | 国产黄色大片网站 | 91精品久久久久久久99 | 免费亚洲成人 | 亚洲国产中文字幕 | 欧美精品一区二区三区在线播放 | 精品网站999www | 蜜桃臀av一区二区三区 | 国产日韩一区二区三区 | 国产精品一区久久久 | 免费av观看 | 国产高清在线视频 | 日韩一级精品视频在线观看 | 国产一区二区高清在线 | 国产日韩久久久久69影院 | 天天曰天天干 | 成年人精品视频在线观看 | 久久久久国产精品 | 超碰97人人人人人蜜桃 | 亚洲精品福利在线 | 亚洲精品久久久一区二区三区 | 一区二区日本 | 性生活毛片 | 一区二区三区日韩 | 日韩视频区 | 欧洲精品码一区二区三区免费看 | 午夜激情免费视频 | 91精品在线看 | 久久与欧美 | 亚洲一二三区在线观看 | 亚洲欧美视频一区 | 欧美xxxx性 |