【发布时间】:2018-07-21 11:58:35
【问题描述】:
在启动 songlist.java 活动的活动中按下按钮后,我正在尝试打开歌曲列表。但是,按下按钮“btsonglist”按钮后,会出现一些黑屏,每次打开列表都需要时间。还有什么方法可以在后台加载列表并在按下按钮后显示。 MainActivity.java
public class MainActivity extends Activity implements
View.OnClickListener{
Button playbutton, forwardbutton, backwardbutton,songlistbutton;
ImageView iv;
Bitmap bmp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView)findViewById(R.id.imageView);
InputStream is = getResources().openRawResource(R.raw.background);
bmp = BitmapFactory.decodeStream(is);
iv.setImageBitmap(bmp);
initiate();
}
public void initiate(){
playbutton = (Button)findViewById(R.id.btplay);
forwardbutton = (Button)findViewById(R.id.btforward);
backwardbutton = (Button)findViewById(R.id.btbackward);
songlistbutton = (Button)findViewById(R.id.btsonglist);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btplay:
break;
case R.id.btforward:
break;
case R.id.btbackward:
break;
case R.id.btsonglist:
AsyncTask1 AsyncTask_obj = new AsyncTask1();
AsyncTask_obj.execute();
}
}
private class AsyncTask1 extends AsyncTask<String,String,String>{
ProgressDialog progressDialog;
@Override
protected String doInBackground(String... strings) {
try {
Class ourclass = Class.forName("com.example.musicchatv10.songlist");
Intent songlistint = new Intent(getApplicationContext(),ourclass);
startActivityForResult(songlistint, 100);
}catch(ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
}
}
}
这是 songlist.java
public class songlist extends Activity{
ArrayList<String> arrayList;
ListView listView;
ArrayAdapter<String> adapter;
MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.song_item);
listView = (ListView)findViewById(R.id.list);
arrayList = new ArrayList<>();
dostuff();
}
@Override
protected void onPause() {
super.onPause();
}
public void dostuff(){
final ArrayList<File> mysongs;
mysongs = findsongs(Environment.getExternalStorageDirectory());
for(int j=0; j<mysongs.size();j++){
//Toast.makeText(getApplicationContext(),"Loading Files Please wait",Toast.LENGTH_LONG ).show();
arrayList.add(j,mysongs.get(j).getName().toString());
}
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if (mediaPlayer !=null){
mediaPlayer.release();
}
else{
//int resID = getResources().getIdentifier(arrayList.get(i),"raw",getPackageName());
Uri uri = Uri.fromFile(mysongs.get(i));
mediaPlayer = MediaPlayer.create(getApplicationContext(),uri );
if (mediaPlayer.isPlaying()){
mediaPlayer.stop();
mediaPlayer.start();
}
else{
mediaPlayer.start();
}
}
}
});
}
public ArrayList<File> findsongs (File root){
ArrayList<File> al = new ArrayList<File>();
File[] files = root.listFiles();
for (File singlefile: files){
if (singlefile.isDirectory() && !singlefile.isHidden()){
al.addAll((findsongs(singlefile)));
}
else {
if(singlefile.getName().endsWith(".mp3")){
al.add(singlefile);
}
}
}return al;
}
}
【问题讨论】:
-
我认为位图需要时间
标签: android listactivity audio-player android-music-player