Android 在我的应用程序中滚动真的很不顺畅
我制作了一个安卓应用程序,在点击按钮时播放声音。这些声音也可以通过messenger共享。所有这些按钮(它们的外观和位置)都在activity_main.xml中指定。问题是,当我在我的应用程序中向上或向下滚动时,它看起来很糟糕,因为它不平滑,而且我的应用程序看起来很滞后 下面是我的代码,其中包括一些按钮和图像视图Android 在我的应用程序中滚动真的很不顺畅,android,imageview,scrollview,lag,Android,Imageview,Scrollview,Lag,我制作了一个安卓应用程序,在点击按钮时播放声音。这些声音也可以通过messenger共享。所有这些按钮(它们的外观和位置)都在activity_main.xml中指定。问题是,当我在我的应用程序中向上或向下滚动时,它看起来很糟糕,因为它不平滑,而且我的应用程序看起来很滞后 下面是我的代码,其中包括一些按钮和图像视图 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.a
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/r1">
<Button
android:text="@string/sound1"
android:layout_marginTop="33dp"
android:id="@+id/sound1"
android:layout_width="210dp"
android:background="@drawable/backgroundbuttons"
android:layout_height="50dp"
android:layout_alignRight="@+id/sound3"
android:layout_alignEnd="@+id/sound3"
android:textSize="13sp" />
<Button
android:text="@string/sound2"
android:layout_width="210dp"
android:layout_height="50dp"
android:layout_marginTop="8dp"
android:id="@+id/sound2"
android:background="@drawable/backgroundbuttons"
android:layout_below="@+id/sound1"
android:layout_alignLeft="@+id/sound1"
android:layout_alignStart="@+id/sound1"
android:textSize="13sp" />
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
app:srcCompat="@drawable/sharebutton"
android:id="@+id/share_button1"
android:layout_alignBottom="@+id/sound1"
android:layout_toRightOf="@+id/sound1"
android:layout_toEndOf="@+id/sound1" />
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
app:srcCompat="@drawable/sharebutton"
android:id="@+id/share_button2"
android:layout_alignBottom="@+id/sound2"
android:layout_toRightOf="@+id/sound2"
android:layout_toEndOf="@+id/sound2" />
以上是一个概述,可用于包括您的情况在内的广泛领域
对于您的代码,您可以实现以下功能:
@Override
public void onResume() {
mp.onResume();
// Setup the player
mp.resume();
}
@Override
public void onDestroy() {
if(mp != null) {
mp.release();
}
super.onDestroy();
}
s1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mp != null)
{
mp.stop();
mp.release();
}
finish();
}
});
}
如果有帮助,请使用日志帮助您查看生命周期
try{
if(mp !=null && mp.isPlaying()){
Log.d("TAG------->", "player is running");
mp.stop();
Log.d("Tag------->", "player is stopped");
mp.release();
Log.d("TAG------->", "player is released");
}
}catch(Exception e){
//Throw the error
}
以上是一个概述,可用于包括您的情况在内的广泛领域
对于您的代码,您可以实现以下功能:
@Override
public void onResume() {
mp.onResume();
// Setup the player
mp.resume();
}
@Override
public void onDestroy() {
if(mp != null) {
mp.release();
}
super.onDestroy();
}
s1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mp != null)
{
mp.stop();
mp.release();
}
finish();
}
});
}
如果有帮助,请使用日志帮助您查看生命周期
try{
if(mp !=null && mp.isPlaying()){
Log.d("TAG------->", "player is running");
mp.stop();
Log.d("Tag------->", "player is stopped");
mp.release();
Log.d("TAG------->", "player is released");
}
}catch(Exception e){
//Throw the error
}
在模拟器上?还是在真正的移动设备上?模拟器速度很慢。在真正的移动设备上,我不使用emulator,因为我必须使用messenger按钮来检查它们是否工作。很难说,我会说代码需要查看。xml并没有为我们提供太多的信息,如果您的活动中的代码不是问题的话。如果它正在从网络检索数据,它就是您的设备或连接。我添加了MainActivity类的代码。希望它能帮助找到问题。看起来按钮需要声音文件。内存和应用程序之间实际上没有任何缓冲区。如果我这样想象的话,当你真的想在点击按钮时加载特定的音频文件时,整个音频都在后台加载。您可能需要一个管理器来管理这个或多个方法,比如onDestroy、onStop等?还是在真正的移动设备上?模拟器速度很慢。在真正的移动设备上,我不使用emulator,因为我必须使用messenger按钮来检查它们是否工作。很难说,我会说代码需要查看。xml并没有为我们提供太多的信息,如果您的活动中的代码不是问题的话。如果它正在从网络检索数据,它就是您的设备或连接。我添加了MainActivity类的代码。希望它能帮助找到问题。看起来按钮需要声音文件。内存和应用程序之间实际上没有任何缓冲区。如果我这样想象的话,当你真的想在点击按钮时加载特定的音频文件时,整个音频都在后台加载。您可能希望有一个管理器来管理此功能或方法,如onDestroy、onStop等。感谢您的帮助!很抱歉问这个问题,但我很抱歉。你能告诉我你的代码在我的代码中实现了什么吗?唯一的原因是,当我尝试自己做这件事时,android studio会将
mp.*onResume*();//设置播放器mp.*恢复*()代码>作为错误。顺便问一下,在哪里可以将mp3文件连接到按钮?在我的代码中,我使用mp=MediaPlayer.create(MainActivity.this,R.raw.a1)实现了这一点代码>其中a1是mp3文件。如果你能给我解释一下,我会非常感激。我发现把所有文件一起加载确实是我的应用程序很滞后的原因,但我仍然不知道如何在我的代码中实现你的方法。你能帮我吗?谢谢你的帮助!很抱歉问这个问题,但我很抱歉。你能告诉我你的代码在我的代码中实现了什么吗?唯一的原因是,当我尝试自己做这件事时,android studio会将mp.*onResume*();//设置播放器mp.*恢复*()代码>作为错误。顺便问一下,在哪里可以将mp3文件连接到按钮?在我的代码中,我使用mp=MediaPlayer.create(MainActivity.this,R.raw.a1)实现了这一点代码>其中a1是mp3文件。如果你能给我解释一下,我会非常感激。我发现把所有文件一起加载确实是我的应用程序很滞后的原因,但我仍然不知道如何在我的代码中实现你的方法。你能帮我做这个吗?