package com.sogouchat.popnewmsg; import com.sogouchat.R; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.LinearInterpolator; import android.view.animation.RotateAnimation; import android.view.animation.ScaleAnimation; import android.view.animation.Animation.AnimationListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; public class PopConversationView extends LinearLayout { private TextView mTitleView; private RelativeLayout titleLayout; private LinearLayout expandLayout; private LinearLayout layoutOrc; private LinearLayout layoutExt; private EditText inpuText; private Button btnSend; private Button btnOpen; private Button btnExit; private Button btnReply; private boolean bInEditModel = false; private boolean bInExpand = true; private PopConversation conversation = null; private ListView msgListView; public PopConversationView(Context context) { super(context); // TODO Auto-generated constructor stub } public PopConversationView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public void SetPopConversation(PopConversation conversation){ this.conversation = conversation; if (conversation.bInEditModel) { layoutOrc.setVisibility(View.GONE); layoutExt.setVisibility(View.VISIBLE); } mTitleView.setText(conversation.strShow); PopSubListAdapter listAdapter = new PopSubListAdapter(conversation.messages, getContext()); msgListView.setAdapter(listAdapter); msgListView.setSelection(listAdapter.getCount()-1); setListViewHeightBasedOnChildren(msgListView); } public void Update(){ ((BaseAdapter)msgListView.getAdapter()).notifyDataSetChanged(); } public void OnItemExit(){ PopConversationMgr.GetI().DeleteTab(conversation); } public void OnItemOpen(){ } public void OnItemSend(){ String strNumber=null; String strText=null; strNumber = mTitleView.getText().toString(); strText = inpuText.getText().toString(); if (strNumber!=null && strText!=null && !strText.equals("")) { PopConversationMgr.GetI().SendMessage(strNumber, strText); }else { Toast.makeText(getContext(), "error", Toast.LENGTH_SHORT).show(); } PopConversationMgr.GetI().DeleteTab(conversation); } public void OnItemReply(){ final int nHeight= layoutOrc.getLayoutParams().height; final int nWidth = layoutOrc.getLayoutParams().width; ScaleAnimation scaleAnimation = new ScaleAnimation(1, 1, 1, 0.01f, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF,0.0f); scaleAnimation.setDuration(300); LinearInterpolator interpolator = new LinearInterpolator(); scaleAnimation.setInterpolator(interpolator); layoutOrc.startAnimation(scaleAnimation); layoutExt.setVisibility(View.VISIBLE); ScaleAnimation scaleAnimation2 = new ScaleAnimation(1, 1, 0.01f, 1f, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF,1.0f); scaleAnimation2.setDuration(300); layoutExt.startAnimation(scaleAnimation2); scaleAnimation.setAnimationListener(new AnimationListener() { public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } public void onAnimationEnd(Animation animation) { // TODO Auto-generated method stub layoutOrc.setVisibility(View.GONE); } }); if (conversation!=null) { conversation.bInEditModel = true; } } public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); } @Override protected void onFinishInflate() { // TODO Auto-generated method stub titleLayout = (RelativeLayout)this.findViewById(R.id.titlebar); mTitleView = (TextView)this.findViewById(R.id.titletext); expandLayout = (LinearLayout)this.findViewById(R.id.expand_layout); layoutOrc = (LinearLayout)this.findViewById(R.id.popnewdlg_layout_orc); layoutExt = (LinearLayout)this.findViewById(R.id.popnewdlg_layout_ext); inpuText = (EditText)this.findViewById(R.id.popnewdlg_text); msgListView = (ListView)this.findViewById(R.id.new_messageList); //expandLayout.setVisibility(View.GONE); titleLayout.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub bInExpand = !bInExpand; // if (bInExpand) { // expandLayout.setVisibility(View.VISIBLE); // }else { // expandLayout.setVisibility(View.GONE); // } } }); btnSend = (Button)this.findViewById(R.id.popnewdlg_send); btnSend.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub OnItemSend(); } }); btnOpen=(Button)this.findViewById(R.id.popnewdlg_open); btnOpen.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub OnItemOpen(); } }); btnExit=(Button)this.findViewById(R.id.popnewdlg_exit); btnExit.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub OnItemExit(); } }); btnReply =(Button)this.findViewById(R.id.popnewdlg_reply); btnReply.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub OnItemReply(); //conversation.bInEditModel = true; } }); super.onFinishInflate(); } }