好好学习

扫一扫关注

android如何使用DOM来解析XML+如果做一个表情的弹出框

下载文本     锦莹莹2022-10-05 09:33:46 8560
效果图:


如何解析以下的xml:


(#大笑)(#微笑)(#亲亲)(#抱抱)(#色色)(#好失望哟)


这样来解析:



public class MessageFaceModel {private static MessageFaceModel instance = null;private boolean mInitialized = false;private HashMap mFaceMap = 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)!

 
反对 0举报 0 收藏 0 评论 0

(c)2022 haohaoxuexi.cc SYSTEM All Rights Reserved

冀ICP备17031443号-5