我正在android
为孩子们创建一个数学应用程序..在我的应用程序中,有一些活动可以提问(Image
任意数字,如1,2,3等)和三Image Button
([ONE],[TWO],[THREE]等)中的选项,每个按下的按钮也有声音。对于每个问题,我创建了一个活动。
这是为每个问题创建活动的好方法吗?我想随便问一下我应该做些什么,请帮助我。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
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"
android:layout_centerHorizontal="true"
tools:context="com.example.app.kids.kidsmaths.ExerciseSeven"
android:background="@drawable/bgn">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ivsz"
android:src="@drawable/seven"
android:layout_gravity="center"
android:scaleType="fitCenter"
android:layout_marginTop="49dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginEnd="153dp" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ib71"
android:background="@drawable/six2"
android:src="@drawable/answer_click_wrong"
android:layout_below="@+id/ib73"
android:layout_alignStart="@+id/ib73" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ib72"
android:src="@drawable/answer_click_wrong"
android:background="@drawable/two2"
android:layout_below="@+id/ivsz"
android:layout_centerHorizontal="true" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ib73"
android:background="@drawable/seven2"
android:src="@drawable/answer_click_correct"
android:layout_below="@+id/ib72"
android:layout_alignStart="@+id/ib72" />
</RelativeLayout>
活性
package com.example.app.kids.kidsmaths;
import android.content.Intent;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageButton;
import android.widget.ImageView;
public class ExerciseSeven extends AppCompatActivity {
MediaPlayer music71, music72, music73, music74;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exercise_seven);
final ImageView zoom = (ImageView) findViewById(R.id.ivsz);
final Animation zoomAnimation = AnimationUtils.loadAnimation(this, R.anim.zoomseven);
zoom.startAnimation(zoomAnimation);
ImageButton im1 = (ImageButton) findViewById(R.id.ib71);
ImageButton im2 = (ImageButton) findViewById(R.id.ib72);
ImageButton im3 = (ImageButton) findViewById(R.id.ib73);
music71= MediaPlayer.create(ExerciseSeven.this,R.raw.which_number);
music72= MediaPlayer.create(ExerciseSeven.this,R.raw.wrong);
music73= MediaPlayer.create(ExerciseSeven.this,R.raw.correct);
music74= MediaPlayer.create(ExerciseSeven.this,R.raw.wrong2);
music71.start();
im1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
music74.start();
}
});
im2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
music72.start();
}
});
im3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Thread timer = new Thread(){
public void run(){
try {
sleep(2000);
}catch (InterruptedException e){
e.printStackTrace();
}finally {
Intent i = new Intent(ExerciseSeven.this, ExerciseFour.class);
startActivity(i);
}
}
};
timer.start();
music73.start();
}
});
}
@Override
protected void onPause() {
super.onPause();
music71.release();
}
}
答案 0 :(得分:2)
实际上这是一个非常糟糕的方法..你只需创建一个活动并通过这样的意图将变量传递给它:
Intent intent = new Intent(this, QuestionActivity.class);
// question is a custom object that implements Serializable
// if you don't wanna create custom class you can just pass your variables as Strings or so..
intent.putExtra("question", question);
startActivity(intent);
并在你的活动中获取onCreate:
Question question = (Question) getIntent().getExtras().get("question");
然后将您的观看次数设置为具有问题的值
答案 1 :(得分:0)
活动是沉重的对象,你绝对不应该使用活动来解决问题,因为加载大量活动会使你的应用程序内存不足。 相反,您可以使用ViewPager来显示问题。如何使用viewpager进行幻灯片可以在这里找到
https://developer.android.com/training/animation/screen-slide.html
您可以在此处找到最适合您需求的解决方案
http://code.tutsplus.com/tutorials/android-ui-workshop-build-an-interactive-quiz-app--mobile-14208