私は、ボタンをクリックすると音を再生するアンドロイドアプリを作った。これらの音はメッセンジャーで共有することもできます。これらのボタン(その外観と位置)はすべてactivity_main.xmlで指定します。私のアプリで上下にスクロールすると、問題は滑らかではなく、アプリが遅れているようだから恐ろしいように見えます。ここで私のアプリのスクロールは本当に滑らかではありません
は、例えばいくつかのボタンとimageviewsと私のコードは
<?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" />
の総25ボタンと25 imageviews次のようになり、私のactivity_mainでにあります。これらの画像ビューはすべて1つのファイル(sharebutton.jpg)に基づいています。
EDIT: メインActivityクラス:
public class MainActivity extends AppCompatActivity {
private MediaPlayer mp;
private MessengerThreadParams mThreadParams;
private boolean mPicking;
private static final int REQUEST_CODE_SHARE_TO_MESSENGER = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button s1 = (Button) findViewById(R.id.sound1);
Button s2 = (Button) findViewById(R.id.sound2);
findViewById(R.id.share_button1).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
onMessengerButtonClicked1();
}
});
findViewById(R.id.share_button2).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
onMessengerButtonClicked2();
}
});
Intent intent = getIntent();
if (Intent.ACTION_PICK.equals(intent.getAction())) {
mThreadParams = MessengerUtils.getMessengerThreadParamsForIntent(intent);
mPicking = true;
}
s1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onPause();
mp = MediaPlayer.create(MainActivity.this, R.raw.a1);
mp.start();
}
});
s2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onPause();
mp = MediaPlayer.create(MainActivity.this, R.raw.a2);
mp.start();
}
private void onMessengerButtonClicked1() {
// The URI can reference a file://, content://, or android.resource.
Uri uri =
Uri.parse("android.resource://" + getPackageName()+ "/raw/" +R.raw.a1);
ShareToMessengerParams shareToMessengerParams =
ShareToMessengerParams.newBuilder(uri, "audio/mpeg")
.setMetaData("{ \"audio\" : \"a1\" }")
.build();
if (mPicking) {
MessengerUtils.finishShareToMessenger(this, shareToMessengerParams);
} else {
MessengerUtils.shareToMessenger(
this,
REQUEST_CODE_SHARE_TO_MESSENGER,
shareToMessengerParams);
}
}
private void onMessengerButtonClicked2() {
Uri uri =
Uri.parse("android.resource://" + getPackageName()+ "/raw/" +R.raw.a2);
ShareToMessengerParams shareToMessengerParams =
ShareToMessengerParams.newBuilder(uri, "audio/mpeg")
.setMetaData("{ \"audio\" : \"a2\" }")
.build();
if (mPicking) {
MessengerUtils.finishShareToMessenger(this, shareToMessengerParams);
} else {
MessengerUtils.shareToMessenger(
this,
REQUEST_CODE_SHARE_TO_MESSENGER,
shareToMessengerParams);
}
}
protected void onPause() {
super.onPause();
if (mp != null) {
mp.stop();
mp.release();
mp = null;
}
}
を見るのを助けるために、利用ログを助けた場合は?または実際のモバイルデバイスで?エミュレータが遅いです。メモリを増やして実行してください – user7568042
実際のモバイルデバイスでは、メッセンジャーボタンを使用して動作するかどうかを確認する必要があるため、エミュレータを使用しません。 – Kyuubi
難しいと言えば、コードを調べる必要があります。 xmlは、私たちに多くの情報を提供しておらず、あなたの活動のコードが問題ではない場合。ネットからデータを取得している場合は、デバイスまたは接続です。 – user7568042