android中每个练习的活动

时间:2016-06-16 02:32:55

标签: android android-activity

我正在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();
    }
}

2 个答案:

答案 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