【问题标题】:Activity for each exercise in androidandroid中每个练习的活动
【发布时间】:2016-06-16 12:12:15
【问题描述】:

我正在为android 中的孩子创建一个数学应用程序。在我的应用程序中有提问活动(Image 任何数字,如 1、2、3 等)和@987654323 中的三个选项@([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();
    }
}

【问题讨论】:

  • 所有问题都“出现”完全相同吗?如果是,那么一个活动并简单地用新数据重新加载视图
  • 也许您可以更具体地了解您的应用程序的要求?按钮是否重定向到问题或练习?
  • 更好地使用 viewpager 并采用动态小部件。这会很容易

标签: android android-activity


【解决方案1】:

实际上这是一种非常糟糕的方法。您只需要创建一个活动并通过这样的意图将变量传递给它:

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");

然后将您的观点设置为具有您问题的价值

【讨论】:

    【解决方案2】:

    Activity 是很重的对象,您绝对不应该将 Activity 用于问题,因为加载大量 Activity 会使您的应用内存不足。 相反,您可以使用 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

    【讨论】:

      猜你喜欢
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多