package com.keju.maomao.activity; import java.util.ArrayList; import java.util.List; import java.util.Timer; import java.util.TimerTask; import org.json.JSONException; import org.json.JSONObject; import android.app.Notification; import android.app.NotificationManager; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Display; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.keju.maomao.AsyncImageLoader; import com.keju.maomao.AsyncImageLoader.ImageCallback; import com.keju.maomao.CommonApplication; import com.keju.maomao.Constants; import com.keju.maomao.R; import com.keju.maomao.SystemException; import com.keju.maomao.activity.bar.BarListActivity; import com.keju.maomao.activity.base.BaseSlidingFragmentActivity; import com.keju.maomao.activity.my.CollectionOfBarListActivity; import com.keju.maomao.activity.news.NewsActivity; import com.keju.maomao.activity.personalcenter.PersonalCenter; import com.keju.maomao.activity.setting.SettingActivity; import com.keju.maomao.bean.BarTypeBean; import com.keju.maomao.db.DataBaseAdapter; import com.keju.maomao.helper.BusinessHelper; import com.keju.maomao.util.AndroidUtil; import com.keju.maomao.util.ImageUtil; import com.keju.maomao.util.NetUtil; import com.keju.maomao.util.SharedPrefUtil; import com.keju.maomao.view.GridViewInScrollView; import com.keju.maomao.view.slidingmenu.SlidingMenu; /** * 首页 * * @author zhuoyong * @data 创建时间:2013-10-15 下午2:52:49 */ public class MainActivity extends BaseSlidingFragmentActivity implements OnClickListener { private SlidingMenu sm; // 侧边栏 private LinearLayout rlCollect;// 收藏 private LinearLayout rlInfromation;// 信息 private LinearLayout rlSetting;// 设置 private LinearLayout rlMain;// 首页 private LinearLayout viewSettingTitle; private ImageView ivSettingUserPhoto; private TextView tvsignaTure; private TextView tvNewMessagePoint; // 主页 private Button btnLeftMenu; private int screenWidth; private ImageView ivTop; private TextView tvTop; private GridViewInScrollView gvBarType; private List<BarTypeBean> barTypeList; private Adapter adapter; private ImageView ivBanner;// 广告 private CommonApplication app; private TextView tvCity;// 城市切换 private int provinceId;// 省得id private String cityName; private DataBaseAdapter dba;// 数据库 private Boolean isCityActicity = false; // 是否为城市切换界面带过来的数据 private Handler iLetterHandler; private TimerTask letterTimerTask=null; private Timer letterTimer; private final static int HANDLER_DATA = 11; private boolean isLoaded = false; private ImageView ivCity;//城市切换 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); app = (CommonApplication) getApplication(); dba = ((CommonApplication) this.getApplicationContext()).getDbAdapter(); Display display = this.getWindowManager().getDefaultDisplay(); screenWidth = display.getWidth(); initSlidingMenu(); findView(); fillData(); app.addActivity(this); } /** * 初始化SlidingMenu */ private void initSlidingMenu() { setBehindContentView(R.layout.left_menu); // customize the SlidingMenu sm = getSlidingMenu(); sm.setShadowWidthRes(R.dimen.shadow_width); sm.setBehindOffsetRes(R.dimen.slidingmenu_offset); // sm.setFadeDegree(0.35f); sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); sm.setShadowDrawable(R.drawable.slidingmenu_shadow); // sm.setShadowWidth(20); sm.setBehindScrollScale(0); } private void findView() { app.initBMapInfo(); btnLeftMenu = (Button) findViewById(R.id.btnLeftMenu);// 头部界面左边按钮控件 btnLeftMenu.setOnClickListener(this); ivTop = (ImageView) findViewById(R.id.ivTop); ivBanner = (ImageView) findViewById(R.id.ivBanner); gvBarType = (GridViewInScrollView) findViewById(R.id.gvBarType); tvTop = (TextView) findViewById(R.id.tvTop); ivSettingUserPhoto = (ImageView) findViewById(R.id.ivSettingUserPhoto); tvsignaTure = (TextView) findViewById(R.id.tvsignaTure); rlCollect = (LinearLayout) findViewById(R.id.rlCollect); rlInfromation = (LinearLayout) findViewById(R.id.rlInfromation); rlSetting = (LinearLayout) findViewById(R.id.rlSetting); rlMain = (LinearLayout) findViewById(R.id.rlMain); viewSettingTitle = (LinearLayout) findViewById(R.id.viewSettingTitle); tvNewMessagePoint = (TextView) findViewById(R.id.tv_new_message_point); tvCity = (TextView) this.findViewById(R.id.tvCity); tvCity.setOnClickListener(this); ivCity = (ImageView)this.findViewById(R.id.IvCity); ivCity.setOnClickListener(this); if (isCityActicity) { } else { if (SharedPrefUtil.getCityName(MainActivity.this) == null) { SharedPrefUtil.setCityName(MainActivity.this, app.getCity()); provinceId = dba.findProvinceId(app.getCity()); SharedPrefUtil.setProvinceId(MainActivity.this, provinceId); if (app.getCity() == null) { tvCity.setText("城市切换"); } else { tvCity.setText(app.getCity()); } } else { tvCity.setText(SharedPrefUtil.getCityName(MainActivity.this)); } } rlCollect.setOnClickListener(this); rlInfromation.setOnClickListener(this); rlSetting.setOnClickListener(this); rlMain.setOnClickListener(this); viewSettingTitle.setOnClickListener(this); } private void fillData() { initNotifyHandler(); // startNotifyTask(); barTypeList = new ArrayList<BarTypeBean>(); adapter = new Adapter(); gvBarType.setAdapter(adapter); gvBarType.setOnItemClickListener(itemListener); if (NetUtil.checkNet(this)) { new GetHomeTask().execute(); new GetNewMessage().execute(); } else { showShortToast(R.string.NoSignalException); } } OnItemClickListener itemListener = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { BarTypeBean bean = barTypeList.get(position); Bundle b = new Bundle(); b.putSerializable(Constants.EXTRA_DATA, bean); b.putInt("PROVINCEID", provinceId); openActivity(BarListActivity.class, b); } }; @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnLeftMenu: showMenu(); break; case R.id.rlCollect: if (!SharedPrefUtil.isLogin(this)) { showAlertDialog(R.string.msg, R.string.no_login, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { openActivity(LoginActivity.class); } }, null, null); return; } int uid = SharedPrefUtil.getUid(MainActivity.this); Bundle b = new Bundle(); b.putInt(Constants.EXTRA_DATA, uid); openActivity(CollectionOfBarListActivity.class, b); break; case R.id.rlInfromation: if (!SharedPrefUtil.isLogin(this)) { showAlertDialog(R.string.msg, R.string.no_login, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { openActivity(LoginActivity.class); } }, null, null); return; } openActivity(NewsActivity.class); break; case R.id.rlSetting: if (!SharedPrefUtil.isLogin(this)) { showAlertDialog(R.string.msg, R.string.no_login, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { openActivity(LoginActivity.class); } }, null, null); return; } openActivity(SettingActivity.class); break; case R.id.rlMain: openActivity(MainActivity.class); break; case R.id.viewSettingTitle: openActivity(PersonalCenter.class); break; case R.id.tvCity: Intent intent = new Intent(); intent.setClass(MainActivity.this, CityChangActivity.class); startActivityForResult(intent, Constants.INDEX); break; case R.id.IvCity: Intent intent1 = new Intent(); intent1.setClass(MainActivity.this, CityChangActivity.class); startActivityForResult(intent1, Constants.INDEX); break; default: break; } } /** * 城市切换的数据回调 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { switch (requestCode) { case Constants.INDEX: provinceId = data.getIntExtra("PROVINCEID", 0); cityName = data.getStringExtra("CITYNAME"); if (cityName == null) { tvCity.setText("城市切换"); } else { tvCity.setText(cityName); } isCityActicity = true; break; default: break; } } } /** * * 获取用户个人资料信息 * * */ private class GetUserInfor extends AsyncTask<Void, Void, JSONObject> { @Override protected JSONObject doInBackground(Void... params) { int uid = SharedPrefUtil.getUid(MainActivity.this); try { return new BusinessHelper().getUserInfor(uid); } catch (SystemException e) { return null; } } @Override protected void onPostExecute(JSONObject result) { super.onPostExecute(result); if (result != null) { try { int status = result.getInt("status"); if (status == Constants.REQUEST_SUCCESS) { JSONObject userJson = result.getJSONObject("user_info"); String signaTure = userJson.getString("signature"); if (signaTure.equals("null")) { tvsignaTure.setText("未设置"); } else { tvsignaTure.setText(signaTure); } if (userJson.has("pic_path")) { String photoUrl = BusinessHelper.PIC_BASE_URL + userJson.getString("pic_path"); ivSettingUserPhoto.setTag(photoUrl); Drawable cacheDrawble = AsyncImageLoader.getInstance().loadDrawable(photoUrl, new ImageCallback() { @Override public void imageLoaded(Drawable imageDrawable, String imageUrl) { ImageView image = (ImageView) ivSettingUserPhoto.findViewWithTag(imageUrl); Bitmap bitmap = ImageUtil.getRoundCornerBitmapWithPic(imageDrawable, 0.5f); if (image != null) { if (imageDrawable != null) { image.setImageBitmap(bitmap); } else { image.setImageResource(R.drawable.bg_show11); } } } }); if (cacheDrawble != null) { Bitmap bitmap = ImageUtil.getRoundCornerBitmapWithPic(cacheDrawble, 0.5f); ivSettingUserPhoto.setImageBitmap(bitmap); } else { ivSettingUserPhoto.setImageResource(R.drawable.bg_show11); } } else { ivSettingUserPhoto.setImageResource(R.drawable.bg_show11); } } else { showShortToast(result.getString("message")); } } catch (JSONException e) { showShortToast("json解析失败"); } } else { ivSettingUserPhoto.setImageResource(R.drawable.bg_show11); tvsignaTure.setText("未设置"); } } } private class GetNewMessage extends AsyncTask<Void, Void, JSONObject> { @Override protected JSONObject doInBackground(Void... params) { int uid = SharedPrefUtil.getUid(MainActivity.this); try { return new BusinessHelper().getSysLetter1(uid); } catch (SystemException e) { return null; } } @Override protected void onPostExecute(JSONObject result) { super.onPostExecute(result); if (result != null) { try { int status = result.getInt("status"); if (status == Constants.REQUEST_FAILD) { tvNewMessagePoint.setVisibility(View.GONE); } else { int systemMessageCount = result.getInt("system_count"); int privateMessageCount = result.getInt("direct_count"); int finalCount = systemMessageCount + privateMessageCount; if (finalCount == 0) { tvNewMessagePoint.setVisibility(View.GONE); } else { tvNewMessagePoint.setVisibility(View.VISIBLE); } } } catch (JSONException e) { e.printStackTrace(); } } } } /** * 播放铃声 * * */ private void PlayRing() { String ringUrl = SharedPrefUtil.getRingUrl(MainActivity.this); if (ringUrl == null) { } else { // Uri uri = Uri.parse(ringUrl); NotificationManager manager = (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new Notification(); notification.sound = Uri.parse(ringUrl); manager.notify(1, notification); } } /** * 获取首页数据 * * @author Zhoujun * */ private class GetHomeTask extends AsyncTask<Void, Void, JSONObject> { @Override protected JSONObject doInBackground(Void... params) { try { return new BusinessHelper().getHomeData(); } catch (SystemException e) { return null; } } @Override protected void onPreExecute() { super.onPreExecute(); showPd(R.string.loading); } @Override protected void onPostExecute(JSONObject result) { super.onPostExecute(result); dismissPd(); if (result != null) { try { if (Constants.REQUEST_SUCCESS == result.getInt("status")) { String bannerUrl = result.getString("advertising_picture"); if (bannerUrl == null) { return; } ivBanner.setTag(BusinessHelper.PIC_BASE_URL + bannerUrl); Drawable cacheDrawable1 = AsyncImageLoader.getInstance().loadDrawable( BusinessHelper.PIC_BASE_URL + bannerUrl, new ImageCallback() { @Override public void imageLoaded(Drawable imageDrawable, String imageUrl) { if (imageDrawable != null) { ivBanner.setImageDrawable(imageDrawable); } } }); if (cacheDrawable1 != null) { ivBanner.setImageDrawable(cacheDrawable1); } ivBanner.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // MobclickAgent.onEvent(MainActivity.this, // " banner_click", bean.getTitle() + // bean.getLink()); Bundle b = new Bundle(); b.putString(Constants.EXTRA_DATA, "http://www.tmall.com/"); b.putString("name", "百度"); openActivity(WebviewActivity.class, b); } }); List<BarTypeBean> tempList = BarTypeBean.constractList(result.getJSONArray("list")); final BarTypeBean topBean = tempList.get(0); tvTop.setText(topBean.getName()); ivTop.setTag(topBean.getUrl()); Drawable cacheDrawable = AsyncImageLoader.getInstance().loadDrawable(topBean.getUrl(), new ImageCallback() { @Override public void imageLoaded(Drawable imageDrawable, String imageUrl) { if (imageDrawable != null) { ivTop.setImageDrawable(imageDrawable); } } }); if (cacheDrawable != null) { ivTop.setImageDrawable(cacheDrawable); } ivTop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bundle b = new Bundle(); b.putSerializable(Constants.EXTRA_DATA, topBean); b.putInt("PROVINCEID", provinceId); openActivity(BarListActivity.class, b); } }); tempList.remove(0); barTypeList.addAll(tempList); adapter.notifyDataSetChanged(); } else { showShortToast(R.string.connect_server_exception); } } catch (JSONException e) { showShortToast(R.string.json_exception); } } else { showShortToast(R.string.connect_server_exception); } } } /** * 酒吧类型适配 * * @author Zhoujun * */ private class Adapter extends BaseAdapter { @Override public int getCount() { return barTypeList.size(); } @Override public Object getItem(int position) { return barTypeList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; BarTypeBean bean = barTypeList.get(position); if (convertView == null) { holder = new ViewHolder(); convertView = getLayoutInflater().inflate(R.layout.bar_type_item, null); holder.ivImage = (ImageView) convertView.findViewById(R.id.ivImage); holder.tvBarType = (TextView) convertView.findViewById(R.id.tvBarType); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.tvBarType.setText(bean.getName()); int itemWidth = (screenWidth - 30 - 10) / 2; LayoutParams params = holder.ivImage.getLayoutParams(); params.width = itemWidth; params.height = itemWidth * 2 / 3; holder.ivImage.setLayoutParams(params); holder.ivImage.setTag(bean.getUrl()); Drawable cacheDrawable = AsyncImageLoader.getInstance().loadDrawable(bean.getUrl(), new ImageCallback() { @Override public void imageLoaded(Drawable imageDrawable, String imageUrl) { ImageView image = (ImageView) gvBarType.findViewWithTag(imageUrl); if (image != null) { if (imageDrawable != null) { image.setImageDrawable(imageDrawable); } } } }); if (cacheDrawable != null) { holder.ivImage.setImageDrawable(cacheDrawable); } return convertView; } class ViewHolder { private ImageView ivImage; private TextView tvBarType; } } private void initNotifyHandler() { iLetterHandler = new Handler() { @Override public void handleMessage(Message msg) { int what = msg.what; switch (what) { case HANDLER_DATA: JSONObject beans = (JSONObject) msg.obj; break; default: break; } super.handleMessage(msg); } }; } private void startNotifyTask() { if (letterTimerTask == null) { letterTimerTask = new TimerTask() { @Override public void run() { try { if (NetUtil.checkNet(MainActivity.this)) { if (!isLoaded) { isLoaded = true; int uid = SharedPrefUtil.getUid(MainActivity.this); BusinessHelper businessHelper = new BusinessHelper(); JSONObject result = businessHelper.getSysLetter1(uid);; if (result != null) { if (result.getInt("status") != Constants.REQUEST_FAILD) { int systemMessageCount = result.getInt("system_count"); int privateMessageCount = result.getInt("direct_count"); int finalCount = systemMessageCount + privateMessageCount; if (finalCount == 0) { tvNewMessagePoint.setVisibility(View.GONE); } else { if (SharedPrefUtil.getNewLetter(MainActivity.this) && SharedPrefUtil.getPlayRing(MainActivity.this) && SharedPrefUtil.getVibrate(MainActivity.this)) { PlayRing(); AndroidUtil.Vibrate(MainActivity.this, 100); } else if (SharedPrefUtil.getNewLetter(MainActivity.this) && SharedPrefUtil.getPlayRing(MainActivity.this)) { PlayRing(); } else if (SharedPrefUtil.getNewLetter(MainActivity.this) && SharedPrefUtil.getVibrate(MainActivity.this)) { AndroidUtil.Vibrate(MainActivity.this, 100); } else { } tvNewMessagePoint.setVisibility(View.VISIBLE); } // Message msg = new Message(); // msg.what = HANDLER_DATA; // msg.obj = result; // iLetterHandler.sendMessage(msg); } } else { showShortToast("链接服务器失败"); } isLoaded = false; } } } catch (Exception e) { } } }; letterTimer = new Timer(); letterTimer.schedule(letterTimerTask, 0, 5 * 1000); } } private void stopNotifyTimer() { if (letterTimer != null) { letterTimer.cancel(); letterTimer = null; } if (letterTimerTask != null) { letterTimerTask = null; } } // @Override // protected void onPause() { // super.onPause(); // stopNotifyTimer(); // } @Override protected void onDestroy() { super.onDestroy(); stopNotifyTimer(); } @Override protected void onStop() { super.onStop(); startNotifyTask(); } /** * 连续按两次返回键就退出 */ private int keyBackClickCount = 0; @Override protected void onResume() { super.onRestart(); if (SharedPrefUtil.isLogin(this)) { if (NetUtil.checkNet(this)) { new GetUserInfor().execute(); new GetNewMessage().execute(); } else { showShortToast(R.string.NoSignalException); } } keyBackClickCount = 0; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { switch (keyBackClickCount++) { case 0: showShortToast("请再按次返回键退出"); Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { keyBackClickCount = 0; } }, 3000); break; case 1: defaultFinish(); AndroidUtil.exitApp(MainActivity.this); break; default: break; } return true; } return super.onKeyDown(keyCode, event); } }