> 백엔드 개발 > XML/RSS 튜토리얼 > 안드로이드가 DOM을 사용하여 XML을 구문 분석하는 방법 + 이모티콘 팝업 상자를 만드는 방법

안드로이드가 DOM을 사용하여 XML을 구문 분석하는 방법 + 이모티콘 팝업 상자를 만드는 방법

黄舟
풀어 주다: 2017-02-20 15:01:46
원래의
2015명이 탐색했습니다.

렌더링:


다음 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;
		}
		
	}
	
}
로그인 후 복사

위 내용은 안드로이드가 DOM을 사용하여 XML을 파싱하는 방법과 이모티콘 팝업 상자를 만드는 방법입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿