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

效果图:

27fa6c6c305c834ed2ba0bc95d7b8b87.png

如何解析以下的xml:

(#大笑)

(#微笑)

(#亲亲)

(#抱抱)

(#色色)

(#好失望哟)

这样来解析:

public class MessageFaceModel {

/** single instance of this class */

private static MessageFaceModel instance = null;

/** context */

private boolean mInitialized = false;

private HashMap mFaceMap = new HashMap();

private ArrayList mFaceStrings = new ArrayList();

private ArrayList mFaceIcons = new ArrayList();

/**

* 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 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 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 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:

android:theme="@android:style/Theme.Dialog"

android:configChanges="keyboardHidden|orientation">

Layout是:

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="300dp"

android:minHeight="100dp"

android:background="#EFEFEF">

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">

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:id="@+id/input_face_cancel_button"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/cancel_button_style">

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)!

声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值