PDA

Ver la Versión Completa : [ CONSULTA ] Mantener los datos al girar la pantalla


carrobe1390
02/09/13, 21:55:12
Tengo mi pagina de presentacion , inicio o splash como quieran llamarle pero el problema es que al rotar la imagen se reinicia el activity como puede evitar esto?? y que el vidoe continue de dond se quedo???

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.Window;
import android.widget.MediaController;
import android.widget.ProgressBar;
import android.widget.Toast;
import android.widget.VideoView;

@SuppressLint("HandlerLeak")
public class Activity_Splash extends Activity {
ProgressBar progressBar;
protected boolean isRunning;
VideoView myVideoView;
String SrcPath = "/storage/sdcard0/Video/Reik-ConlaCaraenAlto_HD.mp4";
@Override
public void onCreate(Bundle savedInstanceState){
this.requestWindowFeature(Window.FEATURE_NO_TITLE) ;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);

VideoView myVideoView = (VideoView)findViewById(R.id.videoView1);
myVideoView.setVideoPath(SrcPath);
myVideoView.setMediaController(new MediaController(this));
myVideoView.requestFocus();

myVideoView.start();


new Thread(new Runnable() {

public void run() {
for (int i = 0; i < 20; i++) {
try {
Thread.sleep(1000);
handler.sendMessage(handler.obtainMessage());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

Intent mainIntent = new Intent().setClass(Activity_Splash.this, Activity_Home.class);
startActivity(mainIntent);
finish();

}
}).start();

}
Handler handler=new Handler() {

@Override
public void handleMessage(Message msg) {
progressBar.incrementProgressBy(5);
}
};


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// Bloquiar la tecla volver para no cerrar el app
Toast.makeText(this, "No puede Retroceder", Toast.LENGTH_SHORT).show();
return false;
}
return super.onKeyDown(keyCode, event);
}
} --> Codigo

Alguien que me eche una mano..

kriogeN
02/09/13, 22:13:24
Poniendo esto en el Manifest en la Activity:

android:configChanges="orientation"

carrobe1390
02/09/13, 22:25:47
Tengo mi pagina de presentacion , inicio o splash como quieran llamarle pero el problema es que al rotar la imagen se reinicia el activity como puede evitar esto?? y que el vidoe continue de dond se quedo???

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.Window;
import android.widget.MediaController;
import android.widget.ProgressBar;
import android.widget.Toast;
import android.widget.VideoView;

@SuppressLint("HandlerLeak")
public class Activity_Splash extends Activity {
ProgressBar progressBar;
protected boolean isRunning;
VideoView myVideoView;
String SrcPath = "/storage/sdcard0/Video/Reik-ConlaCaraenAlto_HD.mp4";
@Override
public void onCreate(Bundle savedInstanceState){
this.requestWindowFeature(Window.FEATURE_NO_TITLE) ;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);

VideoView myVideoView = (VideoView)findViewById(R.id.videoView1);
myVideoView.setVideoPath(SrcPath);
myVideoView.setMediaController(new MediaController(this));
myVideoView.requestFocus();

myVideoView.start();


new Thread(new Runnable() {

public void run() {
for (int i = 0; i < 20; i++) {
try {
Thread.sleep(1000);
handler.sendMessage(handler.obtainMessage());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

Intent mainIntent = new Intent().setClass(Activity_Splash.this, Activity_Home.class);
startActivity(mainIntent);
finish();

}
}).start();

}
Handler handler=new Handler() {

@Override
public void handleMessage(Message msg) {
progressBar.incrementProgressBy(5);
}
};


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// Bloquiar la tecla volver para no cerrar el app
Toast.makeText(this, "No puede Retroceder", Toast.LENGTH_SHORT).show();
return false;
}
return super.onKeyDown(keyCode, event);
}
} --> Codigo

Alguien que me eche una mano..
Tengo que añadir esta porcion de codigo en el manifiesto.

android:configChanges="orientation|keyboardHidden|screenSize">

Pero al hacer eso no me visualiza el layout-land que cree :(

carrobe1390
02/09/13, 22:42:34
Poniendo esto en el Manifest en la Activity:

android:configChanges="orientation"
al realizar ese codigo se reinicia la activity y eso no deseo :(

kriogeN
02/09/13, 22:53:29
Si quieres que el Layout sea otro tendrás que usar entonces onSaveInstanceState, y luego recuperarlo en el onCreate.

carrobe1390
02/09/13, 23:07:04
Si quieres que el Layout sea otro tendrás que usar entonces onSaveInstanceState, y luego recuperarlo en el onCreate.
como puedo mantenerlo?? y luego recueprarlo por favor ayudame :(

rafaxplayer
03/09/13, 07:44:48
http://stackoverflow.com/questions/4096169/onsaveinstancestate-and-onrestoreinstancestate

vagaerg
04/09/13, 15:31:50
Si no, mírate esto:
http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html

Es básicamente meter lo que quieras en un fragmento y retenerlo.

Por otro lado, si metes lo que te han dicho en el manifest, diría que tienes que hacer, en tu actividad:

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}

carrobe1390
11/09/13, 16:05:52
Si no, mírate esto:
http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html

Es básicamente meter lo que quieras en un fragmento y retenerlo.

Por otro lado, si metes lo que te han dicho en el manifest, diría que tienes que hacer, en tu actividad:

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
Gracias...!!!! :-):grin:X-D:platano: