这篇文章主要介绍了android使用DOM来解析XML和做一个表情的弹出框的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

如何解析以下的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 oncereturn;}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 blocke.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 blocke.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();}}


然后写这个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;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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(){@Overridepublic 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;}}}

感谢你能够认真阅读完这篇文章,希望小编分享android使用DOM来解析XML和做一个表情的弹出框的方法内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!