package com.konka.music.ui.fragment; import java.util.ArrayList; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.provider.MediaStore.Audio.AudioColumns; import android.provider.MediaStore.MediaColumns; import android.support.v4.app.Fragment; import android.support.v4.content.Loader; import android.text.Editable; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AutoCompleteTextView; import android.widget.ImageButton; import android.widget.TextView; import android.widget.Toast; import com.konka.music.R; import com.konka.music.loader.MusicRetrieveLoader; import com.konka.music.pojo.MusicInfo; import com.konka.music.ui.activity.AlarmActivity; import com.konka.music.ui.activity.MainActivity; import com.konka.music.ui.activity.SettingActivityFragment; import com.konka.music.ui.fragment.abstractfragment.KBaseFragment; import com.konka.music.ui.fragment.downloadmanager.DownloadParentFragment; import com.konka.music.ui.fragment.local.FavouriteFragment; import com.konka.music.ui.fragment.local.HistoryFragment; import com.konka.music.ui.fragment.local.LocalFragment; import com.konka.music.ui.fragment.mysonglist.MyClassifyList_Fragment; import com.konka.music.ui.fragment.singer.SingerTabFragment; import com.konka.music.util.ArrayUtils; import com.konka.music.util.Assist; import com.konka.music.util.CreateViewUtil; import com.konka.music.util.FragmentCache; import com.konka.music.util.FragmentManagerUtil; import com.konka.music.util.ObjectUtil; import com.konka.music.util.ViewTag; import com.konka.music.util.ViewUtility; import com.konka.music.util.WindowUtil; public class MainFragment extends KBaseFragment<ArrayList<MusicInfo>> implements OnClickListener { private View rootView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getActivity().getActionBar().setTitle(R.string.app_name); rootView = CreateViewUtil.onCreateView(inflater, container, savedInstanceState, rootView, R.layout.main_layout); rootView.setOnClickListener(this); return rootView; } class MainFragmentViewHolder { View searchMusic;// 搜索音乐 View lacolMusic;// 本地音乐 View favourite;// 我喜欢的 View myClassify;// 我的分类 View downloadManager;// 下载管理 View historyplay;// 历史记录 View musicLibrary;// 乐库 View singer;// 歌手 View hotMusic;// 热门 View topList;// 榜单 View setting;// 设置 View timing;// 定时 View palylocalmusic_imageview; TextView localmusic_count_textView; ImageButton navigation_search_button; AutoCompleteTextView navigation_search_edit; } private MainFragmentViewHolder mainFragmentViewHolderviewHolder; @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initMainViewHolder(view); getLoaderManager().initLoader(Assist.MAIN_LOCALMUSIC_LOADER_ID, getArguments(), this); } private void initMainViewHolder(View view) { mainFragmentViewHolderviewHolder = new MainFragmentViewHolder(); mainFragmentViewHolderviewHolder.searchMusic = ViewUtility.findViewById(view, R.id.navigation_search_button, this); mainFragmentViewHolderviewHolder.lacolMusic = ViewUtility.findViewById(view, R.id.localmusic_LinearLayout, this); mainFragmentViewHolderviewHolder.favourite = ViewUtility.findViewById(view, R.id.navigation_localentry_fav, this); mainFragmentViewHolderviewHolder.myClassify = ViewUtility.findViewById(view, R.id.navigation_localentry_playlist, this); mainFragmentViewHolderviewHolder.downloadManager = ViewUtility.findViewById(view, R.id.navigation_localentry_download, this); mainFragmentViewHolderviewHolder.historyplay = ViewUtility.findViewById(view, R.id.navigation_localentry_history, this); mainFragmentViewHolderviewHolder.musicLibrary = ViewUtility.findViewById(view, R.id.navigation_netmusic_finder, this); mainFragmentViewHolderviewHolder.singer = ViewUtility.findViewById(view, R.id.navigation_netmusic_singer, this); mainFragmentViewHolderviewHolder.hotMusic = ViewUtility.findViewById(view, R.id.navigation_hotMusic, this); mainFragmentViewHolderviewHolder.topList = ViewUtility.findViewById(view, R.id.navigation_topList, this); mainFragmentViewHolderviewHolder.setting = ViewUtility.findViewById(view, R.id.navigation_setting, this); mainFragmentViewHolderviewHolder.timing = ViewUtility.findViewById(view, R.id.navigation_timing, this); mainFragmentViewHolderviewHolder.localmusic_count_textView = ViewUtility.findViewById(view, R.id.localmusic_count_textView); mainFragmentViewHolderviewHolder.navigation_search_button = ViewUtility.findViewById(view, R.id.navigation_search_button, this); mainFragmentViewHolderviewHolder.navigation_search_edit = ViewUtility.findViewById(view, R.id.navigation_search_edit, this); mainFragmentViewHolderviewHolder.navigation_search_edit.setClickable(true); mainFragmentViewHolderviewHolder.palylocalmusic_imageview = ViewUtility.findViewById(view, R.id.palylocalmusic_imageview, this); mainFragmentViewHolderviewHolder.palylocalmusic_imageview.setTag(ViewTag.PLAYALL); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.localmusic_LinearLayout: swichFragment(getFragment(getActivity(), LocalFragment.class, null)); break; case R.id.navigation_netmusic_finder: swichFragment(new MusicLibraryFragment()); break; case R.id.navigation_localentry_history: swichFragment(getFragment(getActivity(), HistoryFragment.class, null)); break; case R.id.navigation_netmusic_singer: swichFragment(getFragment(getActivity(), SingerTabFragment.class, null)); break; case R.id.navigation_setting: getActivity().startActivity(new Intent(getActivity(), SettingActivityFragment.class)); break; case R.id.navigation_timing: // 定时退出 getActivity().startActivity(new Intent(getActivity(), AlarmActivity.class)); break; case R.id.navigation_localentry_fav: swichFragment(getFragment(getActivity(), FavouriteFragment.class, null)); break; case R.id.navigation_hotMusic: swichFragment(BigLabelFragment.newInstance(1)); break; case R.id.navigation_topList: swichFragment(BigLabelFragment.newInstance(9)); break; case R.id.navigation_localentry_download: swichFragment(getFragment(getActivity(), DownloadParentFragment.class, null)); break; case R.id.navigation_search_button:// 搜索 Editable editable = mainFragmentViewHolderviewHolder.navigation_search_edit.getText(); String searchKey = editable.toString(); if (!TextUtils.isEmpty(searchKey)) { swichFragment(SearchFragment.newInstance(searchKey)); } else { // ToastUtil.showToast(getActivity(), getString(R.string.search_edit_toast)); Toast.makeText(getActivity(), R.string.search_edit_toast, Toast.LENGTH_SHORT).show(); } break; case R.id.navigation_localentry_playlist:// swichFragment(new MyClassifyList_Fragment()); break; case R.id.palylocalmusic_imageview:// int[] location = WindowUtil.getViewInTheWindowPosition(v); if (!ArrayUtils.isEmpty(musicinfos)) { playMusicInfoArray(musicinfos); MainActivity mainActivity = (MainActivity) getActivity(); mainActivity.playAnimotion_playAllMusic(location[0] + (v.getWidth() >> 1), location[1] - v.getHeight(), musicinfos); } break; } if (!(mainFragmentViewHolderviewHolder==null|| mainFragmentViewHolderviewHolder.navigation_search_edit==null)) { if (v.getId() == R.id.navigation_search_edit) { mainFragmentViewHolderviewHolder.navigation_search_edit.findFocus(); } else { mainFragmentViewHolderviewHolder.navigation_search_edit.clearFocus(); } } } @Override public void onLowMemory() { super.onLowMemory(); } public void swichFragment(Fragment fragment) { FragmentManagerUtil.swichFragment(getFragmentManager(), fragment); } @Override public Loader<ArrayList<MusicInfo>> onCreateLoader(int arg0, Bundle arg1) { StringBuffer select = new StringBuffer(" 1=1 "); select.append(" and " + MediaColumns.SIZE + " > " + 1024 * 8); select.append(" and " + MediaColumns.DATA + " not like " + "'%.amr'"); MusicRetrieveLoader loader = new MusicRetrieveLoader(getActivity(), select.toString(), null, AudioColumns.TITLE_KEY); return loader; } @Override public void onDestroyView() { super.onDestroyView(); getLoaderManager().destroyLoader(Assist.MAIN_LOCALMUSIC_LOADER_ID); rootView = null; mainFragmentViewHolderviewHolder = null; musicinfos = null; } private Fragment getFragment(Context mContext, Class<? extends Fragment> fclass, Bundle bundle) { Fragment fragment = FragmentCache.getFragment(fclass.getName()); if (fragment == null) { fragment = Fragment.instantiate(mContext, fclass.getName(), bundle); FragmentCache.addFragment(fclass.getName(), fragment); } return fragment; } ArrayList<MusicInfo> musicinfos = null; @Override public void onLoadFinished(Loader<ArrayList<MusicInfo>> arg0, ArrayList<MusicInfo> arg1) { super.onLoadFinished(arg0, arg1); if (!ArrayUtils.isEmpty(arg1)) { musicinfos = arg1; mainFragmentViewHolderviewHolder.localmusic_count_textView.setText(getString(R.string.main_localmusic_count, arg1.size())); }else{ mainFragmentViewHolderviewHolder.localmusic_count_textView.setText(getString(R.string.main_localmusic_count, 0)); } } }