アクティビティが読み込まれると、スクロールビューにテキストファイル(.txt)が表示されるアプリケーションを開発しています。テキストファイルのすぐ下に2つのボタン(playAnimationとplayAudio)があり、押すと対応するファイル(それぞれ、swfとmp3)が再生されます。
次に、現在のコードを変更して、複数のファイルで機能するようにします(複数のアクティビティを使用することで同じことができますが、冗長であり、プログラミングの良い方法ではありません)。たくさんのテキストファイルとそれに対応するアニメーションファイルとオーディオファイルがあります。同じコードを使用して、ファイル名(つまり、テキスト、アニメーション、オーディオファイルのファイル名)のみを動的に変更したい
私のMainActivityは次のとおりです(コードで行われたコメントを参照してください。これらは変更が行われるスペースです):
public class MainActivity extends Activity
{
Button playAnimationButton,playAudioButton;
MediaPlayer mp;
Context contextObject;
GestureDetector gestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
setContentView(R.layout.activity_main);
ReadText readText=new ReadText(this);
TextView helloTxt = (TextView)findViewById(R.id.displaytext);
String fileName="textone";
// code to be written for getting the current page name and storing it in the String fileName
helloTxt.setText(readText.readTxt(fileName));
String audioName="pg3";
//Code to be written for getting the the current audioName
AssetFileDescriptor afd;
try {
afd=getAssets().openFd(audioName + ".mp3");
mp = new MediaPlayer();
mp.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
mp.prepareAsync();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
gestureDetector = new GestureDetector(this.getApplicationContext(),new MyGestureDetector());
View mainview = (View) findViewById(R.id.mainView);
// Set the touch listener for the main view to be our custom gesture listener
mainview.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return false;
}
return true;
}
});
playAnimationButton=(Button)findViewById(R.id.playanimation);
playAnimationButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mp.pause();
Intent startAnimation=new Intent(MainActivity.this,PlayAnimationActivity.class);
startAnimation.putExtra("SWF_NAME","a");
// code for sending the particular animation file corresponding to the current page
startActivity(startAnimation);
}
});
playAudioButton=(Button)findViewById(R.id.playaudio);
playAudioButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//code for dynamically sending the particular audio file associated with the current page
if(mp.isPlaying())
{
mp.pause();
}
else
{
mp.start();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public class MyGestureDetector extends SimpleOnGestureListener
{
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (Math.abs(e1.getY() - e2.getY()) > GlobalVariables.SWIPE_MAX_OFF_PATH) {
return false;
}
// right to left swipe
if(e1.getX() - e2.getX() > GlobalVariables.SWIPE_MIN_DISTANCE && Math.abs(velocityX) > GlobalVariables.SWIPE_THRESHOLD_VELOCITY) {
// The Code for loading the next text file with its corresponding audio and animation on buttons.
// left to right swipe
} else if (e2.getX() - e1.getX() > GlobalVariables.SWIPE_MIN_DISTANCE && Math.abs(velocityX) > GlobalVariables.SWIPE_THRESHOLD_VELOCITY) {
// The code for loading the previous text file with its corresponding audio and animation buttons.
}
return false;
}
@Override
public boolean onDown(MotionEvent e) {
return true;
}
}
}
このタスクをどのように進めることができるかに関する提案は非常にありがたいです。
前もって感謝します。(誰かが質問に反対票を投じました。私はそれを気にしません。しかし、少なくともそうする前に理由を特定してください)