Skip to content

Instantly share code, notes, and snippets.

@pedrojoya
Last active April 27, 2016 11:52
Show Gist options
  • Save pedrojoya/5136849 to your computer and use it in GitHub Desktop.
Save pedrojoya/5136849 to your computer and use it in GitHub Desktop.
PR045-FrameLayout
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true">
<ImageView
android:id="@+id/imgFoto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/foto_del_dia"
android:scaleType="centerCrop"
android:src="@drawable/foto"/>
<RelativeLayout
android:id="@+id/rlPanel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:animateLayoutChanges="true"
android:background="@color/translucent_grey"
android:padding="@dimen/panel_padding">
<TextView
android:id="@+id/lblTitulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/imgDetalle"
android:layout_toStartOf="@+id/imgDetalle"
android:text="@string/foto_del_dia"
style="@style/Base.TextAppearance.AppCompat.Headline"
android:textColor="@android:color/white"/>
<TextView
android:id="@+id/lblSubtitulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_toLeftOf="@+id/imgDetalle"
android:layout_toStartOf="@+id/imgDetalle"
android:layout_below="@+id/lblTitulo"
android:text="@string/londres"
style="@style/Base.TextAppearance.AppCompat.Subhead"
android:textColor="@android:color/white"/>
<ImageView
android:id="@+id/imgDetalle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:clickable="true"
android:contentDescription="@string/abrir_detalle"
android:src="@drawable/ic_action_navigation_collapse"/>
<TextView
android:id="@+id/lblDetalle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/lblSubtitulo"
android:padding="@dimen/panel_padding"
android:text="@string/detalle"
style="@style/Base.TextAppearance.AppCompat.Body2"
android:textColor="@android:color/white"/>
</RelativeLayout>
</merge>
package es.iessaladillo.pedrojoya.pr045;
import android.annotation.SuppressLint;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements
OnClickListener {
// Vistas.
private ImageView imgDetalle;
private TextView lblDetalle;
private RelativeLayout rlPanel;
// Al crear la actividad.
@SuppressLint("InlinedApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
setContentView(R.layout.activity_main);
// Se obtienen e inicializan las vistas.
initVistas();
}
// Obtiene e inicializa las vistas.
private void initVistas() {
rlPanel = (RelativeLayout) findViewById(R.id.rlPanel);
ImageView imgFoto = (ImageView) findViewById(R.id.imgFoto);
if (imgFoto != null) {
imgFoto.setOnClickListener(this);
}
imgDetalle = (ImageView) findViewById(R.id.imgDetalle);
if (imgDetalle != null) {
imgDetalle.setOnClickListener(this);
}
lblDetalle = (TextView) findViewById(R.id.lblDetalle);
// Se establece el tipo de letra de los TextView.
TextView lblTitulo = (TextView) findViewById(R.id.lblTitulo);
if (lblTitulo != null) {
lblTitulo.setTypeface(Typeface
.createFromAsset(getAssets(), "fonts/alegreya-boldItalic.ttf"));
}
TextView lblSubtitulo = (TextView) findViewById(R.id.lblSubtitulo);
if (lblSubtitulo != null) {
lblSubtitulo.setTypeface(Typeface
.createFromAsset(getAssets(), "fonts/alegreya-bold.ttf"));
}
if (lblDetalle != null) {
lblDetalle.setVisibility(View.GONE);
lblDetalle.setTypeface(Typeface.createFromAsset(getAssets(),
"fonts/alegreya-regular.ttf"));
}
}
// Al pulsar sobre una vista cuyo click es gestionada por la actividad.
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.imgFoto:
// Se cambia la visibilidad del panel.
togglePanel();
break;
case R.id.imgDetalle:
// Se cambia la visibilidad del detalle.
toggleDetalle();
}
}
// Cambia la visibilidad del detalle.
private void togglePanel() {
// Si no está visible se hace visible o viceversa.
if (rlPanel.getVisibility() == View.GONE) {
rlPanel.setVisibility(View.VISIBLE);
} else {
rlPanel.setVisibility(View.GONE);
}
}
// Cambia la visibilidad del detalle.
private void toggleDetalle() {
// Si no está visible se hace visible o viceversa y se cambia el icono
// de expansión o contracción.
if (lblDetalle.getVisibility() == View.GONE) {
lblDetalle.setVisibility(View.VISIBLE);
imgDetalle.setImageResource(R.drawable.ic_action_navigation_expand);
} else {
lblDetalle.setVisibility(View.GONE);
imgDetalle
.setImageResource(R.drawable.ic_action_navigation_collapse);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment