实验 聊天界面UI
来源:互联网 发布:阿里云 cdn 配置 编辑:程序博客网 时间:2024/04/30 20:16
一 实验现象
二 实验部分代码
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>(); @Overrideprotected 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); } @Overridepublic 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; } }
MsgAdapterpackage 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 stubresourceld = 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
- 实验 聊天界面UI
- 实验2:Android UI-聊天界面
- Android UI-聊天界面
- Android UI-聊天界面
- Android UI-聊天界面
- 实验六 聊天界面
- android ui和聊天界面
- 实验2 编写聊天界面
- UI界面编写(仿QQ聊天界面)
- UI设计之--仿微信聊天界面
- 一个简单聊天界面的UI实现
- 实验任务5 编写聊天界面
- Android实验四之聊天界面
- 一个简化版的仿微信聊天界面UI
- Android开发学习之路--UI之简单聊天界面
- Android开发学习之路--UI之简单聊天界面
- Java 实现TCP网络聊天[服务器-客户端]UI界面
- iOS项目实例:QQ聊天界面UI搭建
- 数据库的两列交换顺序
- centos开放端口8080
- windows 下常用的网络相关命令
- 使用React-Native的适配问题和警告搜集
- 项目评估
- 实验 聊天界面UI
- 64位win7环境下进行Scrapy安装
- css
- VS2015中MFC编译运行错误——无法解析的外部符号
- 操作系统学习笔记:xv6 Barriers
- 7 纹理
- 为什么在vs 中用include<iostream.h>不行,而include<stdio.h>可用
- 苏嵌26 16.12.03
- 51nod-1262 扔球(欧拉函数)