在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → android高仿美食天下源码

android高仿美食天下源码

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:1.36M
  • 下载次数:70
  • 浏览次数:2285
  • 发布时间:2015-06-09
  • 实例类别:Android平台开发
  • 发 布 人:51aspx
  • 文件格式:.zip
  • 所需积分:1
 相关标签: Android java

实例介绍

【实例简介】

【实例截图】

【核心代码】

package wyf.ytl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import android.app.ProgressDialog;
import android.app.TabActivity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TabHost.OnTabChangeListener;


public class MainActivity extends TabActivity implements OnClickListener,OnItemClickListener{
	static Bitmap bitmap;//气球图片
	
	byte[] image = null;
	private TabHost myTabhost;//声明TabHost的引用
	ImageButton searchButton = null;//搜索按钮
	ImageButton updateButton = null;//上传按钮
	ImageView msImage;
	EditText searchEditText;//搜索关键字
	ClientNetThread clientNetThread = null;//网络处理线程
	ListView lv;
	ArrayList mstxInfos = null;//美食信息
	ArrayList mstxImages = null;//美食图片
	List mstxSorts = null;//美食种类
	int uid ;//用户ID
	
	EditText infoPrice1 = null;
	EditText infoPrice2 = null;
	
	Spinner msSort = null;//美食搜索种类
	
	//上传界面各个控件
	EditText msName = null;//美食名称
	Spinner  msSort2 = null;//美食种类
	EditText msPrice = null;//美食价格
	EditText msDis = null;//美食描述
	EditText msLocation = null;//美食经纬度控件
	EditText mshotelName = null;//店铺名称

	ProgressDialog myDialog = null;//进度框

	double lat;
	double lon;
	
	String titleStr = "";//跑马灯字符串
	int place = 1;
	public Handler myHandler = new Handler(){
		@Override
		public void handleMessage(Message msg) {//重写的方法用于接收Handler消息
			super.handleMessage(msg);
			if(msg.what == 1 || msg.what == 2 ||msg.what == 3){//得到美食搜索结果
				Bundle data = msg.getData();
				mstxInfos = (ArrayList)data.get("mstxInfo");
				mstxImages = (ArrayList)data.get("mstxImages");
		        //为ListView准备内容适配器
				MyBaseAdapter mba = new MyBaseAdapter(mstxInfos,mstxImages);
			    lv.setAdapter(mba);//为ListView设置内容适配器	
			    mba.notifyDataSetChanged();
			}
			else if(msg.what == 4){//跑马灯向外出来时
				MainActivity.this.setTitle(titleStr.substring(0, place));
			}
			else if(msg.what == 5){//跑马灯向里进去时
				MainActivity.this.setTitle(titleStr.substring(place, titleStr.length()));
			}
			else if(msg.what == 6){//清空美食上传界面
				msName.setText("");
				msDis.setText("");
				mshotelName.setText("");
				msLocation.setText("点击我获取经纬度");
				msPrice.setText("");
				image = null;
				msImage.setImageResource(R.drawable.click_to_photo);				
			}
			else if(msg.what == 7){//美食种类
				Bundle data = msg.getData();
				mstxSorts = (ArrayList)data.get("mstxSorts");
				BaseAdapter ba = new BaseAdapter(){						//为Spinner准备内容适配器
					@Override
					public int getCount() {
						return mstxSorts.size();
					}
					@Override
					public Object getItem(int arg0) {//重写的getItem方法				
						return null; 
					}
					@Override
					public long getItemId(int arg0) {//重写的getItemId方法
						return 0; 
					}
					@Override
					public View getView(int arg0, View arg1, ViewGroup arg2) {
						//初始化LinearLayout
						LinearLayout ll=new LinearLayout(MainActivity.this);
						ll.setOrientation(LinearLayout.HORIZONTAL);	//设置朝向	
						String[] str = (String[])mstxSorts.get(arg0);	
						//初始化TextView
						TextView tv=new TextView(MainActivity.this);						
						tv.setText(str[1]);//设置内容
						tv.setTextColor(R.color.textword2);
						tv.setTextSize(20);
						ll.addView(tv);	//添加到LinearLayout中						
						return ll;//将LinearLayout返回
					}
				};
				msSort2.setAdapter(ba);
		        ba.notifyDataSetChanged();
			}
			else if(msg.what == 8){//搜索界面的美食种类
				Bundle data = msg.getData();
				mstxSorts = (ArrayList)data.get("mstxSorts");
				BaseAdapter ba = new BaseAdapter(){						//为Spinner准备内容适配器
					@Override
					public int getCount() {
						return mstxSorts.size() 1;
					}
					@Override
					public Object getItem(int arg0) {//重写的getItem方法				
						return null; 
					}
					@Override
					public long getItemId(int arg0) {//重写的getItemId方法
						return 0; 
					}
					@Override
					public View getView(int arg0, View arg1, ViewGroup arg2) {
						String[] str;
						if(arg0 == 0){
							str = new String[]{"-1","所有种类"};
						}
						else {
							str = (String[])mstxSorts.get(arg0-1);
						}
						//初始化LinearLayout
						LinearLayout ll=new LinearLayout(MainActivity.this);
						ll.setOrientation(LinearLayout.HORIZONTAL);	//设置朝向	
							
						//初始化TextView
						TextView tv=new TextView(MainActivity.this);						
						tv.setText(str[1]);//设置内容
						tv.setTextColor(R.color.textword2);
						tv.setTextSize(20);
						ll.addView(tv);	//添加到LinearLayout中						
						return ll;//将LinearLayout返回
					}
				};
				msSort.setAdapter(ba);
		        ba.notifyDataSetChanged();				
			}
		}
	};

	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        //初始化气球图片
        bitmap= BitmapFactory.decodeResource(this.getResources(), R.drawable.ballon);
        
		//全屏 
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
		              WindowManager.LayoutParams.FLAG_FULLSCREEN);
		clientNetThread = new ClientNetThread(this);//初始化网络处理线程
		clientNetThread.start();//启动线程
		
		Intent intent = this.getIntent();//创建一个Intent
		Bundle bundle = intent.getExtras();//得到存放数据的Bundle
		String u_name = bundle.getString("u_name");//得到Bundle中的u_name数据
		uid = Integer.parseInt(bundle.getString("uid"));//得到用户编号
		titleStr = u_name ", 美食网欢迎您!您的ID号为" uid;
		new Thread(){//该线程用于标题栏跑马灯的实现
			public void run(){
				boolean control = true;
				while(true){
					if(control){//出来时
						myHandler.sendEmptyMessage(4);
						try{
							Thread.sleep(300);//睡觉300毫秒
						}
						catch(Exception e){//捕获异常 
							e.printStackTrace();//打印异常
						}
						if(place >= titleStr.length()){
							place = 1;
							control = false;
						}
						else {
							place  ;
						}
					}
					else{//进去
						myHandler.sendEmptyMessage(5);//发送Handler消息
						try{
							Thread.sleep(200);//睡觉300毫秒
						}
						catch(Exception e){//捕获异常 
							e.printStackTrace();//打印异常
						}
						if(place >= titleStr.length()){
							place = 1;
							control = true;
						}
						else {
							place  ;//将place加一
						}
					}
				}
			}
		}.start();
		myTabhost=this.getTabHost();//从TabActivity上面获取放置Tab的TabHost
		LayoutInflater.from(this).inflate(R.layout.index, myTabhost.getTabContentView(), true);
		
		myTabhost.addTab(//添加一个选项
			myTabhost.newTabSpec("收藏")	//创建一个TabSpec
				.setIndicator("收藏", getResources().getDrawable(R.drawable.png1))
				.setContent(R.id.favourite)//设置此选项的布局文件
		);
		myTabhost.addTab(//添加一个选项
			myTabhost.newTabSpec("搜索")	//创建一个TabSpec
				.setIndicator("搜索", getResources().getDrawable(R.drawable.png2))
				.setContent(R.id.search)//设置此选项的布局文件
		);
		myTabhost.addTab(//添加一个选项
			myTabhost.newTabSpec("推荐")	//创建一个TabSpec
				.setIndicator("推荐", getResources().getDrawable(R.drawable.png3))
				.setContent(R.id.recommend)//设置此选项的布局文件
		); 
		myTabhost.addTab(//添加一个选项 
			myTabhost.newTabSpec("上传")	//创建一个TabSpec
				.setIndicator("上传", getResources().getDrawable(R.drawable.png4))
				.setContent(R.id.update)//设置此选项的布局文件
		);
		
		myTabhost.setOnTabChangedListener(new OnTabChangeListener(){//为Tab添加监听
			@Override
			public void onTabChanged(String tabId) {//事件处理方法
				if(tabId.equals("收藏")){//收藏界面
					System.out.println("favourite");
			        //初始化ListView
			        lv=(ListView)findViewById(R.id.searchlistView01);
			        lv.setOnItemClickListener(MainActivity.this);
					try {
						clientNetThread.dout.writeUTF("<#FAVOURITE#>" uid);//向服务器发送消息
					} catch (IOException e) {//捕获异常
						e.printStackTrace();//打印异常
					}
				}
				else if(tabId.equals("搜索")){//搜索界面
					msSort = (Spinner)findViewById(R.id.mySort);//得到美食种类控件
					new Thread(){
						public void run(){
							try {
								clientNetThread.dout.writeUTF("<#MSTXSORT#>1");//向服务器发送消息
							} catch (IOException e) {//捕获异常
								e.printStackTrace();//打印异常
							}							
						}
					}.start();
					searchButton = (ImageButton)findViewById(R.id.searchButton);//得到搜索按钮的引用
					searchEditText = (EditText)findViewById(R.id.infoValues);//得到搜索关键字文本框引用
					searchButton.setOnClickListener(MainActivity.this);//为按钮添加监听
					infoPrice1 = (EditText)findViewById(R.id.infoPrice1);
					infoPrice2 = (EditText)findViewById(R.id.infoPrice2);
				}
				else if(tabId.equals("推荐")){//推荐界面
					lv=(ListView)findViewById(R.id.searchlistView03);
					lv.setOnItemClickListener(MainActivity.this);
					new Thread(){
						public void run(){
							try {
								clientNetThread.dout.writeUTF("<#RECOMMEND#>" uid);//向服务器发送消息
							} catch (IOException e) {//捕获异常
								e.printStackTrace();//打印异常
							}							
						}
					}.start();
				}
				else if(tabId.equals("上传")){//上传界面

					updateButton = (ImageButton)findViewById(R.id.updateButton);//得到按钮的引用
					updateButton.setOnClickListener(MainActivity.this);//添加按钮监听

					msName = (EditText)findViewById(R.id.msName);//得到美食名称控件
					msSort2 = (Spinner)findViewById(R.id.mySort2);//得到美食种类控件
					msPrice = (EditText)findViewById(R.id.msPrice);//得到美食价格控件
					msDis = (EditText)findViewById(R.id.msDis);//得到美食描述控件
					msLocation = (EditText)findViewById(R.id.msLocation);//得到美食经度控件
					mshotelName = (EditText)findViewById(R.id.mshotelName);
					
					
					msLocation.setOnClickListener(MainActivity.this);
					msImage = (ImageView)findViewById(R.id.msImage);//得到图片
					msImage.setClickable(true);//设置其可以点击
					msImage.setOnClickListener(MainActivity.this);//添加监听
					new Thread(){
						public void run(){
							try {
								clientNetThread.dout.writeUTF("<#MSTXSORT#>2");//向服务器发送消息
							} catch (IOException e) {//捕获异常
								e.printStackTrace();//打印异常
							}							
						}
					}.start();
				}
			}
		});
		
		myTabhost.setCurrentTab(1);//设置当前显示的Tab
    }
	@Override
	public void onClick(View view) {//按钮监听方法
		if(view == searchButton){//搜索按钮被按下时
			String infoValues = searchEditText.getText().toString();
			if(infoValues.trim().equals("")){//搜索关键字为空时
				Toast.makeText(this, "请输入搜索关键字", Toast.LENGTH_SHORT).show();
				return;
			}
			int searchSort;
			int temp = msSort.getSelectedItemPosition();
			if(temp == 0){
				searchSort = -1;
			}
			else {
				searchSort = Integer.parseInt(((String[])mstxSorts.get(temp-1))[0]);
			}
			
			String startPrice = infoPrice1.getText().toString().trim();
			String endPrice = infoPrice2.getText().toString().trim();
		
			if(!startPrice.equals("") && !endPrice.equals("")){
				if(Integer.parseInt(startPrice) > Integer.parseInt(endPrice)){
					Toast.makeText(this, "请输入正确的价格区间", Toast.LENGTH_SHORT).show();
					return;
				}				
			}
			
			
			Intent intent = new Intent();
			Bundle data = new Bundle();
			data.putString("infoValues", infoValues);
			data.putInt("searchSort", searchSort);
			data.putString("startPrice", startPrice);
			data.putString("endPrice", endPrice);
			data.putInt("uid", uid);
			intent.putExtras(data);
			intent.setClass(MainActivity.this, SearchActivity.class);
			startActivity(intent);
		}
		else if(view == msImage){//点击图片
			myDialog = ProgressDialog.show(this, "进度", "正在加载...",true);
			new Thread(){//创建线程
				public void run(){
					Intent intent = new Intent();//创建Intent
					intent.setClass(MainActivity.this, PhotoActivity.class);
					startActivityForResult(intent, 0);	
					
					myDialog.dismiss();
				}
			}.start();			
		}
		else if(view == msLocation){//按下获取经纬度的文本框
			myDialog = ProgressDialog.show(this, "进度", "正在加载...",true);
			new Thread(){
				public void run(){
					Intent intent = new Intent();
					intent.setClass(MainActivity.this, MyMapActivity.class);
					startActivityForResult(intent, 1);		

					myDialog.dismiss();
				}
			}.start();			
		}
		else if(view == updateButton){//按下上传按钮
			String info_title = msName.getText().toString();
			String info_dis = msDis.getText().toString();
			String info_loc = msLocation.getText().toString();
			String info_price = msPrice.getText().toString();
			String info_hotel = mshotelName.getText().toString();
			
			
			if(info_title.trim().equals("")){//名称为空时
				Toast.makeText(MainActivity.this, "请输入美食名称", Toast.LENGTH_LONG).show();
				return;					
			}
			else if(info_dis.trim().equals("")){//描述为空时
				Toast.makeText(MainActivity.this, "请输入美食描述", Toast.LENGTH_LONG).show();
				return;	
			}
			else if(info_price.trim().equals("")){//价格为空时
				Toast.makeText(MainActivity.this, "请输入美食价格", Toast.LENGTH_LONG).show();
				return;	
			}	
			else if(info_hotel.trim().equals("")){//店铺位置为空时
				Toast.makeText(MainActivity.this, "请输入饭店位置", Toast.LENGTH_LONG).show();
				return;			
			}
			else if(info_loc.trim().equals("")){//经度为空时
				Toast.makeText(MainActivity.this, "请通过位置按钮获得店铺所在的位置", Toast.LENGTH_LONG).show();
				return;	
			}
			else if(image == null){//美食图片不存在时
				Toast.makeText(MainActivity.this, "请通过拍照按钮拍摄美食图片", Toast.LENGTH_LONG).show();
				return;
			}
			new Thread(){
				public void run(){
					Looper.prepare();//一定要加
					String[] tempStr = (String[])mstxSorts.get(msSort2.getSelectedItemPosition());
					try {
						myDialog = ProgressDialog.show(MainActivity.this, "进度", "正在加载...",true);
				
						clientNetThread.dout.writeUTF("<#INSERTMSTXINFO#>" 
								msName.getText().toString() "|" msDis.getText().toString() "|"
								 lon "|" lat "|" uid "|" tempStr[0] "|" 
								msPrice.getText().toString() "|" mshotelName.getText().toString());

						int size = image.length;//图片数组的长度
						clientNetThread.dout.writeInt(size);//向服务器发送数组的长度
						clientNetThread.dout.write(image);//向服务器发送图片字节数组
						clientNetThread.dout.flush();//清空缓冲区,保证之前的数据发送出去

						myHandler.sendEmptyMessage(6);
					}
					catch (IOException e) {//捕获异常
						e.printStackTrace();//打印异常信息
					}
					finally{
						if(myDialog != null){//当myDialog不为空时
							myDialog.dismiss();
						}
					}
				}
			}.start();
		}
	}
	@Override
	protected void onDestroy() {//Activity被摧毁时被调用
		super.onDestroy();
		try {
			clientNetThread.dout.writeUTF("<#ClientDown#>");//通知服务器客户端下线
			clientNetThread.flag = false;
		} catch (IOException e) {//捕获异常
			e.printStackTrace();//打印异常信息
		}
	}
	public class MyBaseAdapter extends BaseAdapter{
		ArrayList mstxInfos = null;
		ArrayList mstxImages = null;
        public MyBaseAdapter(ArrayList mstxInfos, ArrayList mstxImages) {//构造器
            super();   
            this.mstxInfos = mstxInfos;   
            this.mstxImages = mstxImages;   
        } 
		@Override
		public int getCount() {//总共多少个选项
			return mstxInfos.size();
		}
		@Override
		public Object getItem(int arg0) {return null;}
		@Override
		public long getItemId(int arg0) {return 0;}
		@Override
		public View getView(int arg0, View arg1, ViewGroup arg2) {//动态生成每个下拉项对应的View
			//初始化LinearLayout
			LinearLayout linearLayout1 = new LinearLayout(MainActivity.this);
			linearLayout1.setOrientation(LinearLayout.HORIZONTAL);//设置朝向	
			linearLayout1.setPadding(5,5,5,5);//设置四周留白

			//初始化ImageView
			ImageView  ii=new ImageView(MainActivity.this);
			byte[] bs = (byte[])mstxImages.get(arg0);
			Bitmap b = BitmapFactory.decodeByteArray(bs,0,bs.length);
			ii.setImageBitmap(b);

			ii.setScaleType(ImageView.ScaleType.FIT_XY);//设置图片显示方式
			ii.setLayoutParams(new Gallery.LayoutParams(130,90));
			linearLayout1.addView(ii);//添加到LinearLayout中

			LinearLayout linearLayout2 = new LinearLayout(MainActivity.this);
			linearLayout2.setOrientation(LinearLayout.VERTICAL);//设置朝向	
			linearLayout2.setPadding(5,1,5,1);//设置四周留白
			linearLayout2.setGravity(Gravity.TOP);//设置对其方式
			
			//初始化TextView,美食名称
			TextView title=new TextView(MainActivity.this);
			String[] mstxStrs = (String[]) mstxInfos.get(arg0);
			title.setText(mstxStrs[0]);//设置文字
			title.setTextSize(18);//设置字体大小
			title.setTextColor(Color.RED);
			title.setPadding(5,1,5,1);//设置四周留白
			title.setMaxLines(1);//设置行数
			title.setGravity(Gravity.LEFT);//对齐方式
		    linearLayout2.addView(title);//添加到LinearLayout中
		    
			//初始化TextView
			TextView date = new TextView(MainActivity.this);
			date.setText(mstxStrs[4]);
			date.setTextSize(10);//设置字体大小
			date.setTextColor(Color.GRAY);//文字的颜色
			date.setPadding(5,1,5,1);//设置四周留白
			title.setMaxLines(1);//设置行数
			date.setGravity(Gravity.LEFT);//对齐方式
		    linearLayout2.addView(date);//添加到LinearLayout中
		    
			//初始化TextView
			TextView info_dis = new TextView(MainActivity.this);
			info_dis.setText(mstxStrs[1]);
			info_dis.setTextSize(13);//设置字体大小
			info_dis.setTextColor(Color.BLACK);//文字的颜色
			info_dis.setPadding(5,1,5,1);//设置四周留白
			info_dis.setGravity(Gravity.LEFT);//对齐方式
			info_dis.setMaxLines(3);//最大行数
		    linearLayout2.addView(info_dis);//添加到LinearLayout中
		    linearLayout1.addView(linearLayout2);
			return linearLayout1;
		}	
	}
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if(requestCode == 0){//拍照的结果
			if(resultCode == RESULT_OK){
				Bundle bundle = data.getExtras();//得到数据
				image = bundle.getByteArray("image");//得到字节数组
				Bitmap bm = BitmapFactory.decodeByteArray(image, 0, image.length);
				msImage.setImageBitmap(bm);//设置显示图片
			}
		}
		else if(requestCode == 1){//获取经纬度的结果
			if(resultCode == RESULT_OK){
				Bundle bundle = data.getExtras();//得到数据
				lat = bundle.getDouble("lat");//得到经纬度
				lon = bundle.getDouble("lon");
				msLocation.setText("经度为:" lon "\n纬度为:" lat);//设置经纬度到文本框中
			}		
		}
	}
	@Override
	public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {//ListView监听方法
		String[] mstxStrs = (String[]) mstxInfos.get(arg2);
		int action = myTabhost.getCurrentTab();//当前是哪个Tab
		Intent intent = new Intent();//创建Intent
		intent.setClass(MainActivity.this, InfoActivity.class);
		Bundle bundle = new Bundle();//创建数据Bundle
		bundle.putInt("action", action);
		bundle.putInt("uid", uid);
		bundle.putStringArray("mstxInfo", mstxStrs);
		intent.putExtras(bundle);//存放数据
		startActivity(intent);//启动Activity
	}
}

标签: Android java

实例下载地址

android高仿美食天下源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 曾郁黎 发表于: 2017-12-05 15:27 19
可以打开吗??

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有2条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警