类似QQ的消息对话框

MainActivity:
package com.example.qq;

import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;


public class MainActivity extends Activity {
private EditText editText = null;
private Button button = null;
private ArrayAdapter adapter = null;
private ListView listView = null;
private EditText editText2 = null;
private Button button2 = null;
private final int VIEW_TYPE = 0xb01;
private final int VIEW_TYPE_LEFT = -10;
private final int VIEW_TYPE_RIGHT = -11;
private ArrayList<HashMap<Integer, Object>> items = new ArrayList<HashMap<Integer, Object>>();
private final int MESSAGE = 0xb02;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adapter = new MyAdapter(this, -1);
listView = (ListView) findViewById(R.id.listView);

listView.setAdapter(adapter);

editText = (EditText) findViewById(R.id.editText);
editText2 = (EditText) findViewById(R.id.editText2);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
sendMessage1();
}
});
button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {


public void onClick(View v) {
sendMessage2();
}
});
}

private void sendMessage1() {
String msg = editText.getText() + "";
HashMap<Integer, Object> map = new HashMap<Integer, Object>();
map.put(VIEW_TYPE, VIEW_TYPE_RIGHT);
map.put(MESSAGE, msg);
items.add(map);
adapter.notifyDataSetChanged();
editText.setText(null);
listView.setSelection(ListView.FOCUS_DOWN);
}

private void sendMessage2() {
String msg = editText2.getText() + "";
HashMap<Integer, Object> map = new HashMap<Integer, Object>();
map.put(VIEW_TYPE, VIEW_TYPE_LEFT);
map.put(MESSAGE, msg);
items.add(map);
adapter.notifyDataSetChanged();
editText2.setText(null);
listView.setSelection(ListView.FOCUS_DOWN);
}

private class MyAdapter extends ArrayAdapter {
private LayoutInflater inflater = null;


public MyAdapter(Context context, int resource) {
super(context, resource);
inflater = LayoutInflater.from(context);
}

public View getView(final int pos, View convertView, ViewGroup parent) {
int type = getItemViewType(pos);
String msg = (String) getItem(pos);

switch (type) {
case VIEW_TYPE_LEFT:
if (convertView == null) {
convertView = inflater.inflate(R.layout.left, null);
}

TextView text2 = (TextView) convertView
.findViewById(R.id.textView2);
Button btn2 = (Button) convertView.findViewById(R.id.button2);
btn2.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
delete(pos);
}
});
text2.setText(msg);
break;
case VIEW_TYPE_RIGHT:
if (convertView == null) {
convertView = inflater.inflate(R.layout.item, null);
}


TextView text1 = (TextView) convertView
.findViewById(R.id.textView1);
Button btn = (Button) convertView.findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {


@Override
public void onClick(View v) {
delete(pos);
}
});
text1.setText(msg);
break;
default:
break;
}
return convertView;
}


public int getCount() {
return items.size();
}


public String getItem(int pos) {
String s = items.get(pos).get(MESSAGE) + "";
return s;
}


public int getItemViewType(int pos) {
int type = (Integer) items.get(pos).get(VIEW_TYPE);
return type;
}


public int getViewTypeCount() {
return 2;
}


public void delete(int pos) {
items.remove(pos);
adapter.notifyDataSetChanged();
}


}


}

布局:
activity_main.xml:
<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="100"
    tools:context="com.example.qq.MainActivity" >


    <ListView 
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="99">
        
    </ListView>

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_weight="1"
        android:weightSum="4">
        <EditText 
            android:id="@+id/editText2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxLines="1"
            android:layout_weight="1"/>
         <Button 
            android:id="@+id/button2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/send"/>
        <EditText 
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxLines="1"
            android:layout_weight="1"/>
        
        <Button 
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/send"/>
        
    </LinearLayout>
</LinearLayout>
item.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:src="@drawable/a"
        android:adjustViewBounds="true" 
        android:maxWidth="100sp"
        android:maxHeight="100sp"
        android:layout_centerVertical="true"/>

    <TextView
        android:id="@+id/textView1"
        android:layout_toLeftOf="@id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
android:layout_centerVertical="true"
        android:textSize="15sp" />


     
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="Button" 
        android:layout_toLeftOf="@id/textView1"
        android:layout_centerVertical="true"
        android:background="@drawable/btn_login_selecter"
        />


</RelativeLayout>

left.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:src="@drawable/a"
        android:adjustViewBounds="true" 
        android:maxWidth="100sp"
        android:maxHeight="100sp"
        android:layout_centerVertical="true"/>

    <TextView
        android:id="@+id/textView2"
        android:layout_toRightOf="@id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
android:layout_centerVertical="true"
        android:textSize="15sp" />


     
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="Button" 
        android:layout_toRightOf="@id/textView2"
        android:layout_centerVertical="true"
        android:background="@drawable/btn_login_selecter"
        />


</RelativeLayout>
drawable文件中引用了Button的编辑
btn_login_selecter.xml:
<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android">  
  
    <item android:state_pressed="true"> <!-- pressed the button status -->  
<shape>  
  
            <!-- 开始颜色="" 结束颜色="" 颜色渐变="" -->  
            <gradient android:angle="270" android:endColor="#888888" android:startColor="#888888" />  
            <!-- //渐变方向     按钮边缘="" 边缘宽="" -->  
            <stroke android:width="1sp" android:color="#fad3cf" />  
            <!-- //边缘颜色   按钮四个圆角="" -->  
            <corners android:radius="30dp" />  
            <!-- //半径    内边距="" 按钮文字和边缘距离="" -->  
            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />  
        </shape></item>  
    <item android:state_focused="true"> <!-- get the focus button sttaus -->  
<shape>  
            <gradient android:angle="270" android:endColor="#ffc2b7" android:startColor="#ffc2b7" />  
  
            <stroke android:width="1sp" android:color="#dcdcdc" />  
  
            <corners android:radius="30dp" />  
  
            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />  
        </shape></item>  
    <item> <!-- no focus the button status(the normal status button) -->  
<shape>  
            <gradient android:angle="270" android:endColor="#00000000" android:startColor="#00000000" />  
  
            <stroke android:width="1sp" android:color="#fad3cf" />  
  
            <corners android:radius="30dp" />  
  
            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />  
        </shape></item>  
  
</selector>  


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值