实验 聊天界面UI

一 实验现象


二 实验部分代码

mainActivity中的代码

package com.example.wetalkui;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class MainActivity extends Activity
{
	private ListView msgListView;  
    private EditText inputText;  
    private Button send;  
    private MsgAdapter adapter;  
  
    private List<Msg> msgList = new ArrayList<Msg>();  

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.listviewui);
		initMsgs();  
        adapter = new MsgAdapter(MainActivity.this, R.layout.chatui, msgList);  
        inputText = (EditText)findViewById(R.id.input_text);  
        send = (Button)findViewById(R.id.send);  
        msgListView = (ListView)findViewById(R.id.msg_list_view);  
        msgListView.setAdapter(adapter);  
        send.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View view) {  
                String content = inputText.getText().toString();  
                if(!"".equals(content)) {  
                    Msg msg = new Msg(content, Msg.TYPE_SEND);  
                    msgList.add(msg);  
                    adapter.notifyDataSetChanged();  
                    msgListView.setSelection(msgList.size());  
                    inputText.setText("");  
                }  
            }  
        });  
    }  
  
    private void initMsgs() {  
        Msg msg1 = new Msg("Hello, how are you?", Msg.TYPE_RECEIVED);  
        msgList.add(msg1);  
        Msg msg2 = new Msg("Fine, thank you, and you?", Msg.TYPE_SEND);  
        msgList.add(msg2);  
        Msg msg3 = new Msg("I am fine, too!", Msg.TYPE_RECEIVED);  
        msgList.add(msg3);  
    }  
	

	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}
Msg中代码
package com.example.wetalkui;

public class Msg {
	 public static final int TYPE_RECEIVED = 0;  
	    public static final int TYPE_SEND = 1;  
	  
	    private String content;  
	    private int type;  
	  
	    public Msg(String content, int type) {  
	        this.content = content;  
	        this.type = type;  
	    }  
	  
	    public String getContent() {  
	        return content;  
	    }  
	  
	    public int getType() {  
	        return type;  
	    }  

}
MsgAdapter

package com.example.wetalkui;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MsgAdapter extends ArrayAdapter<Msg> {
    private int resourceld;
	public MsgAdapter(Context context, int textViewResourceId,
			List<Msg> objects) {
		super(context, textViewResourceId, objects);
		// TODO Auto-generated constructor stub
		resourceld = textViewResourceId;
	}
    public View getView(int position, View convertView, ViewGroup parent){
    	Msg msg = getItem(position);  
        View view;  
        ViewHolder viewHolder;  
        if(convertView == null) {  
            view = LayoutInflater.from(getContext()).inflate(resourceld, null);  
            viewHolder = new ViewHolder();  
            viewHolder.leftLayout = (LinearLayout)view.findViewById(R.id.left_layout);  
            viewHolder.rightLayout = (LinearLayout)view.findViewById(R.id.right_layout);  
            viewHolder.leftMsg = (TextView)view.findViewById(R.id.left_msg);  
            viewHolder.rightMsg = (TextView)view.findViewById(R.id.right_msg);  
            view.setTag(viewHolder);  
        } else {  
            view = convertView;  
            viewHolder = (ViewHolder) view.getTag();  
        }  
        if(msg.getType() == Msg.TYPE_RECEIVED) {  
            viewHolder.leftLayout.setVisibility(View.VISIBLE);  
            viewHolder.rightLayout.setVisibility(View.GONE);  
            viewHolder.leftMsg.setText(msg.getContent());  
        } else if(msg.getType() == Msg.TYPE_SEND) {  
            viewHolder.rightLayout.setVisibility(View.VISIBLE);  
            viewHolder.leftLayout.setVisibility(View.GONE);  
            viewHolder.rightMsg.setText(msg.getContent());  
        }  
    	return view;   	
    }
    class ViewHolder{
    	LinearLayout leftLayout;  
        LinearLayout rightLayout;  
        TextView leftMsg;  
        TextView rightMsg;
    }
}
部分聊天界面的设计

 <LinearLayout 
        android:id="@+id/left_layout"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:gravity="left" 
        android:background="@drawable/left_messages"       
        >
        <TextView 
            android:id="@+id/left_msg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="10dp"
            android:textColor="#fff"
            />
        </LinearLayout>
        <LinearLayout 
            android:id="@+id/right_layout"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_gravity="right" 
            android:background="@drawable/right_messages"              
           >
          <TextView 
              android:id="@+id/right_msg"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_gravity="center"
              android:layout_margin="10dp"/>
            
        </LinearLayout>
    
三 实验后体会

  
实验开始时出现了空指针,不能启动程序,在模拟器上一运行就是程序已经停止了,经过定位后发现在setContentView(R.layout.activity_main);initMsgs(); 中存在问题,根据后面的程序所应用的Id都是在listviewui这个layout中,所以开始运行的界面不是activity_main而是listviewui,只要改成setContentView(R.layout.listviewui);就可以运行程序了。此实验中的聊天方框也是一个难点,对制图不好的同学也是个挑战。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值