此类作为数据库查询结果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网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算