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

互联网 17-2-20
效果图:

如何解析以下的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();  	}  }
  <activity android:name=".InputFaceActivity"     		 	 android:theme="@android:style/Theme.Dialog"     			 android:configChanges="keyboardHidden|orientation">     		 </activity>
<?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;  		}  		  	}  	  }

以上就是android如何使用DOM来解析XML+如果做一个表情的弹出框 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:android如何使用DOM和SAXParserFactory来解析XML文件

相关资讯