package com.example.dremone; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.annotation.SuppressLint; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.FrameLayout; import android.widget.GridView; import android.widget.ImageView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; import com.example.common.FileDownload; import com.example.common.NetWorks; import com.example.database.CurriculumDb; import com.example.domain.Curriculum; import com.example.download.DownloadService; import com.example.download.DownloadServiceImpl; import com.example.dremone.fragment.FragmentPagerAdapterItem; import com.example.http.CurriculumHttp; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; import com.loopj.android.image.SmartImageView; import com.viewpagerindicator.LinePageIndicator; import com.viewpagerindicator.PageIndicator; public class MainActivity extends FragmentActivity { private SlidingMenu slidingMenu; private ImageView menu_login_img;// 登录图标 private TextView menu_login_text;// 登录文本 private FrameLayout menu_download_container;// 下载中心 private ViewPager title_pager;// private PageIndicator title_indicator;// pager对象 private GridView home_gridview;// 二级菜单 private String id;// 用户Id private ListView lv_expand_body;// 课程信息 private CurriculumDb curriculumDb = null;// 课程数据库对象 public static DownloadServiceImpl downloadServiceImpl;// 需要初始化的下载服务接口 private DownConnection connDownload = new DownConnection();// 下载初始化服务链接对象 private Intent serviceIntent; @SuppressLint("HandlerLeak") private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 0: // 有网更新课程信息 @SuppressWarnings("unchecked") final List<Curriculum> lists = (List<Curriculum>) msg.obj; lv_expand_body.setAdapter(new MyExpandBodyAdapter(lists, MainActivity.this)); // 添加原始数据检查是否需要更新 new Thread() { public void run() { curriculumDb.AddDataOriginal(lists); }; }.start(); break; case 1: // 无网更新本地课程信息 @SuppressWarnings("unchecked") final List<Curriculum> lists1 = (List<Curriculum>) msg.obj; lv_expand_body.setAdapter(new MyExpandBodyAdapter(lists1, MainActivity.this)); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); curriculumDb = new CurriculumDb(MainActivity.this); init(); } /** * 初始化 */ private void init() { // -----加载启动图 new Thread() { public void run() { Intent intent = new Intent(MainActivity.this, StartActivity.class); MainActivity.this.startActivityForResult(intent, 0); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } finishActivity(0); }; }.start(); // -----结束加载启动图 // ------开始初始化下载服务 this.serviceIntent = new Intent(this, DownloadService.class); startService(serviceIntent); bindService(serviceIntent, new DownConnection(), BIND_AUTO_CREATE); // -------结束初始化下载服务 // ------加载slidingMenu slidingMenu = new SlidingMenu(this); slidingMenu.setMode(SlidingMenu.LEFT); // 设置距离屏幕右端距离 slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset); // 设置点击模式 slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); // 设置依附的activity slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); // 设置要显示的菜单布局 slidingMenu.setMenu(R.layout.slidingmenu); // ------结束加载slidingMenu menu_login_img = (ImageView) slidingMenu .findViewById(R.id.menu_login_img); menu_login_text = (TextView) slidingMenu .findViewById(R.id.menu_login_text); menu_download_container = (FrameLayout) findViewById(R.id.menu_download_container); menu_login_img.setOnClickListener(new MyLoginOnClickListener()); menu_login_text.setOnClickListener(new MyLoginOnClickListener()); menu_download_container.setOnClickListener(new MenuItemClicks()); // ------轮播图1 // 设置 基础布局 title_pager = (ViewPager) findViewById(R.id.title_pager); title_pager.setAdapter(new MyFragmentPager1Adapter( getSupportFragmentManager())); title_indicator = (LinePageIndicator) findViewById(R.id.title_indicator); title_indicator.setViewPager(title_pager); // -------设置轮播图2 home_gridview = (GridView) findViewById(R.id.home_gridview); ArrayList<HashMap<String, Object>> al = new ArrayList<HashMap<String, Object>>(); for (int i = 1; i <= 4; i++) { HashMap<String, Object> map = new HashMap<String, Object>(); switch (i) { case 1: map.put("icon", R.drawable.home_item_1); map.put("name", "最新课程"); break; case 2: map.put("icon", R.drawable.home_item_2); map.put("name", "实战课程"); break; case 3: map.put("icon", R.drawable.home_item_3); map.put("name", "免费课程"); break; case 4: map.put("icon", R.drawable.home_item_4); map.put("name", "全部课程"); break; } al.add(map); } SimpleAdapter sa = new SimpleAdapter(this, al, R.layout.fragment_home_gridview_item, new String[] { "icon", "name" }, new int[] { R.id.gradview_itemimage, R.id.gradview_itemtext }); home_gridview.setAdapter(sa); home_gridview.setOnItemClickListener(new ClickItemListener()); // -------课程信息 lv_expand_body = (ListView) findViewById(R.id.lv_expand_body); // 加载课程信息 isNetCurriculum(); // --------设置单一项点击事件 lv_expand_body .setOnItemClickListener(new MyDurationOnItemClickListener()); } /** * 根据网络链接情况判断是否加载在线课程推广 */ public void isNetCurriculum() { if (NetWorks.isNetworkAvailable(this)) { CurriculumHttp.CurriculumInfo(this, handler); } else { Toast.makeText(this, "亲,我们检测到当前您没有连网哦", Toast.LENGTH_SHORT).show(); new Thread() { public void run() { curriculumDb.queryDataOriginal(handler); }; }.start(); } } /** * 课程信息列表项单击时 * * @author Administrator * */ private class MyDurationOnItemClickListener implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Intent intent = new Intent(MainActivity.this, VideoDetailActivity.class); Curriculum curriculum = (Curriculum) arg1.getTag(); intent.putExtra("curriculumInfo", curriculum); startActivity(intent); } } /** * 菜单项点击时 * * @author Administrator * */ private class MenuItemClicks implements OnClickListener { @Override public void onClick(View v) { switch (v.getId()) { case R.id.menu_download_container: // 下载中心 Intent intent = new Intent(MainActivity.this, DownloadActivity.class); startActivity(intent); break; } } } /** * 登录关联的点击 * * @author Administrator * */ private class MyLoginOnClickListener implements OnClickListener { @Override public void onClick(View v) { if (menu_login_text.getText().equals("登录点我")) { Intent intent = new Intent(MainActivity.this, LoginActivity.class); startActivityForResult(intent, 1); } else { // 已经登录 Intent intent = new Intent(MainActivity.this, CuttingHeadActivity.class); intent.putExtra("id", id); startActivityForResult(intent, 2); } } } /** * 单击课程分类时 * * @author Administrator * */ private class ClickItemListener implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { switch (arg2) { case 0: Toast.makeText(arg1.getContext(), "最新课程", Toast.LENGTH_SHORT) .show(); break; case 1: Toast.makeText(arg1.getContext(), "实战课程", Toast.LENGTH_SHORT) .show(); break; case 2: Toast.makeText(arg1.getContext(), "免费课程", Toast.LENGTH_SHORT) .show(); break; case 3: Toast.makeText(arg1.getContext(), "全部课程", Toast.LENGTH_SHORT) .show(); break; } } } /** * 单击home按钮时 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_MENU: toogleMenu(); break; default: break; } return super.onKeyDown(keyCode, event); } /** * 切换菜单 */ public void toogleMenu() { slidingMenu.toggle(true); } /** * 回调函数 */ @Override protected void onActivityResult(int arg0, int arg1, Intent arg2) { // 用户登录 if (arg0 == 1 && arg1 == 1) { String username = arg2.getStringExtra("username"); String headname = arg2.getStringExtra("headname"); String headurl = arg2.getStringExtra("headurl"); this.id = arg2.getStringExtra("id"); // 设置昵称 menu_login_text.setText(username); // 设置头像 FileDownload.downloadImage(headurl, headname, this, menu_login_img); } // 用户修改头像 if (arg0 == 2 && arg1 == 2) { String filename = arg2.getStringExtra("path"); String filepath = getCacheDir() + "/" + filename; menu_login_img.setImageURI(Uri.parse(filepath)); } super.onActivityResult(arg0, arg1, arg2); } /** * * 滚动菜单填充布局1 * * @author Administrator * */ private class MyFragmentPager1Adapter extends FragmentPagerAdapter { private int[] ICONS = new int[] { R.drawable.poster_2, R.drawable.poster_3, R.drawable.poster_4, R.drawable.poster_1 }; @SuppressLint("UseSparseArrays") private Map<Integer, Fragment> frags = new HashMap<Integer, Fragment>(); public MyFragmentPager1Adapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Fragment fragment = null; if (frags.containsKey(position) == false) { fragment = new FragmentPagerAdapterItem(); Bundle args = new Bundle(); args.putInt("img_uri", ICONS[position]); fragment.setArguments(args); } else { fragment = frags.get(position); } return fragment; } @Override public int getCount() { return ICONS.length; } } /** * 课程信息填充 * * @author Administrator * */ private class MyExpandBodyAdapter extends BaseAdapter { private List<Curriculum> curriculums; private Context context; private TextView list_title;// 标题 private SmartImageView list_photo;// 图片 private TextView item_hour;// 课时数 private ImageView item_indicator;// 标示免费还是会员 private TextView list_des;// 课程介绍 public MyExpandBodyAdapter(List<Curriculum> curriculums, Context context) { this.curriculums = curriculums; this.context = context; } @Override public int getCount() { return curriculums.size(); } @Override public Object getItem(int position) { return curriculums.get(position); } @Override public long getItemId(int position) { return curriculums.get(position).getId(); } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; Curriculum curriculum; if (view == null) { view = View.inflate(context, R.layout.fragment_view_home_listitem, null); curriculum = curriculums.get(position); view.setTag(curriculum); } else { curriculum = (Curriculum) convertView.getTag(); } list_title = (TextView) view.findViewById(R.id.list_title);// 标题 list_photo = (SmartImageView) view.findViewById(R.id.list_photo);// 照片 item_hour = (TextView) view.findViewById(R.id.item_hour);// 课时数 item_indicator = (ImageView) view.findViewById(R.id.item_indicator);// 是否是会员的标识 list_des = (TextView) view.findViewById(R.id.list_des);// 介绍 list_title.setText(curriculum.getTitle()); list_photo.setImageUrl( getResources().getString(R.string.servicename) + "fileImage/curriculumImage/" + curriculum.getUrl(), R.drawable.ic_image_default_1, R.drawable.ic_none_cat_1); item_hour.setText(curriculum.getDurationCount() + "课时"); // ----0为普通用户,1为会员 if (curriculum.getUseFlag() == 0) { item_indicator.setBackgroundResource(R.drawable.bg_home_free); } else { item_indicator.setBackgroundResource(R.drawable.bg_home_member); } list_des.setText(curriculum.getBriefIntroduction()); return view; } } /** * 初始化下载链接 * * @author Administrator * */ public class DownConnection implements ServiceConnection { @Override public void onServiceConnected(ComponentName arg0, IBinder arg1) { MainActivity.downloadServiceImpl = (DownloadServiceImpl) arg1; } @Override public void onServiceDisconnected(ComponentName arg0) { } } /* * (non-Javadoc) * * @see android.support.v4.app.FragmentActivity#onDestroy() */ @Override protected void onDestroy() { try { //停止服务 stopService(serviceIntent); // 销毁 unbindService(connDownload); } catch (Exception e) { } super.onDestroy(); } }