day23 我的练习

mainActivity

package com.example.month7apractice.SelectFragment.BroadFragment;


import android.app.PendingIntent;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.example.month7apractice.R;
import com.example.month7apractice.SelectFragment.BroadFragment.BroadCast.MyReceiver;

/**
 * A simple {@link Fragment} subclass.
 */
public class MyBroadFragment extends Fragment {
    private Button but;

    public MyBroadFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View inflate = inflater.inflate(R.layout.fragment_my_broad, container, false);
        but=inflate.findViewById(R.id.myBroadCast_button);
        but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent();
                
            }
        });
        return inflate;
    }

}

引导界面

package com.example.month7apractice.GuidePager;

import android.content.SharedPreferences;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioButton;

import com.example.month7apractice.R;

import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

public class GuideActivity extends AppCompatActivity {
    private ViewPager vp;
    private List<GuideFragment> list;
    private Handler han=new Handler( );
    private RadioButton guideRadioButton2;
    private RadioButton guideRadioButton3;
    private RadioButton guideRadioButton4;
    private RadioButton guideRadioButton5;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_guide);
        vp=findViewById(R.id.guide_viewPager);
        guideRadioButton2 = (RadioButton) findViewById(R.id.guide_radioButton2);
        guideRadioButton3 = (RadioButton) findViewById(R.id.guide_radioButton3);
        guideRadioButton4 = (RadioButton) findViewById(R.id.guide_radioButton4);
        guideRadioButton5 = (RadioButton) findViewById(R.id.guide_radioButton5);


        SharedPreferences sp = getSharedPreferences("remember", MODE_PRIVATE);
        SharedPreferences.Editor edit = sp.edit();
        edit.putBoolean("pager",true);
        edit.commit();

        GuideFragment gf1 = new GuideFragment();
        Bundle bun1 = new Bundle();
        bun1.putInt("images",R.mipmap.image1);
        gf1.setArguments(bun1);

        GuideFragment gf2 = new GuideFragment();
        Bundle bun2 = new Bundle();
        bun2.putInt("images",R.mipmap.image2);
        gf2.setArguments(bun2);

        GuideFragment gf3 = new GuideFragment();
        Bundle bun3 = new Bundle();
        bun3.putInt("images",R.mipmap.image3);
        gf3.setArguments(bun3);

        GuideFragment gf4 = new GuideFragment();
        Bundle bun4 = new Bundle();
        bun4.putInt("images",R.mipmap.image4);
        gf4.setArguments(bun4);

        list=new ArrayList<>();
        list.add(gf1);
        list.add(gf2);
        list.add(gf3);
        list.add(gf4);
        //添加适配器。
        vp.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int i) {
                return list.get(i);
            }

            @Override
            public int getCount() {
                return list.size();
            }
        });
        //定时切换轮播图。  循环八次。
        final Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            int i=0;
            @Override
            public void run() {
                han.post(new Runnable() {
                    @Override
                    public void run() {
                        vp.setCurrentItem(i%4);
                        i++;
                    }
                });
                if( i==6){
                    finish();
                    timer.cancel();
                }
            }
        },0,1500);

        guideRadioButton2.setChecked(true);

        vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {

            }

            @Override
            public void onPageSelected(int i) {
                switch(i){
                    case 0:
                        guideRadioButton2.setChecked(true);
                        break;
                    case 1:
                        guideRadioButton3.setChecked(true);
                        break;
                    case 2:
                        guideRadioButton4.setChecked(true);
                        break;
                    case 3:
                        guideRadioButton5.setChecked(true);
                        break;
                }
            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });

    }
    public void click(View view) {
        switch( view.getId()){
            case R.id.guide_radioButton2:
                vp.setCurrentItem(0);
                break;
            case R.id.guide_radioButton3:
                vp.setCurrentItem(1);
                break;
            case R.id.guide_radioButton4:
                vp.setCurrentItem(2);
                break;
            case R.id.guide_radioButton5:
                vp.setCurrentItem(3);
                break;
        }
    }
}

引导界面的Fragment

package com.example.month7apractice.GuidePager;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.example.month7apractice.R;

/**
 * A simple {@link Fragment} subclass.
 */
public class GuideFragment extends Fragment {


    public GuideFragment() {
        // Required empty public constructor
    }


    private ImageView img;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View inflate = inflater.inflate(R.layout.fragment_guide, container, false);
        img = inflate.findViewById(R.id.guide_fragment_image);
        Bundle bun = getArguments();
        if( bun!=null) {
            int image = bun.getInt("images", R.mipmap.ic_launcher);
            img.setImageResource(image);
        }
        return inflate;
    }

}

下载网络数据界面

异步任务

package com.example.month7apractice.Fragment;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.example.month7apractice.R;
import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class DFAsync extends AsyncTask<String, Void, MyBean> {
    private ListView lv;
    private List<String> strings;
    private Context con;

    public DFAsync(ListView lv, Context con) {
        this.lv = lv;
        this.con = con;
    }

    @Override
    protected MyBean doInBackground(String... strings) {
        try {
            URL url = new URL(strings[0]);
            HttpURLConnection uc = (HttpURLConnection) url.openConnection();
            uc.connect();
            if( uc.getResponseCode()==200){
                InputStream is = uc.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                StringBuilder sb = new StringBuilder();
                String str=null;
                while( (str=br.readLine())!=null){
                    sb.append(str);
                }
                Log.i("123321", "doInBackground: "+sb.toString());
                Gson gson = new Gson();
                MyBean myBean = gson.fromJson(sb.toString(), MyBean.class);
                return myBean;
            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected void onPostExecute(MyBean mb) {
        super.onPostExecute(mb);
        strings=new ArrayList<>();
        List<MyBean.DataBean> data = mb.getData();
        for (int i = 0; i < data.size(); i++) {
            strings.add(data.get(i).getTitle());
        }
        ArrayAdapter aaa = new ArrayAdapter<>(con, R.layout.support_simple_spinner_dropdown_item,strings);
        lv.setAdapter(aaa);
    }
}

Fragment 展示下载的数据

package com.example.month7apractice.Fragment;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

import com.example.month7apractice.R;

/**
 * A simple {@link Fragment} subclass.
 */
public class DownLoadFragment extends Fragment {


    public DownLoadFragment() {
        // Required empty public constructor
    }

    private ListView lv;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View inflate = inflater.inflate(R.layout.fragment_down_load, container, false);
        lv=inflate.findViewById(R.id.loadFragment_list);
        new DFAsync(lv,getContext()).execute("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1");

        return inflate;
    }

}

自定义GsonBean对象封装下载的网络数据

package com.example.month7apractice.Fragment;

import java.util.List;

public class MyBean {

    /**
     * ret : 1
     * data : [{"id":"8289","title":"油焖大虾","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/9/8289.jpg","collect_num":"1669","food_str":"大虾 葱 生姜 植物油 料酒","num":1669},{"id":"2127","title":"四川回锅肉","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2127.jpg","collect_num":"1591","food_str":"猪肉 青蒜 青椒 红椒 姜片","num":1591},{"id":"30630","title":"超简单芒果布丁","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/31/30630.jpg","collect_num":"1543","food_str":"QQ糖 牛奶 芒果","num":1543},{"id":"9073","title":"家常红烧鱼","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/10/9073.jpg","collect_num":"1425","food_str":"鲜鱼 姜 葱 蒜 花椒","num":1425},{"id":"10097","title":"家常煎豆腐","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/11/10097.jpg","collect_num":"1418","food_str":"豆腐 新鲜红椒 青椒 葱花 油","num":1418},{"id":"10509","title":"水煮肉片","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/11/10509.jpg","collect_num":"1341","food_str":"瘦猪肉 生菜 豆瓣酱 干辣椒 花椒","num":1341},{"id":"46968","title":"红糖苹果银耳汤","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/47/46968.jpg","collect_num":"1252","food_str":"银耳 苹果 红糖","num":1252},{"id":"10191","title":"麻婆豆腐","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/11/10191.jpg","collect_num":"1221","food_str":"豆腐 肉末 生抽 白糖 芝麻油","num":1221},{"id":"2372","title":"皮蛋瘦肉粥","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2372.jpg","collect_num":"1151","food_str":"大米 皮蛋 猪肉 油条 香葱","num":1151},{"id":"2166","title":"蚂蚁上树","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2166.jpg","collect_num":"1144","food_str":"红薯粉 肉 姜 蒜 花椒","num":1144},{"id":"2262","title":"糖醋肉","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2262.jpg","collect_num":"1078","food_str":"猪肉 红椒 黄椒 洋葱 蛋清","num":1078},{"id":"9971","title":"鱼香豆腐","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/10/9971.jpg","collect_num":"1010","food_str":"豆腐 木耳 胡萝卜 香葱 番茄酱","num":1010},{"id":"10172","title":"干煸四季豆","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/11/10172.jpg","collect_num":"993","food_str":"四季豆 干辣椒 蒜头 酱油 糖","num":993},{"id":"2685","title":"胡萝卜肉末蒸蛋","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2685.jpg","collect_num":"926","food_str":"胡萝卜 肉 蛋 生抽 盐","num":926},{"id":"9972","title":"虎皮青椒","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/10/9972.jpg","collect_num":"892","food_str":"青辣椒 大蒜 香醋 白糖 生抽","num":892},{"id":"10437","title":"叉烧排骨","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/11/10437.jpg","collect_num":"803","food_str":"排骨 李锦记叉烧酱 植物油 清水 油菜","num":803},{"id":"2892","title":"\u201c五行\u201d彩蔬汤","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2892.jpg","collect_num":"760","food_str":"黑木耳 玉米 牛蒡 胡萝卜 西兰花","num":760},{"id":"2348","title":"麻辣肉丝面","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2348.jpg","collect_num":"758","food_str":"面条 肉丝 淀粉 酱油 辣椒","num":758},{"id":"33783","title":"美人豆浆","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/34/33783.jpg","collect_num":"757","food_str":"黄豆 红豆 绿豆 黑豆 黑米","num":757},{"id":"10044","title":"土豆炖翅根","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/11/10044.jpg","collect_num":"756","food_str":"土豆 翅根 葱 姜 料酒","num":756}]
     */

    private int ret;
    private List<DataBean> data;

    public int getRet() {
        return ret;
    }

    public void setRet(int ret) {
        this.ret = ret;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        /**
         * id : 8289
         * title : 油焖大虾
         * pic : http://www.qubaobei.com/ios/cf/uploadfile/132/9/8289.jpg
         * collect_num : 1669
         * food_str : 大虾 葱 生姜 植物油 料酒
         * num : 1669
         */

        private String id;
        private String title;
        private String pic;
        private String collect_num;
        private String food_str;
        private int num;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getPic() {
            return pic;
        }

        public void setPic(String pic) {
            this.pic = pic;
        }

        public String getCollect_num() {
            return collect_num;
        }

        public void setCollect_num(String collect_num) {
            this.collect_num = collect_num;
        }

        public String getFood_str() {
            return food_str;
        }

        public void setFood_str(String food_str) {
            this.food_str = food_str;
        }

        public int getNum() {
            return num;
        }

        public void setNum(int num) {
            this.num = num;
        }
    }
}

多选界面

package com.example.month7apractice.SelectFragment;


import android.os.Bundle;
import android.support.annotation.Nullable;
import and
roid.support.design.widget.TabLayout;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.month7apractice.R;
import com.example.month7apractice.SelectFragment.BroadFragment.MyBroadFragment;
import com.example.month7apractice.SelectFragment.DialogFragment.MyDialogkFragment;
import com.example.month7apractice.SelectFragment.LinkManFragment.LinkManFragment;
import com.example.month7apractice.SelectFragment.MusicFragment.MyMusicFragment;

import java.util.ArrayList;
import java.util.List;

/**
 * A simple {@link Fragment} subclass.
 */
public class SelectFragment extends Fragment {
    private TabLayout tabLayout;
    private ViewPager viewPager;
    private List<Fragment> list;
    private List<String> title;

    public SelectFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View inflate = inflater.inflate(R.layout.fragment_select, container, false);
        tabLayout=inflate.findViewById(R.id.select_tabLayout);
        viewPager=inflate.findViewById(R.id.select_viewPager);
        list=new ArrayList<>();
        title=new ArrayList<>();
        title.add("联系人");
        list.add(new LinkManFragment());
        title.add("Dialog");
        list.add(new MyDialogkFragment());
        title.add("Menu");
        list.add(new MyMusicFragment());
        title.add("PopupWindow");
        list.add(new MyBroadFragment());
        viewPager.setAdapter(new FragmentPagerAdapter(getChildFragmentManager()) {
            @Override
            public Fragment getItem(int i) {
                return list.get(i);
            }

            @Override
            public int getCount() {
                return list.size();
            }

            @Nullable
            @Override
            public CharSequence getPageTitle(int position) {
                return title.get(position);
            }
        });
        tabLayout.setupWithViewPager(viewPager);
        return inflate;
    }

}

自定义对话框界面

package com.example.month7apractice.SelectFragment.DialogFragment;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;

import com.example.month7apractice.R;

public class MyDialog extends Dialog {
    private Button yes,no;
    private onYesOnClickListener onYesOnClickListener;
    private onNoOnClickListener onNoOnClickListener;

    public MyDialog(Context context) {
        super(context);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        WindowManager wg = getWindow().getWindowManager();
        Display defaultDisplay = wg.getDefaultDisplay();
        WindowManager.LayoutParams attributes = getWindow().getAttributes();
        attributes.width=defaultDisplay.getWidth()*3/5;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mydialog_layout);
        yes=findViewById(R.id.myDialog_button_yes);
        no=findViewById(R.id.myDialog_button_no);
        //空白处能够取消动画
        setCanceledOnTouchOutside(true);



        yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if( onYesOnClickListener!=null){
                    onYesOnClickListener.OnYesClick();
                }
            }
        });
        no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if( onNoOnClickListener!=null){
                    onNoOnClickListener.OnNoClick();
                }
            }
        });
    }

    public void setOnNoOnClickListener(MyDialog.onNoOnClickListener onNoOnClickListener) {
        this.onNoOnClickListener = onNoOnClickListener;
    }

    public void setOnYesOnClickListener(MyDialog.onYesOnClickListener onYesOnClickListener) {
        this.onYesOnClickListener = onYesOnClickListener;
    }

    public interface onYesOnClickListener{
        public void OnYesClick( );
    }
    public interface  onNoOnClickListener{
        public void OnNoClick( );
    }
}

fragment

package com.example.month7apractice.SelectFragment.DialogFragment;


import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.example.month7apractice.R;

/**
 * A simple {@link Fragment} subclass.
 */
public class MyDialogkFragment extends Fragment {


    public MyDialogkFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View inflate = inflater.inflate(R.layout.fragment_my_dialogk, container, false);
        showDialog();
        return inflate;

    }

    @Override
    public void onPause() {
        super.onPause();
        showDialog();
    }

    @Override
    public void onStart() {
        super.onStart();
        showDialog();
    }

    private void showDialog() {
        final MyDialog myDialog = new MyDialog(getContext());
        myDialog.setOnNoOnClickListener(new MyDialog.onNoOnClickListener() {
            @Override
            public void OnNoClick() {
                Toast.makeText(getContext(), "点击了取消。", Toast.LENGTH_SHORT).show();
                myDialog.dismiss();
            }
        });
        myDialog.setOnYesOnClickListener(new MyDialog.onYesOnClickListener() {
            @Override
            public void OnYesClick() {
                Toast.makeText(getContext(), "点击了确定。", Toast.LENGTH_SHORT).show();
                myDialog.dismiss();
            }
        });
        myDialog.show();
    }
}

获取联系人

package com.example.month7apractice.SelectFragment.LinkManFragment;


import android.Manifest;
import android.content.ContentResolver;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.example.month7apractice.R;

import java.util.ArrayList;
import java.util.List;

/**
 * A simple {@link Fragment} subclass.
 */
public class LinkManFragment extends Fragment {
    private ListView listView;
    private List<String> string=new ArrayList<>();

    public LinkManFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View inflate = inflater.inflate(R.layout.fragment_link_man, container, false);
        listView = inflate.findViewById(R.id.linkMan_list);
        requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},120);
        return inflate;
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if( requestCode==120&&grantResults[0]== PackageManager.PERMISSION_GRANTED){
            Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
            ContentResolver cr = getContext().getContentResolver();
            String[] strings = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};
            Cursor query = cr.query(uri, strings, null, null, null);
            if( query!=null){
                while (query.moveToNext()) {
                    String name = query.getString(query.getColumnIndex(strings[0]));
                    String number = query.getString(query.getColumnIndex(strings[1]));
                    MyLinkMan mlm = new MyLinkMan(name,number);
                    string.add(mlm.toString());
                }
                ArrayAdapter aaa = new ArrayAdapter<>(getContext(),R.layout.support_simple_spinner_dropdown_item,string);
                listView.setAdapter(aaa);
            }
        }
    }
}
自定义联系人 类封装数据
package com.example.month7apractice.SelectFragment.LinkManFragment;

public class MyLinkMan {
    private String name;
    private String number;

    public MyLinkMan(String name, String number) {
        this.name = name;
        this.number = number;
    }

    public String getName() {
        return name;
    }

    public MyLinkMan setName(String name) {
        this.name = name;
        return this;
    }

    public String getNumber() {
        return number;
    }

    public MyLinkMan setNumber(String number) {
        this.number = number;
        return this;
    }

    @Override
    public String toString() {
        return "MyLinkMan{" +
                "name='" + name + '\'' +
                ", number='" + number + '\'' +
                '}';
    }
}

音乐界面

自定义适配器

package com.example.month7apractice.SelectFragment.MusicFragment;

import android.content.Context;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.example.month7apractice.R;

import java.util.List;

public class MusicAdapter extends BaseAdapter {
    private Context con;
    private List<MyMusic> list;
    private MyId mi;

    public MusicAdapter(Context con, List<MyMusic> list) {
        this.con = con;
        this.list = list;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if( convertView==null){
            convertView= LayoutInflater.from(con).inflate(R.layout.music_fragment_layout,null);
            mi=new MyId();
            mi.title=convertView.findViewById(R.id.music_title);
            mi.artist=convertView.findViewById(R.id.music_artist);
            mi.duration=convertView.findViewById(R.id.music_duration);
            convertView.setTag(mi);
        }else{
            mi= (MyId) convertView.getTag();
        }
        mi.title.setText(list.get(position).getTitle());
        mi.artist.setText(list.get(position).getArtist());
        int time=Integer.parseInt(list.get(position).getDuration());
        int minutes=time/1000/60;
        String second=null;
        if( time/1000%60<10){
            time=time/1000%60;
            second=":0"+time;
        }else{
            time=time/1000%60;
            second=":"+time;
        }
        mi.duration.setText(minutes+second);
        return convertView;
    }

    class MyId{
        private TextView title;
        private TextView duration;
        private TextView artist;

    }
}

自定义音乐类

package com.example.month7apractice.SelectFragment.MusicFragment;

public class MyMusic {
    private String title;
    private String duration;
    private String data;
    private String artist;

    @Override
    public String toString() {
        return "MyMusic{" +
                "title='" + title + '\'' +
                ", duration='" + duration + '\'' +
                ", data='" + data + '\'' +
                ", artist='" + artist + '\'' +
                '}';
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDuration() {
        return duration;
    }

    public void setDuration(String duration) {
        this.duration = duration;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    public String getArtist() {
        return artist;
    }

    public void setArtist(String artist) {
        this.artist = artist;
    }
}

对应音乐播放器界面的Fragment

package com.example.month7apractice.SelectFragment.MusicFragment;


import android.Manifest;
import android.content.ContentResolver;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.Toast;

import com.example.month7apractice.R;

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

/**
 * A simple {@link Fragment} subclass.
 */
public class MyMusicFragment extends Fragment implements View.OnClickListener{
    private ListView musicList;
    private SeekBar musicSeekBar;
    private LinearLayout musicLinear;
    private Button musicButtonStart;
    private Button musicButtonPause;
    private MediaPlayer mp;
    private int index;
    private Handler han=new Handler();

    //存储读取到的音乐
    private List<MyMusic> list;


    public MyMusicFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View inflate = inflater.inflate(R.layout.fragment_my_music, container, false);
        musicList = (ListView) inflate.findViewById(R.id.music_list);
        musicSeekBar = (SeekBar) inflate.findViewById(R.id.music_seekBar);
        musicLinear = (LinearLayout) inflate.findViewById(R.id.music_linear);
        musicButtonStart = (Button) inflate.findViewById(R.id.music_button_start);
        musicButtonPause = (Button) inflate.findViewById(R.id.music_button_pause);
        //初始化音乐集合
        list=new ArrayList<>();

        mp=new MediaPlayer();
        //点击条目实现播放功能。
        musicList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                index=position;
                callStart(position);
            }
        });
        musicButtonStart.setOnClickListener(this);
        musicButtonPause.setOnClickListener(this);
        mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                index++;
                if( index>=list.size()){
                    index=0;
                }
                callStart(index);
            }
        });

        musicSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if( fromUser) {
                    mp.seekTo(progress);
                }
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

        requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},202);
        return inflate;
    }

    private void callStart(int position) {
        mp.reset();
        try {
            mp.setDataSource(list.get(position).getData());
            mp.prepareAsync();
            mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    mp.start();
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
        musicSeekBar.setMax(Integer.parseInt(list.get(position).getDuration()));

        final Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                han.post(new Runnable() {
                    @Override
                    public void run() {
                        musicSeekBar.setProgress(mp.getCurrentPosition());
                    }
                });
            }
        },0,1000);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if( requestCode==202&&grantResults[0]== PackageManager.PERMISSION_GRANTED){
            Uri uri=MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
            ContentResolver cr = getContext().getContentResolver();
            String[] strings = {MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DATA,
                    MediaStore.Audio.Media.DURATION, MediaStore.Audio.Media.ARTIST};
            Cursor query = cr.query(uri, strings, null, null, null);
            if( query!=null){
                while (query.moveToNext()) {
                    String title = query.getString(query.getColumnIndex(strings[0]));
                    String data = query.getString(query.getColumnIndex(strings[1]));
                    String duration = query.getString(query.getColumnIndex(strings[2]));
                    String artist = query.getString(query.getColumnIndex(strings[3]));
                    MyMusic mm = new MyMusic();
                    mm.setArtist(artist);
                    mm.setData(data);
                    mm.setDuration(duration);
                    mm.setTitle(title);
                    list.add(mm);
                }
                MusicAdapter aaa = new MusicAdapter(getContext(), list);
                musicList.setAdapter(aaa);
            }else{
                Toast.makeText(getContext(), "读取失败。", Toast.LENGTH_SHORT).show();
            }
        }
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.music_button_start:
                callStart(index);
                break;
            case R.id.music_button_pause:
                if( mp.isPlaying()){
                    mp.pause();
                }else if( mp==null){

                }else{
                    mp.start();
                }
                break;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值