android - notificaciones - ¿La mejor manera de implementar un menú deslizable de Google+?
google+ web (2)
Soy un desarrollador de Android nuevo que está tratando de crear una aplicación que utiliza un menú de vuelo (similar a google +, fb, steam, youtube). Encontré que https://github.com/jfeinstein10/SlidingMenu funciona bien para mis necesidades. Ahora mi pregunta es, ¿cuál es la forma más eficiente de usar esta biblioteca?
Esta es una de mis actividades
public class ExampleActivity2 extends SlidingActivity implements OnItemClickListener{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setBehindContentView(R.layout.list);
getSlidingMenu().setBehindOffsetRes(R.dimen.actionbar_home_width);
Button btn = (Button) findViewById(R.id.button);
//ListClass l=new ListClass(getApplicationContext());
ListView lv=(ListView) findViewById(R.id.lvname);
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, values);
// Assign adapter to ListView
lv.setAdapter(adapter);
lv.setOnItemClickListener(this);
getActionBar().setHomeButtonEnabled(true);
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
switch(arg2){
case 1:
Intent myIntent = new Intent(this,TestClass.class);
startActivity(myIntent);
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; go home
toggle();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
Como puede ver, esta implementación requiere que complete el menú lateral para cada actividad que utilizo. (En este ejemplo, cuando el usuario elige el elemento 1 del menú lateral, comienzo una nueva actividad llamada TestClass donde tengo que completar la vista de lista e implementar el onitemlistener de nuevo).
Quiero una manera de mover todo el código listView (con el onitemclicklistener) a un archivo separado que se puede llamar para todas las actividades (las vistas de detalles). Intenté mover el código a una clase diferente pero eclipse arroja un error de excepción de punto nulo . Agradecería mucho que alguien me pudiera guiar con un ejemplo sobre cómo usar esta biblioteca (no encontré las muestras muy útiles). Gracias por adelantado :)
Hay una manera simple de consolidar todo, mediante el uso de una clase BaseActivity
que tiene todos los elementos comunes, como el código relacionado con la configuración del menú de diapositivas. Ahora todas las actividades que requieren la función de menú deslizante pueden extender BaseActivity
lugar de SlidingActivity
Algo como esto:
public class BaseActivity extends SlidingActivity implements OnItemClickListener{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//content view is set by the activity which extends BaseActivity
setBehindContentView(R.layout.list);
getSlidingMenu().setBehindOffsetRes(R.dimen.actionbar_home_width);
//Button btn = (Button) findViewById(R.id.button);
//ListClass l=new ListClass(getApplicationContext());
ListView lv=(ListView) findViewById(R.id.lvname);
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, values);
// Assign adapter to ListView
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
/*
* (non-Javadoc)
*
* @see
* android.widget.AdapterView.OnItemClickListener#onItemClick
* (android.widget.AdapterView, android.view.View, int, long)
*/
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch(arg2){
case 1:
Intent myIntent = new Intent(this,TestClass.class);
startActivity(myIntent);
break;
}
}
});
getActionBar().setHomeButtonEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; go home
toggle();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
Y su actividad de ejemplo se ve así:
public class ExampleActivity2 extends BaseActivity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.button);
}
}
Recuerda siempre llamar a super o de lo contrario obtendrás excepciones de tiempo de ejecución
Si quiere evitar el ajetreo de la codificación, le recomendaría usar scringo . Es un tipo de complemento que puede agregar a su aplicación y tiene el menú deslizante como google + / FB / Youtube (puede elegir si el menú está a la derecha oa la izquierda). También tiene funciones integradas que puede elegir usar (como chatear, invitar amigos, etc.) y, por supuesto, agregar sus propios comandos al menú.