這篇文章主要介紹了android使用DOM來解析XML和做一個(gè)表情的彈出框的方法,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)公司是工信部頒發(fā)資質(zhì)IDC服務(wù)器商,為用戶提供優(yōu)質(zhì)的內(nèi)江機(jī)房主機(jī)托管服務(wù)
如何解析以下的xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <array> <string>(#大笑)</string> <string>(#微笑)</string> <string>(#親親)</string> <string>(#抱抱)</string> <string>(#色色)</string> <string>(#好失望喲)</string> </array>
這樣來解析:
public class MessageFaceModel { /** single instance of this class */ private static MessageFaceModel instance = null; /** context */ private boolean mInitialized = false; private HashMap<String,Bitmap> mFaceMap = new HashMap<String,Bitmap>(); private ArrayList<String> mFaceStrings = new ArrayList<String>(); private ArrayList<Bitmap> mFaceIcons = new ArrayList<Bitmap>(); /** * constructor */ private MessageFaceModel(){ } /** * Factory method */ public static synchronized MessageFaceModel getInstance(){ if(instance == null){ instance = new MessageFaceModel(); } return instance; } /** * initialize face data */ public void init(Context context){ if(mInitialized){ //initialize only once return; } mFaceMap.clear(); mFaceStrings.clear(); mFaceIcons.clear(); AssetManager assetManager = context.getAssets(); ArrayList<String> faces = new ArrayList<String>(); DocumentBuilderFactory docBuilderFactory = null; DocumentBuilder docBuilder = null; Document doc = null; try { docBuilderFactory = DocumentBuilderFactory.newInstance(); docBuilder = docBuilderFactory.newDocumentBuilder(); doc = docBuilder.parse(assetManager.open("MessageFace.xml")); Element root = doc.getDocumentElement(); NodeList nodeList = root.getElementsByTagName("string"); for(int i =0;i< nodeList.getLength();i++) { Node node = nodeList.item(i); String s = ""; NodeList list = node.getChildNodes(); if(list != null){ for(int j = 0; j < list.getLength(); j++){ s += list.item(j).getNodeValue(); } } faces.add(s); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ doc = null; docBuilder = null; docBuilderFactory = null; } int i; for(i = 0; i < faces.size(); ++i){ int index = i + 1; int id = context.getResources().getIdentifier( "msgface_" + index, "drawable", "com.example.tianqitongtest"); try { Bitmap bm = BitmapFactory.decodeResource(context.getResources(),id); mFaceMap.put(faces.get(i), bm); mFaceStrings.add(faces.get(i)); mFaceIcons.add(bm); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } mInitialized = true; } public ArrayList<Bitmap> getFaceIcons(){ return mFaceIcons; } public ArrayList<String> getFaceStrings(){ return mFaceStrings; } public Bitmap getFaceIcon(String face){ if(mFaceMap != null){ return mFaceMap.get(face); }else{ return null; } } public void clear() { mInitialized = false; mFaceMap.clear(); mFaceStrings.clear(); mFaceIcons.clear(); } }
然后寫這個(gè)Dialog樣式的activity:
<activity android:name=".InputFaceActivity" android:theme="@android:style/Theme.Dialog" android:configChanges="keyboardHidden|orientation"> </activity>
Layout是:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="300dp" android:minHeight="100dp" android:background="#EFEFEF"> <GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/input_face_gridview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="18dp" android:layout_marginRight="10dp" android:layout_marginTop = "18dp" android:layout_marginBottom = "30dp" android:numColumns="auto_fit" android:horizontalSpacing="10dp" android:verticalSpacing="15dp" android:columnWidth="50dp" android:stretchMode="columnWidth" android:gravity="center" android:layout_weight="1.0"> </GridView> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/input_face_cancel_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/cancel_button_style"> </Button> </LinearLayout> </RelativeLayout>
public class InputFaceActivity extends Activity{ private MessageFaceModel mMessageFaceModel = MessageFaceModel.getInstance(); public static final int SELECT_STATE_FACE_ICON = 209; public static final int SELECT_MESSAGE_FACE_ICON = 109; private int mWidth = 0; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); mWidth = this.getResources().getDimensionPixelSize(R.dimen.image_width); getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); setContentView(R.layout.input_face_activity); GridView gridView = (GridView) findViewById(R.id.input_face_gridview); gridView.setAdapter(new FaceListAdapter()); gridView.setOnItemClickListener(new FaceListOnItemClickListener()); Button cancelButton = (Button)findViewById(R.id.input_face_cancel_button); cancelButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { finish(); } }); } private class FaceListAdapter extends BaseAdapter { public int getCount() { if(mMessageFaceModel.getFaceIcons() != null){ return mMessageFaceModel.getFaceIcons().size(); }else{ return 0; } } public Object getItem(int arg0) { return arg0; } public long getItemId(int arg0) { return arg0; } public View getView(int position, View convertView, ViewGroup parent) { ImageView view = new ImageView(InputFaceActivity.this); view.setImageBitmap(mMessageFaceModel.getFaceIcons().get(position)); view.setLayoutParams(new GridView.LayoutParams(mWidth, mWidth)); view.setScaleType(ScaleType.CENTER); return view; } } }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享android使用DOM來解析XML和做一個(gè)表情的彈出框的方法內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!
本文題目:android使用DOM來解析XML和做一個(gè)表情的彈出框的方法
URL分享:http://muchs.cn/article40/gddoeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、虛擬主機(jī)、網(wǎng)站制作、建站公司、營銷型網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)