Android应用开发系列——星座达人①

来源:互联网 发布:淘宝评价怎么不能晒图 编辑:程序博客网 时间:2024/06/07 01:17

       又是隔了好一阵子,这次带来的是当时写的一个应用——星座达人,提供一系列的综合服务,也就是脑子一热,就想写个星座题材的应用。

应用截图:

    

       

       

       


具体的内容,可以下载查看:http://www.anzhi.com/soft_2473845.html


项目工程结构



包com.eric.activity:放置一系列的Activity页面


AboutUsActivity关于页面,简单文本;

AboutUsActivity.java

package com.eric.activity;import com.eric.constellation.R;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.RelativeLayout;/* *@author Eric  *@2015-11-24下午9:57:07 */public class AboutUsActivity extends Activity{private LinearLayout layout_title_about;private ImageView image_back;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_about_us);layout_title_about = (LinearLayout) findViewById(R.id.layout_about);image_back = (ImageView) findViewById(R.id.image_about_back);layout_title_about.getBackground().setAlpha(70);image_back.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {finish();}});}}
activity_about_us.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background= "@drawable/bg4"         >    <RelativeLayout        android:id="@+id/layout_title_about"        android:layout_width="fill_parent"        android:layout_height="@dimen/activity_main_title_height"        android:layout_alignParentTop="true"        android:background="@drawable/title_bg">        <TextView             android:id="@+id/text_title_about"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textColor="#FFF"            android:text="关于"            android:textSize="@dimen/activity_main_title_text_size"            android:layout_centerInParent="true"            android:gravity="center"/>        <ImageView             android:id="@+id/image_about_back"            android:layout_width="50dp"            android:layout_height="50dp"            android:layout_alignParentLeft="true"            android:background="@drawable/title_back_up_down"            />    </RelativeLayout>        <LinearLayout         android:id="@+id/layout_about"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_margin="20dp"        android:padding="20dp"        android:layout_below="@id/layout_title_about"        android:background="@drawable/single_up_down"        android:layoutAnimation="@anim/layout_animation"        android:orientation="vertical">        <ImageView            android:layout_width="150dp"            android:layout_height="150dp"            android:layout_gravity="center_horizontal"            android:background="@drawable/aboutus"/>        <TextView             android:id="@+id/text_about_appname"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginTop="10dp"            android:layout_gravity="center_horizontal"            android:gravity="center_horizontal"            android:textSize="@dimen/activity_about_text"            android:textColor="#FFF"            android:text="@string/app_name"            />        <TextView             android:id="@+id/text_about_version"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_gravity="center_horizontal"            android:gravity="center_horizontal"            android:textSize="@dimen/activity_about_text"            android:textColor="#FFF"            android:text="@string/version_name"            />        <TextView             android:id="@+id/text_about_author"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_gravity="center_horizontal"            android:gravity="center_horizontal"            android:textSize="@dimen/activity_about_text"            android:textColor="#FFF"            android:text="@string/author"            />        <TextView             android:id="@+id/text_about_mail"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_gravity="center_horizontal"            android:gravity="center_horizontal"            android:textSize="@dimen/activity_about_text"            android:textColor="#FFF"            android:text="@string/mail"            />        <TextView             android:id="@+id/text_about_copyright"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_gravity="center_horizontal"            android:gravity="center_horizontal"            android:textSize="@dimen/activity_about_text"            android:textColor="#FFF"            android:text="@string/copyright"            />            </LinearLayout>        </RelativeLayout>

BottomMenuActivity下方弹出菜单页;

BottomMenuActivity.java自定义的一个下弹页面,当做对话框使用,计算积分,后续没有触发;

package com.eric.activity;import com.eric.constellation.R;import com.eric.test.AppConnect;import com.eric.test.UpdatePointsListener;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;/* *@author Eric  *@2015-11-16下午7:25:28 */public class BottomMenuActivity extends Activity implements OnClickListener,UpdatePointsListener{private Button btn_next,btn_go;private TextView text,tips;private String info;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.bottom_menu);AppConnect.getInstance(this);btn_next = (Button) findViewById(R.id.btn_next);btn_go = (Button) findViewById(R.id.btn_go);text = (TextView) findViewById(R.id.text_point_info);tips = (TextView) findViewById(R.id.text_point_tips);info = "当前星币:"+MainActivity.point+"\n"+"消耗星币:"+MainActivity.cost;text.setText(info);btn_next.setOnClickListener(this);btn_go.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_next:finish();break;case R.id.btn_go:AppConnect.getInstance(this).showOffers(this);break;}}@Overridepublic void getUpdatePoints(String arg0, int arg1) {MainActivity.point = arg1;}@Overridepublic void getUpdatePointsFailed(String arg0) {}}

BudejieActivity百思不得姐页面,获取图片和文本页面列表,下拉刷新上拉加载;

BudejieActivity.java通过异步加载框架进行请求图片和文本数据并解析Json,头像随机更新列表项;

package com.eric.activity;import java.io.BufferedInputStream;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Random;import org.apache.http.Header;import org.json.JSONArray;import org.json.JSONObject;import org.json.JSONTokener;import com.eric.constellation.R;import com.eric.mygifview.MyGifView;import com.eric.mylistview.MyListener;import com.eric.mylistview.PullToRefreshLayout;import com.loopj.android.http.AsyncHttpResponseHandler;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import com.eric.budejie.*;import android.app.Activity;import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.webkit.WebView;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemLongClickListener;/* *@author Eric  *@2015-11-23上午9:37:45 */public class BudejieActivity extends Activity{public ImageLoader imageLoader = ImageLoader.getInstance();private ListView listView;private Drawable draw;private int currentPage = 1;private int currentList;private String result;private String name,create_time,love,hate,text,type,image0;private ArrayList<HashMap<String, Object>> dataList = new ArrayList<HashMap<String,Object>>();  private JSONObject contentObject = null;private MyAdapter adapter;public static MyHandler handler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_budejie);((PullToRefreshLayout) findViewById(R.id.refresh_view)).setOnRefreshListener(new MyListener());listView = (ListView) findViewById(R.id.content_view);initListView();}private void initListView(){final AsyncHttpResponseHandler resHandler=new AsyncHttpResponseHandler(){public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable e) {//做一些异常处理e.printStackTrace();Toast.makeText(BudejieActivity.this, "网络异常", 0).show();}public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {try {//数据解析完添加到ListView//System.out.println("response is :"+new String(responseBody,"utf-8"));result = new String(responseBody,"utf-8");readJson(result);//System.out.println("解析到的数据:"+dataList);adapter = new MyAdapter(BudejieActivity.this, dataList);listView.setAdapter(adapter);currentList = listView.getCount();} catch (UnsupportedEncodingException e) {e.printStackTrace();}}};new ShowApiRequest( "http://route.showapi.com/255-1", "12672", "fe08f7b8ae3f4e3cb6855304fe96bbeb") .setResponseHandler(resHandler) .post();listView.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id){}});handler = new MyHandler();}//解析Json数据public void readJson(String str){try {JSONTokener jsonParser = new JSONTokener(str);JSONObject object = (JSONObject) jsonParser.nextValue();JSONObject bodyObject = object.getJSONObject("showapi_res_body");JSONObject pageObject = bodyObject.getJSONObject("pagebean");JSONArray contentArrary = pageObject.getJSONArray("contentlist");System.out.println("ContentArrary="+contentArrary.length());for (int i = 0; i < contentArrary.length(); i++) { HashMap<String,Object> map = new HashMap<String,Object>();contentObject = contentArrary.getJSONObject(i);type = contentObject.getString("type");name = contentObject.getString("name");create_time = contentObject.getString("create_time");love = contentObject.getString("love");hate = contentObject.getString("hate");text = contentObject.getString("text");switch (Integer.parseInt(type)) {case 10://图片image0 = contentObject.getString("image0");//is_gif = contentObject.getString("is_gif");map.put("image0", image0);map.put("name", name);map.put("create_time", create_time);map.put("love", love);map.put("hate", hate);map.put("text", text.trim());map.put("type", type);    dataList.add(map);break;case 29://段子map.put("name", name);map.put("create_time", create_time);map.put("love", love);map.put("hate", hate);map.put("text", text.trim());map.put("type", type);    dataList.add(map);break;case 31://声音break;case 41://视频break;}}} catch (Exception e) {System.out.println("解析Json异常:"+e);}}public class MyAdapter extends BaseAdapter { ArrayList<HashMap<String, Object>> dataList;Context context;public MyAdapter(Context context, ArrayList<HashMap<String, Object>> dataList) {this.context = context;this.dataList = dataList;}@Overridepublic int getCount() {return dataList.size();}@Overridepublic Object getItem(int position) {return dataList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {final View view = LayoutInflater.from(context).inflate(R.layout.layout_listview_item, null);String name = (String)dataList.get(position).get("name");String create_time = (String)dataList.get(position).get("create_time");String text = (String)dataList.get(position).get("text");String love = (String)dataList.get(position).get("love");String hate = (String)dataList.get(position).get("hate");String type = (String)dataList.get(position).get("type");switch (Integer.parseInt(type)) {case 10://图片String image0 = (String)dataList.get(position).get("image0");String gif = image0.substring(image0.lastIndexOf(".")+1, image0.length());DisplayImageOptions options=new DisplayImageOptions.Builder()                //.showImageOnLoading(R.drawable.v)/*加载图片的时候显示正在加载的图*/                .showImageOnFail(R.drawable.menu_text_icon)/*加载图片失败后显示这个张图*/                .cacheInMemory(true)/*缓存至内存*/                //.cacheOnDisk(true)/*缓存值SDcard*/                .bitmapConfig(Bitmap.Config.RGB_565)                .build();if(gif.equals("gif")){WebView wv = ((WebView)view.findViewById(R.id.WebView));wv.setBackgroundColor(0);wv.loadDataWithBaseURL(null,"<HTML><body bgcolor=transparent><div align=center>" +"<IMG src='"+image0+"'/></div></body></html>", "text/html", "UTF-8",null);wv.setVisibility(View.VISIBLE);}else{ImageView v = ((ImageView)view.findViewById(R.id.image_budejie_content));imageLoader.init(ImageLoaderConfiguration.createDefault(BudejieActivity.this));ImageLoader.getInstance().displayImage(image0,v,options);}break;case 29://段子break;case 31://声音break;case 41://视频break;}((TextView)view.findViewById(R.id.text_name)).setText(name);((TextView)view.findViewById(R.id.text_create_time)).setText(create_time);((TextView)view.findViewById(R.id.text_budejie_text)).setText(text);((TextView)view.findViewById(R.id.text_love)).setText(love);((TextView)view.findViewById(R.id.text_hate)).setText(hate);ImageView touxiang = (ImageView)view.findViewById(R.id.image_budejie_touxiang);randomDrawable(touxiang);touxiang.setImageDrawable(draw);return view;}}public void randomDrawable(ImageView touxiang){Random random = new Random();int n = random.nextInt(12);Resources resourses = this.getResources();switch (n) {case 0:draw = resourses.getDrawable(R.drawable.view1);break;case 1:draw = resourses.getDrawable(R.drawable.view2);break;case 2:draw = resourses.getDrawable(R.drawable.view3);break;case 3:draw = resourses.getDrawable(R.drawable.view4);break;case 4:draw = resourses.getDrawable(R.drawable.view5);break;case 5:draw = resourses.getDrawable(R.drawable.view6);break;case 6:draw = resourses.getDrawable(R.drawable.view7);break;case 7:draw = resourses.getDrawable(R.drawable.view8);break;case 8:draw = resourses.getDrawable(R.drawable.view9);break;case 9:draw = resourses.getDrawable(R.drawable.view10);break;case 10:draw = resourses.getDrawable(R.drawable.view11);break;case 11:draw = resourses.getDrawable(R.drawable.view12);break;}}public class MyHandler extends Handler{@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);if(msg.arg1==1){System.out.println("刷新操作");final AsyncHttpResponseHandler resHandler1 = new AsyncHttpResponseHandler(){public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable e) {//做一些异常处理e.printStackTrace();Toast.makeText(BudejieActivity.this, "网络异常", 0).show();}public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {try {//数据解析完添加到ListView//System.out.println("response is :"+new String(responseBody,"utf-8"));result = new String(responseBody,"utf-8");readJson(result);//System.out.println("解析到的数据:"+dataList);adapter = new MyAdapter(BudejieActivity.this, dataList);listView.setAdapter(adapter);} catch (UnsupportedEncodingException e) {e.printStackTrace();}}};new ShowApiRequest( "http://route.showapi.com/255-1", "12672", "fe08f7b8ae3f4e3cb6855304fe96bbeb") .setResponseHandler(resHandler1)  .addTextPara("page", "1") .post();}if(msg.arg2==2){System.out.println("加载操作");final AsyncHttpResponseHandler resHandler2 = new AsyncHttpResponseHandler(){public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable e) {//做一些异常处理e.printStackTrace();Toast.makeText(BudejieActivity.this, "网络异常", 0).show();}public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {try {//数据解析完添加到ListView//System.out.println("response is :"+new String(responseBody,"utf-8"));result = new String(responseBody,"utf-8");readJson(result);//System.out.println("解析到的数据:"+dataList);adapter = new MyAdapter(BudejieActivity.this, dataList);listView.setAdapter(adapter);listView.setSelection(currentList);currentList = listView.getCount();} catch (UnsupportedEncodingException e) {e.printStackTrace();}}};new ShowApiRequest( "http://route.showapi.com/255-1", "12672", "fe08f7b8ae3f4e3cb6855304fe96bbeb") .setResponseHandler(resHandler2)  .addTextPara("page", Integer.toString(currentPage+1)) .post();currentPage+=1;}}}}

activity_budejie.xml不得姐页面布局文件

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background= "@drawable/bg4"     >    <RelativeLayout        android:id="@+id/layout_title"        android:layout_width="fill_parent"        android:layout_height="50dp"                android:layout_alignParentTop="true"        android:background="@drawable/title_bg">        <TextView             android:id="@+id/text_title"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textColor="#FFF"            android:text="百思不得姐"            android:textSize="@dimen/activity_main_title_text_size"            android:layout_centerInParent="true"            android:gravity="center"/>    </RelativeLayout>        <com.eric.mylistview.PullToRefreshLayout        android:id="@+id/refresh_view"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_below="@id/layout_title" >        <include layout="@layout/layout_head_refresh" />        <com.eric.mylistview.PullableListView            android:id="@+id/content_view"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:dividerHeight="1dp" />        <include layout="@layout/layout_head_load" />    </com.eric.mylistview.PullToRefreshLayout></RelativeLayout>

layout_listview_item.xml列表子项布局文件

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:padding="5dp"    ><RelativeLayout     android:id="@+id/layout_budejie_head"    android:layout_width="fill_parent"    android:layout_height="wrap_content">    <ImageView         android:id="@+id/image_budejie_touxiang"        android:layout_width="30dp"        android:layout_height="30dp"        android:layout_alignParentLeft="true"        android:layout_centerVertical="true"        android:background="@drawable/view9"/>    <LinearLayout         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_toRightOf="@id/image_budejie_touxiang"        android:layout_centerVertical="true"        android:orientation="vertical">        <TextView             android:id="@+id/text_name"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textColor="#FFF"            android:textSize="10sp"            android:text="EricFantastic"/>        <TextView             android:id="@+id/text_create_time"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textColor="#FFF"            android:textSize="10sp"            android:text="2015-11-23 16:52"/>    </LinearLayout></RelativeLayout>    <TextView        android:id="@+id/text_budejie_text"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/layout_budejie_head"        android:textColor="#FFF"        android:textSize="18sp"         android:text="hahahahahahhah"/>    <ImageView         android:id="@+id/image_budejie_content"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_below="@id/text_budejie_text"        />    <WebView        android:id="@+id/WebView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layerType="software"        android:visibility="gone"        android:layout_below="@id/image_budejie_content"/>        <RelativeLayout     android:id="@+id/layout_budejie_end"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:layout_below="@id/WebView">    <LinearLayout         android:layout_width="fill_parent"        android:layout_height="40dp"        android:layout_centerVertical="true"        android:orientation="horizontal">        <ImageView             android:layout_width="20dp"            android:layout_height="20dp"            android:layout_gravity="center_vertical"            android:background="@drawable/love"/>        <TextView             android:id="@+id/text_love"            android:layout_width="wrap_content"            android:layout_height="20dp"            android:textColor="#FFF"            android:layout_weight="1"            android:layout_gravity="center_vertical"            android:text="2220"/>        <ImageView             android:layout_width="20dp"            android:layout_height="20dp"            android:layout_gravity="center_vertical"            android:background="@drawable/hate"/>        <TextView             android:id="@+id/text_hate"            android:layout_width="wrap_content"            android:layout_height="20dp"            android:textColor="#FFF"            android:layout_weight="1"            android:layout_gravity="center_vertical"            android:text="235"/>    </LinearLayout></RelativeLayout></RelativeLayout>


ChatActivity小星问答页面,发送文本到指定API接口,返回响应数据;

ChatActivity.java类似于微信聊天页面,发送用户输入数据给API接口,返回响应数据更新页面。

package com.eric.activity;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Random;import org.json.JSONException;import org.json.JSONObject;import org.json.JSONTokener;import com.eric.constellation.R;import android.app.Activity;import android.content.Context;import android.content.res.Resources;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.Window;import android.view.WindowManager;import android.view.View.OnClickListener;import android.view.inputmethod.InputMethodManager;import android.widget.BaseAdapter;import android.widget.EditText;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;/* *@author Eric  *@2015-11-21上午8:21:17 */public class ChatActivity extends Activity implements OnClickListener{public static final String DEF_CHATSET = "UTF-8";public static final int DEF_CONN_TIMEOUT = 30000;public static final int DEF_READ_TIMEOUT = 30000;public static String userAgent ="Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";    //配置您申请的KEY    public static final String APPKEY ="c67cfd82f71f1e011c7c6d40c7e263bb";private ImageView image_voice,image_plus,image_send,image_chat_back;private EditText edit_chat;private Drawable img_userDrawable,img_friendDrawable;private String sendMsg,getMsg;public static ChatHandler handler;private ArrayList<HashMap<String, Object>> chatList = new ArrayList<HashMap<String,Object>>();String[] from = {"img","text"};int[] to = {R.id.image_me,R.id.text_me,R.id.image_friend,R.id.text_friend};int[] item_layout = {R.layout.i_sendmsg_item,R.layout.friend_sendmsg_item};private ListView listview_chat;private MyAdapter myAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);setContentView(R.layout.activity_chat);image_voice = (ImageView) findViewById(R.id.image_voice);image_plus = (ImageView) findViewById(R.id.image_plus);image_send = (ImageView) findViewById(R.id.image_send);image_chat_back = (ImageView) findViewById(R.id.image_chat_back);listview_chat = (ListView) findViewById(R.id.listview_chat);edit_chat = (EditText) findViewById(R.id.edit_chat);randomDrawable();image_chat_back.setOnClickListener(this);image_voice.setOnClickListener(this);image_plus.setOnClickListener(this);image_send.setOnClickListener(this);myAdapter = new MyAdapter(this, chatList, item_layout, from, to);listview_chat.setAdapter(myAdapter);listview_chat.setSelection(myAdapter.getCount()-1);handler = new ChatHandler();}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.image_chat_back:finish();break;case R.id.image_send:sendMessage();break;case R.id.image_voice:break;case R.id.image_plus:break;}}public void randomDrawable(){Random random = new Random();int n = random.nextInt(3);Resources resourses = this.getResources();Resources resourses2 = this.getResources();switch (n) {case 0:img_friendDrawable = resourses.getDrawable(R.drawable.view2);img_userDrawable = resourses2.getDrawable(R.drawable.view1);break;case 1:img_friendDrawable = resourses.getDrawable(R.drawable.view12);img_userDrawable = resourses2.getDrawable(R.drawable.view4);break;case 2:img_friendDrawable = resourses.getDrawable(R.drawable.view10);img_userDrawable = resourses2.getDrawable(R.drawable.view3);break;}}public void sendMessage(){sendMsg = edit_chat.getText().toString();if(sendMsg==null||sendMsg.trim().equals("")){edit_chat.setError("发送内容不能为空!");}else{//这里发送消息;Thread thread = new Thread(new Runnable() {@Overridepublic void run() {getMsg = getRequest(sendMsg);Message msg = new Message();Bundle b = new Bundle();b.putString("strObject", getMsg);msg.setData(b);handler.sendMessage(msg);}});thread.start();edit_chat.setText(null);addChatToListview(0, sendMsg);//将ListView设置为置底显示,自动刷新UI,使得消息及时显示listview_chat.setSelection(myAdapter.getCount()-1);}InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);         imm.hideSoftInputFromWindow(edit_chat.getWindowToken(),0);}//获取机器人数据public static String getRequest(String info){        String result =null;        String url ="http://op.juhe.cn/robot/index";//请求接口地址        Map<String, Object> params = new HashMap<String, Object>();//请求参数            params.put("key",APPKEY);//您申请到的本接口专用的APPKEY            params.put("info",info);//要发送给机器人的内容,不要超过30个字符            params.put("dtype","json");//返回的数据的格式,json或xml,默认为json            params.put("loc","");//地点,如北京中关村            params.put("lon","");//经度,东经116.234632(小数点后保留6位),需要写为116234632            params.put("lat","");//纬度,北纬40.234632(小数点后保留6位),需要写为40234632            params.put("userid","");//1~32位,此userid针对您自己的每一个用户,用于上下文的关联         try {            result =net(url, params, "GET");            System.out.println("FUCK="+result);        } catch (Exception e) {            e.printStackTrace();        }        return result;    }    //网络请求 public static String net(String strUrl, Map<String, Object> params,String method) throws Exception {        HttpURLConnection conn = null;        BufferedReader reader = null;        String rs = null;        try {            StringBuffer sb = new StringBuffer();            if(method==null || method.equals("GET")){                strUrl = strUrl+"?"+urlencode(params);            }            URL url = new URL(strUrl);            conn = (HttpURLConnection) url.openConnection();            if(method==null || method.equals("GET")){                conn.setRequestMethod("GET");            }else{                conn.setRequestMethod("POST");                conn.setDoOutput(true);            }            conn.setRequestProperty("User-agent", userAgent);            conn.setUseCaches(false);            conn.setConnectTimeout(DEF_CONN_TIMEOUT);            conn.setReadTimeout(DEF_READ_TIMEOUT);            conn.setInstanceFollowRedirects(false);            conn.connect();            InputStream is = conn.getInputStream();            reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET));            String strRead = null;            while ((strRead = reader.readLine()) != null) {                sb.append(strRead);            }            rs = sb.toString();        } catch (IOException e) {            e.printStackTrace();        } finally {            if (reader != null) {                reader.close();            }            if (conn != null) {                conn.disconnect();            }        }        return rs;    }     //将map型转为请求参数型    public static String urlencode(Map<String, ?> data) {        StringBuilder sb = new StringBuilder();        for (Map.Entry<String, ?> i : data.entrySet()) {            try {                sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");            } catch (UnsupportedEncodingException e) {                e.printStackTrace();            }        }        return sb.toString();    }     public class ChatHandler extends Handler{private Drawable draw;@Overridepublic void handleMessage(android.os.Message msg) {super.handleMessage(msg);Bundle b = msg.getData();    String strObjcet = b.getString("strObject");    try {    JSONTokener jsonParser = new JSONTokener(getMsg);    JSONObject object = (JSONObject) jsonParser.nextValue();    JSONObject resultObject = object.getJSONObject("result");    String result = resultObject.getString("text");    if(result != null){    addChatToListview(1, result);    }    } catch (JSONException e) {    System.out.println("错误:"+e);    e.printStackTrace();    }listview_chat.setSelection(myAdapter.getCount()-1);}}public void addChatToListview(int who,String chat){HashMap<String,Object> map = new HashMap<String,Object>();map.put("who", who);map.put("chat", chat);chatList.add(map);}public class MyAdapter extends BaseAdapter{Context context;ArrayList<HashMap<String,Object>> chatList= null;int[] layout;String[] from;int[] to;LayoutInflater listcontainer;public MyAdapter(Context context,                ArrayList<HashMap<String, Object>> chatList, int[] layout,                String[] from, int[] to){        super();        this.context = context;        listcontainer = LayoutInflater.from(context);        this.chatList = chatList;        this.layout = layout;        this.from = from;        this.to = to;}@Overridepublic int getCount() {return chatList.size();}@Overridepublic Object getItem(int arg0) {return null;}@Overridepublic long getItemId(int ItemId) {return ItemId;}@Overridepublic View getView(int item, View view, ViewGroup parent) {//获取当前子项的who和chat            int who = (Integer)chatList.get(item).get("who");             String msg = (String)chatList.get(item).get("chat");            //根据who设置当前子项的布局和文本,0为自己发送的布局,1为好友发送的布局            if(who==0)              {              view=listcontainer.inflate(R.layout.i_sendmsg_item, null);                  ((TextView)view.findViewById(R.id.text_me)).setText(msg);                ((TextView)view.findViewById(R.id.text_me)).setTextColor(android.graphics.Color.BLUE);                  ((ImageView)view.findViewById(R.id.image_me)).setImageDrawable(img_userDrawable);                                  ((TextView)view.findViewById(R.id.text_me)).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {//我发送消息文本点击事件}});                ((ImageView)view.findViewById(R.id.image_me)).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {//我头像点击事件}});                return view;              }              else              {              view=listcontainer.inflate(R.layout.friend_sendmsg_item, null);                  ((TextView)view.findViewById(R.id.text_friend)).setText(msg);                  ((TextView)view.findViewById(R.id.text_friend)).setTextColor(android.graphics.Color.BLUE);                ((ImageView)view.findViewById(R.id.image_friend)).setImageDrawable(img_friendDrawable);                                  ((TextView)view.findViewById(R.id.text_friend)).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {//好友消息文本点击事件}});                ((ImageView)view.findViewById(R.id.image_friend)).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {//好友头像点击事件}});                return view;              }  }}}

activity_chat.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background= "@drawable/bg4"     >    <RelativeLayout        android:id="@+id/layout_title_chat"        android:layout_width="fill_parent"        android:layout_height="@dimen/activity_main_title_height"        android:layout_alignParentTop="true"        android:background="@drawable/title_bg">        <TextView             android:id="@+id/text_title_chat"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textColor="#FFF"            android:text="小星问答"            android:textSize="@dimen/activity_main_title_text_size"            android:layout_centerInParent="true"            android:gravity="center"/>        <ImageView             android:id="@+id/image_chat_back"            android:layout_width="50dp"            android:layout_height="50dp"            android:layout_alignParentLeft="true"            android:background="@drawable/title_back_up_down"            />    </RelativeLayout>        <ListView         android:id="@+id/listview_chat"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginBottom="50dp"        android:listSelector="@drawable/chatlist_item_up_down"        android:layout_below="@id/layout_title_chat"        android:divider="#aaaaaa"        android:cacheColorHint="#0000"        android:dividerHeight="0px"        ></ListView>        <RelativeLayout       android:id="@+id/layout_chat_bottom"      android:layout_width="fill_parent"      android:layout_height="50dp"      android:layout_alignParentBottom="true"      android:background="@drawable/title_bg"      >        <ImageView             android:id="@+id/image_voice"            android:layout_width="40dp"            android:layout_height="40dp"            android:layout_gravity="center_vertical"            android:layout_marginLeft="5dp"            android:layout_alignParentLeft="true"            android:layout_centerVertical="true"            android:background="@drawable/voice_up_down"/>        <EditText            android:id="@+id/edit_chat"             android:layout_width="220dp"            android:layout_height="40dp"            android:layout_marginLeft="50dp"            android:layout_centerVertical="true"            android:inputType="text"            android:background="@drawable/title_bg"            android:textColor="#FFF"            />        <ImageView             android:id="@+id/image_plus"            android:layout_width="40dp"            android:layout_height="40dp"            android:layout_gravity="center_vertical"            android:layout_alignParentRight="true"            android:layout_centerVertical="true"            android:layout_marginRight="50dp"            android:background="@drawable/plus_up_down"/>        <ImageView             android:id="@+id/image_send"            android:layout_width="40dp"            android:layout_height="40dp"            android:layout_gravity="center_vertical"            android:layout_alignParentRight="true"            android:layout_centerVertical="true"            android:layout_marginRight="5dp"            android:background="@drawable/send_up_down"/>            </RelativeLayout></RelativeLayout>

i_sendmsg_item.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingLeft="50dp"    android:paddingRight="8dp"    android:paddingTop="10dp"    android:paddingBottom="10dp" >       <ImageView         android:id="@+id/image_me"        android:layout_width="40dp"        android:layout_height="40dp"        android:layout_marginLeft="5dp"        android:layout_alignParentRight="true"        />  <TextView         android:id="@+id/text_me"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_vertical"        android:gravity="center_vertical"        android:textSize="18sp"        android:textStyle="bold"         android:layout_toLeftOf="@id/image_me"        android:background="@drawable/i_chat_bg_up_down"        />  </RelativeLayout>

friend_sendmsg_item.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingLeft="8dp"    android:paddingRight="50dp"    android:paddingTop="10dp"    android:paddingBottom="10dp" >       <ImageView         android:id="@+id/image_friend"        android:layout_width="40dp"        android:layout_height="40dp"        android:layout_marginRight="5dp"        android:layout_alignParentLeft="true"        />  <TextView         android:id="@+id/text_friend"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_vertical"        android:gravity="center_vertical"        android:textSize="18sp"        android:textStyle="bold"         android:layout_toRightOf="@id/image_friend"        android:background="@drawable/friend_chat_up_down"        />  </RelativeLayout>

ConstellationMatchActivity星座配对页面,自定义滚轮控件,跳转数据页面;

ConstellationSecretActivity星座揭秘页面,简单文本;

ConstellationWallActivity星座壁纸页面,添加自定义动画及轮播图片预览效果;

HelpActivity帮助页面,简单文本;

JokeActivity笑话大全页面,获取笑话数据显示列表,下拉刷新上拉加载;

LuckActivity本日星座运势页面,请求当日星座运势数据;

LuckMonthActivity本月星座运势页面,请求本月星座运势数据;

LuckNextWeekActivity下周星座运势页面,请求下周星座运势数据;

LuckTomoActivity明日星座运势页面;

LuckWeekActivity本周星座运势页面;

LuckYearActivity本年星座运势页面;

MainActivity主界面,标题、fragment容器及tab选项;

StartActivity启动页面,随机图片;

TalkActivity星座物语页面,简单文本;

TestActivity性格测试页面,根据选项返回测试结果;


目前发现这么写,会占用大量的篇幅,下面一段时间会对项目进行拆分,形成链接,方便读者查看。



1 0
原创粉丝点击