如何解析以下的xml:
(#大笑) (#微笑) (#亲亲) (#抱抱) (#色色) (#好失望哟)
这样来解析:
public class MessageFaceModel {private static MessageFaceModel instance = null;private boolean mInitialized = false;private HashMapmFaceMap = new HashMap ();private ArrayList mFaceStrings = new ArrayList ();private ArrayList mFaceIcons = new ArrayList ();private MessageFaceModel(){}public static synchronized MessageFaceModel getInstance(){if(instance == null){instance = new MessageFaceModel();}return instance;}public void init(Context context){if(mInitialized){//initialize only oncereturn;}mFaceMap.clear();mFaceStrings.clear();mFaceIcons.clear();AssetManager assetManager = context.getAssets();ArrayList faces = new ArrayList (); 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 getFaceIcons(){return mFaceIcons;}public ArrayList 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:
Layout是:
ntalSpacing="10dp" android:verticalSpacing="15dp" android:columnWidth="50dp" android:stretchMode="columnWidth" android:gravity="center" android:layout_weight="1.0">
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+如果做一个表情的弹出框 的内容,更多相关内容请关注好好学习网(www.haohaoxuexi.cc)!