自定義Notification
書接上一篇的Notification
case R.id.button3:
RemoteViews rv = new RemoteViews(getPackageName(),R.layout.notification_test);
Intent intent2 = new Intent(getApplicationContext(),MainActivity.class);
PendingIntent pend2 = PendingIntent.getActivity(getApplicationContext(),1,intent2,PendingIntent.FLAG_ONE_SHOT);//設置pendingintent的使
Notification notification2 = new Notification.Builder(MainActivity.this).setSmallIcon(R.mipmap.ic_launcher)
.setTicker("新短消息").setContentTitle("標題").setContentText("文本").setContentInfo("內容").setContentIntent(pend2)
.setAutoCancel(true).setWhen(System.currentTimeMillis()).setContent(rv).build();
mNotificationManager.notify(2,notification2);
break;
聊天界面
MVC設計模式,活動、adapter、model分開
public class MainActivity extends Activity implements View.OnClickListener{
private EditText mEditTextContent;
private ImageView mImageView;
private Html.ImageGetter mImageGetter;
private List<ChatMessage> mData;
private ListView mListView;
private Button mButtonSendLeft;
private MessageAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditTextContent = (EditText) findViewById(R.id.edittext);
mImageView = (ImageView) findViewById(R.id.imageview);
mButtonSendLeft = (Button) findViewById(R.id.button_left);
mListView = (ListView) findViewById(R.id.listview);
mImageView.setOnClickListener(this);
mButtonSendLeft.setOnClickListener(this);
mImageGetter = new Html.ImageGetter() {
@Override
public Drawable getDrawable(String s) {
Drawable drawable = getResources().getDrawable(R.mipmap.ecj);
drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
return drawable;
}
};
mData = new ArrayList<>();
mAdapter = new MessageAdapter(getLayoutInflater(),mData,mImageGetter);
mListView.setAdapter(mAdapter);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.imageview:
Spanned spanned = Html.fromHtml("<img src=''/>",mImageGetter,null);
//mEditTextContent.getSelectionStart()輸入框的光標位置
mEditTextContent.getText().insert(mEditTextContent.getSelectionStart(),spanned);//將表情插入到光標位置
break;
case R.id.button_left:
ChatMessage message = new ChatMessage();
message.setImageHead(R.mipmap.ic_launcher);
message.setTitle("營長");
message.setNickname("小明");
message.setTime(System.currentTimeMillis());
message.setTextMessage(filterHtml(Html.toHtml(mEditTextContent.getText())));
Log.d("設置的內容",Html.toHtml(mEditTextContent.getText()));
mData.add(message);//將生成的信息添加到mData中去
mAdapter.notifyDataSetChanged();//刷新listview
mListView.setSelection(mData.size() - 1);//將信息拉倒最後一條
mEditTextContent.setText("");//輸入框清空
break;
default:
break;
}
}
public class MessageAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private List<ChatMessage> mData;
private Html.ImageGetter mImageGetter;
private SimpleDateFormat mFormat;
public MessageAdapter(LayoutInflater mInflater, List<ChatMessage> mData, Html.ImageGetter mImageGetter) {
this.mInflater = mInflater;
this.mData = mData;
this.mImageGetter = mImageGetter;
mFormat = new SimpleDateFormat("EEE HH:mm");
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
ViewHolder vh = null;
if (convertView == null){
convertView = mInflater.inflate(R.layout.item_message,null);
vh = new ViewHolder();
vh.imageview_head = (ImageView) convertView.findViewById(R.id.image_head);
vh.textview_time = (TextView) convertView.findViewById(R.id.textview_time);
vh.textview_title = (TextView) convertView.findViewById(R.id.textview_title );
vh.textview_nickname = (TextView) convertView.findViewById(R.id.textview_nickname);
vh.textview_message = (TextView) convertView.findViewById(R.id.textview_message);
convertView.setTag(vh);
}else{
vh = (ViewHolder) convertView.getTag();
}
ChatMessage msg = mData.get(position);
vh.imageview_head.setImageResource(msg.getImageHead());
vh.textview_title.setText(msg.getTitle());
vh.textview_nickname.setText(msg.getNickname());
Spanned spanned = Html.fromHtml(msg.getTextMessage(),mImageGetter,null);
vh.textview_message.setText(spanned);
String time = mFormat.format(new Date(msg.getTime()));
vh.textview_time.setText(time);
// vh.textview_message.setText(Html.fromHtml(msg.getTextMessage(), mImageGetter, null));
// vh.textview_time.setText("時間"+msg.getTime());
return convertView;
}
class ViewHolder{
ImageView imageview_head;
TextView textview_title;
TextView textview_nickname;
TextView textview_time;
TextView textview_message;
}
}
public class ChatMessage {
private int imageHead;
private String title;
private String nickname;
private long time;
private String textMessage;
public ChatMessage(){
}
public ChatMessage(int imageHead, String title, String nickname, long time, String textMessage) {
this.imageHead = imageHead;
this.title = title;
this.nickname = nickname;
this.time = time;
this.textMessage = textMessage;
}
public int getImageHead() {
return imageHead;
}
public void setImageHead(int imageHead) {
this.imageHead = imageHead;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public long getTime() {
return time;
}
public void setTime(long time) {
this.time = time;
}
public String getTextMessage() {
return textMessage;
}
public void setTextMessage(String textMessage) {
this.textMessage = textMessage;
}
}
聊天界面的整體佈局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:background="#3275C4">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="聊天界面"
android:padding="13dp"
android:textSize="20sp"
android:textColor="#ffffff"/>
</LinearLayout>
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/listview_background"
android:divider="@null">
</ListView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center">
<ImageView
android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/eoj"/>
<Button
android:id="@+id/button_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="發送"
android:layout_margin="5dp"
android:background="@drawable/send_background"/>
<EditText
android:id="@+id/edittext"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="40dp"
android:layout_margin="5dp"
android:background="@color/white"/>
<Button
android:id="@+id/button_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="發送"
android:layout_margin="5dp"
android:background="@drawable/send_background"/>
</LinearLayout>
</LinearLayout>
listview中的佈局設計
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textview_time"
android:gravity="center"
android:padding="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="星期五 10:36"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image_head"
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@mipmap/ic_launcher"/>
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textview_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15dp"
android:textColor="@color/white"
android:text="營長"
android:background="@drawable/text_background"/>
<TextView
android:id="@+id/textview_nickname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:text="乒乒乓乓"/>
</LinearLayout>
<TextView
android:id="@+id/textview_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:text="這裏是聊天內容這裏這裏是聊天內容"
android:layout_marginRight="70dp"
android:background="@mipmap/eng"
android:layout_marginTop="5dp"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>