您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
这篇文章主要介绍了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 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();
}
}
然后写这个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;
@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和做一个表情的弹出框的方法内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。