此类作为数据库查询结果bean 此类用来查询数据库和时间转换 此类是activity类,实现转化资源文件,动态申请权限,自定义ListView适配器,将bean中封装的数据更新到item中的数据项中显示出来 有一点要提一下,使用资源文件设置listView的背景颜色,在此给大家,在darwable资源目录下新建xml文件 其中true表示未长按时,false表示长按选中时public class MusicBean { private String title; private String singer; private String path; private long time; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getSinger() { return singer; } public void setSinger(String singer) { this.singer = singer; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } public long getTime() { return time; } public void setTime(long time) { this.time = time; } } public class MusicUtil { @RequiresApi(api = Build.VERSION_CODES.O) static public ArrayList<MusicBean> getAllMusic(Context context) {         ArrayList<MusicBean> all = new ArrayList<>();          ContentResolver contentResolver = context.getContentResolver();//获取ContentResolver对象 //调用contentResolver对象的query方法查询系统表的音频文件数据         Cursor cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null); //通过cursor取出查询数据存放在musicBean中 while (cursor.moveToNext()) {             MusicBean bean = new MusicBean();             bean.setTitle(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)));             bean.setSinger(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)));             bean.setPath(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)));             bean.setTime(cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION)));             all.add(bean); } return all; } /*毫秒转化成分钟加秒*/ public static String formatTime(long time) {         String min = (time / (1000 * 60)) + "";//得到分钟         String second = (time % (1000 * 60) / 1000) + "";//得到秒 return min + "分" + second + "秒"; } } ublic class MainActivity extends AppCompatActivity {     ListView listView;     MediaPlayer mp; //播放音频对象     ArrayList<MusicBean> data; @RequiresApi(api = Build.VERSION_CODES.O) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);         listView = findViewById(R.id.lv);         mp = new MediaPlayer(); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {             data = MusicUtil.getAllMusic(this);             MyAdapter myAdapter = new MyAdapter();             listView.setAdapter(myAdapter); } else { requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 101); }         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (mp.isPlaying()) {                     mp.stop(); } else {                     mp.reset(); try {                         mp.setDataSource(data.get(position).getPath());                         mp.prepare();                         mp.start(); } catch (IOException e) {                         e.printStackTrace(); } } } }); } /*权限申请结果回调方法*/ @RequiresApi(api = Build.VERSION_CODES.O) @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == 101 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {             data = MusicUtil.getAllMusic(this);             MyAdapter myAdapter = new MyAdapter();             listView.setAdapter(myAdapter); } else {             Toast.makeText(getApplicationContext(), "请授予权限否则无法使用", Toast.LENGTH_SHORT).show(); } super.onRequestPermissionsResult(requestCode, permissions, grantResults); } /*自定义适配器*/ class MyAdapter extends BaseAdapter { @Override public int getCount() { return data.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) {             View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.item, null);             MusicBean bean = data.get(position);             TextView tv_title = view.findViewById(R.id.tv_title);             TextView tv_singer = view.findViewById(R.id.tv_singer);             TextView tv_time = view.findViewById(R.id.tv_time);             TextView tv_path = view.findViewById(R.id.tv_path);             tv_title.setText(bean.getTitle());             TextPaint tp = tv_title.getPaint();//中文字体加粗             tp.setFakeBoldText(true);             tv_singer.setText(bean.getSinger());             tv_time.setText(MusicUtil.formatTime(bean.getTime()));             tv_path.setText(bean.getPath()); if(position%2==0){ //改变背景颜色                 view.setBackgroundResource(R.drawable.item); } return view; } } } <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="https://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@color/colorAccent"></item> <item android:state_pressed="false" android:drawable="@color/coloritem"></item> </selector> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"     xmlns:app="https://schemas.android.com/apk/res-auto"     xmlns:tools="https://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     tools:context=".MainActivity"> <ListView         android:id="@+id/lv"         android:layout_width="match_parent"         android:layout_height="match_parent"/> </LinearLayout> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"     android:orientation="horizontal" android:layout_width="match_parent"     android:layout_height="match_parent"> <TextView     android:id="@+id/tv_title"     android:layout_width="0dp"     android:layout_height="40dp"     android:layout_weight="1"/> <TextView         android:id="@+id/tv_singer"         android:layout_width="0dp"         android:layout_height="wrap_content"         android:layout_weight="1"/> <TextView         android:id="@+id/tv_path"         android:layout_width="0dp"         android:layout_height="wrap_content"         android:layout_weight="1"/> <TextView         android:id="@+id/tv_time"         android:layout_width="0dp"         android:layout_height="wrap_content"         android:layout_weight="1"/> </LinearLayout> 
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
 官方软件产品操作指南 (170)
官方软件产品操作指南 (170)