第三期写了电话以及电话的布局跟作用,这次我们来写音乐,还是那句话Fragment基本都是一致的:
先写音乐的布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.lx_4.MusicFragment"> <!-- TODO: Update blank fragment layout --> <TextView android:id="@+id/music_rv" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout>
item布局:
<?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" > <TextView android:id="@+id/item_music_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:text="1" android:textSize="28sp" android:textStyle="bold" android:layout_marginLeft="20dp" /> <TextView android:id="@+id/item_music_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginLeft="30dp" android:layout_marginStart="30dp" android:layout_marginTop="13dp" android:layout_toEndOf="@+id/item_music_id" android:layout_toRightOf="@+id/item_music_id" android:text="算设么么" android:textSize="20sp" /> <TextView android:id="@+id/item_music_singer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/item_music_name" android:layout_alignStart="@id/item_music_name" android:layout_marginTop="20dp" android:text="邹接龙" android:textSize="14sp" /> <TextView android:id="@+id/item_music_line" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/item_music_singer" android:layout_marginLeft="10dp" android:layout_marginStart="10dp" android:layout_toEndOf="@+id/item_music_singer" android:layout_toRightOf="@+id/item_music_singer" android:text="T" android:textStyle="bold" /> <TextView android:id="@+id/item_music_album" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/item_music_line" android:layout_marginLeft="10dp" android:layout_toEndOf="@+id/item_music_line" android:layout_toRightOf="@+id/item_music_line" android:text="阿斯达所多" android:textSize="14sp" /> <TextView android:id="@+id/item_music_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_below="@+id/item_music_album" android:layout_marginEnd="25dp" android:layout_marginRight="25dp" android:text="5:30"/> <ImageView android:layout_width="match_parent" android:layout_height="2dp" android:layout_marginTop="10dp" android:layout_below="@+id/item_music_time" android:background="@color/colorAccent"/> /> </RelativeLayout>
音乐适配器:
package com.example.administrator.lx_4; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.List; /** * Created by Administrator on 2018/4/4 0004. */ public class MusicAdapter extends RecyclerView.Adapter<MusicAdapter.MusicViewHolder> { private Context context; private List<MusicBean>mDatas; public MusicAdapter(Context context,List<MusicBean>mDatas){ this.context = context; this.mDatas = mDatas; } @Override public MusicViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_music,parent,false); MusicViewHolder holder = new MusicViewHolder(view); return holder; } @Override public void onBindViewHolder(MusicViewHolder holder, int position) { MusicBean musicBean = mDatas.get(position); holder.idTv.setText(musicBean.getId()); holder.nameTv.setText(musicBean.getName()); holder.timeTv.setText(musicBean.getDuration()); holder.singerTv.setText(musicBean.getSinger()); holder.albumTv.setText(musicBean.getAlbum()); } @Override public int getItemCount() { return 0; } class MusicViewHolder extends RecyclerView.ViewHolder{ TextView idTv,nameTv,singerTv,albumTv,timeTv; public MusicViewHolder(View itemView) { super(itemView); idTv = (TextView) itemView.findViewById(R.id.item_music_id); nameTv = (TextView)itemView.findViewById(R.id.item_music_name); singerTv = (TextView)itemView.findViewById(R.id.item_music_singer); albumTv = (TextView)itemView.findViewById(R.id.item_music_album); timeTv = (TextView)itemView.findViewById(R.id.item_music_time); } } }
音乐Fragment:
package com.example.administrator.lx_4; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * A simple {@link Fragment} subclass. */ public class MusicFragment extends Fragment { RecyclerView rv; List<MusicBean>mDatas = new ArrayList<>(); private MusicAdapter adapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_music, container, false); rv = (RecyclerView)view.findViewById(R.id.music_rv); LinearLayoutManager manager = new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false); rv.setLayoutManager(manager); adapter = new MusicAdapter(getActivity(),mDatas); rv.setAdapter(adapter); loadData(); return view; } private void loadData() { ContentResolver resolver = getActivity().getContentResolver(); Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; Cursor cursor = resolver.query(uri,null,null,null,null); int id = 1; while(cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)); String singer = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)); String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)); long l = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION)); SimpleDateFormat dateFormat = new SimpleDateFormat("mm:ss"); String time = dateFormat.format(new Date(l)); String idStr = ""+id; id++; MusicBean bean = new MusicBean(idStr, name, singer, album, time); mDatas.add(bean); } adapter.notifyDataSetChanged(); } }
Net的适配器:
package com.example.administrator.lx_4; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.squareup.picasso.Picasso; import java.util.List; /** * Created by Administrator on 2018/4/6 0006. */ public class NetAdapter extends RecyclerView.Adapter<NetAdapter.NetViewHolder>{ private Context context; private List<NetBean.ArticleListBean>mDatas; public NetAdapter(Context context, List<NetBean.ArticleListBean> mDatas) { this.context = context; this.mDatas = mDatas; } @Override public NetViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_net, parent, false); NetViewHolder holder = new NetViewHolder(view); return holder; } @Override public void onBindViewHolder(NetViewHolder holder, int position) { NetBean.ArticleListBean bean = mDatas.get(position); holder.tv.setText(bean.getTitle()); // 显示图片 Picasso.with(context).load(bean.getImgUrl()).into(holder.iv); } @Override public int getItemCount() { return mDatas.size(); } class NetViewHolder extends RecyclerView.ViewHolder{ ImageView iv; TextView tv; public NetViewHolder(View itemView) { super(itemView); iv = (ImageView) itemView.findViewById(R.id.item_net_iv); tv = (TextView) itemView.findViewById(R.id.item_net_tv); } } }
Net的局部:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.lx_4.NetFragment"> <!-- TODO: Update blank fragment layout --> <TextView android:id="@+id/net_rv" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout>
Net的item:
<?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"> <ImageView android:id="@+id/item_net_iv" android:layout_width="match_parent" android:layout_height="200dp" android:src="@mipmap/ic_launcher" android:scaleType="centerCrop" android:layout_margin="5dp"/> <TextView android:id="@+id/item_net_tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="25dp" android:textSize="18sp" android:textColor="@color/colorAccent" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:text="人间是否已耳聋?20年后,再听1998华语流行神曲"/> </RelativeLayout>
Net的Fragment:
package com.example.administrator.lx_4; import android.os.AsyncTask; import android.os.Bundle; import android.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; /** * A simple {@link Fragment} subclass. */ public class NetFragment extends Fragment { RecyclerView rv; List<NetBean.ArticleListBean> mDatas = new ArrayList<>(); private NetAdapter adapter; String url = "http://www.moviebase.cn/uread/app/category/categoryList?platform=2&deviceId=A8C73E0D1ED1A2BED491C9238C8FD8A0&channelId=1003&appVersion=1.7.0"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_net, container, false); rv = (RecyclerView) view.findViewById(R.id.net_rv); LinearLayoutManager manager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); rv.setLayoutManager(manager); adapter = new NetAdapter(getActivity(),mDatas); rv.setAdapter(adapter); loadWebData(); return view; } private void loadWebData() { new AsyncTask<Void,Void,String>(){ @Override protected String doInBackground(Void... voids) { String content = HpptUtils.getStringContent(url); return content; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); if (s!=null&&!s.isEmpty()) { Gson gson = new Gson(); NetBean netBean = gson.fromJson(s, NetBean.class); List<NetBean.ArticleListBean> list = netBean.getArticleList(); mDatas.addAll(list); adapter.notifyDataSetChanged(); } } }.execute(); } }
SMS的布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.lx_4.SMSFragment"> <!-- TODO: Update blank fragment layout --> <TextView android:id="@+id/msm_rv" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout>
SMS的item:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp"> <TextView android:id="@+id/item_sms_type" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="接受的短信" /> <TextView android:id="@+id/item_sms_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="电话:18911006789" /> <TextView android:id="@+id/item_sms_body" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="今天天气好好啊红啊好好啊哈!!!" /> <TextView android:id="@+id/item_sms_time" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right" android:text="2018-01-01 18:30:23" /> <ImageView android:layout_width="match_parent" android:layout_height="2dp" android:background="@color/colorAccent"/> </LinearLayout>SMS的适配器:
package com.example.administrator.lx_4; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.List; /** * Created by Administrator on 2018/4/6 0006. */ public class SMSAdapter extends RecyclerView.Adapter<SMSAdapter.SMSViewHolder>{ private Context context; private List<SMSBean> mDatas; public SMSAdapter(Context context, List<SMSBean> mDatas) { this.context = context; this.mDatas = mDatas; } @Override public SMSViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_sms, parent, false); SMSViewHolder holder = new SMSViewHolder(view); return holder; } @Override public void onBindViewHolder(SMSViewHolder holder, int position) { SMSBean smsBean = mDatas.get(position); holder.typeTv.setText(smsBean.getType()); holder.numberTv.setText("电话:"+smsBean.getNumber()); holder.bodyTv.setText(smsBean.getBody()); holder.timeTv.setText(smsBean.getTime()); } @Override public int getItemCount() { return mDatas.size(); } class SMSViewHolder extends RecyclerView.ViewHolder{ TextView typeTv,numberTv,bodyTv,timeTv; public SMSViewHolder(View itemView) { super(itemView); typeTv = (TextView) itemView.findViewById(R.id.item_sms_type); numberTv = (TextView) itemView.findViewById(R.id.item_sms_number); bodyTv = (TextView) itemView.findViewById(R.id.item_sms_body); timeTv = (TextView) itemView.findViewById(R.id.item_sms_time); } } }
SMS的Fragment:
package com.example.administrator.lx_4; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * A simple {@link Fragment} subclass. */ public class SMSFragment extends Fragment { List<SMSBean>mDatas = new ArrayList<>(); private SMSAdapter adapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_sm, container, false); RecyclerView rv = (RecyclerView)view.findViewById(R.id.msm_rv); LinearLayoutManager manager = new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false); rv.setLayoutManager(manager); adapter = new SMSAdapter(getActivity(),mDatas); rv.setAdapter(adapter); loadData(); return view; } private void loadData() { ContentResolver resolver = getActivity().getContentResolver(); Uri uri = Uri.parse("content://sms"); Cursor cursor = resolver.query(uri,null,null,null,null); while (cursor.moveToNext()){ String type = cursor.getString(cursor.getColumnIndex("type")); String dtype = ""; switch (type){ case "1": dtype = "接受到的信息"; break; case "2": dtype = "发送的消息"; break; default: dtype = "其他的信息"; break; } String body = cursor.getString(cursor.getColumnIndex("body")); String address = cursor.getString(cursor.getColumnIndex("address")); long date = cursor.getLong(cursor.getColumnIndex("date")); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss"); String time = sdf.format(new Date(date)); SMSBean bean = new SMSBean(dtype,address,body,time); mDatas.add(bean); } adapter.notifyDataSetChanged(); } }最后写上主界面方法调用:
package com.example.administrator.lx_4; import android.app.FragmentTransaction; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.widget.Toast; import android.app.FragmentManager; public class MainActivity extends AppCompatActivity { private Toolbar toolbar; private DrawerLayout drawerLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); drawerLayout = (DrawerLayout)findViewById(R.id.activity_main); toolbar.inflateMenu(R.menu.toolbar_menu); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { drawerLayout.openDrawer(Gravity.LEFT); } }); toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()){ case R.id.search: Toast.makeText(MainActivity.this,"你点击了搜索!!",Toast.LENGTH_SHORT).show(); break; } return false; } }); FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.layout,new CallLogFragment()); transaction.commit(); } public void onClick(View view){ switch (view.getId()){ case R.id.btn_call: FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.layout,new CallLogFragment()); transaction.commit(); drawerLayout.closeDrawers(); break; case R.id.btn_sms: FragmentManager manager1 = getFragmentManager(); FragmentTransaction transaction1 = manager1.beginTransaction(); transaction1.replace(R.id.layout,new SMSFragment()); transaction1.commit(); drawerLayout.closeDrawers(); break; case R.id.btn_music: FragmentManager manager2 = getFragmentManager(); FragmentTransaction transaction2 = manager2.beginTransaction(); transaction2.replace(R.id.layout,new MusicFragment()); transaction2.commit(); drawerLayout.closeDrawers(); break; case R.id.btn_net: FragmentManager manager3 = getFragmentManager(); FragmentTransaction transaction3 = manager3.beginTransaction(); transaction3.replace(R.id.layout,new NetFragment()); transaction3.commit(); drawerLayout.closeDrawers(); break; } } }
Menu:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/search" android:icon="@mipmap/ic_launcher" android:title="搜索" app:showAsAction = "always" /> </menu>