Commit 9214f6d3 by Pablo Molina

Merge branch 'issue/408' into 'develop'

Solved #408
parents a3812f5a af555106
package com.yottacode.pictogram.gui;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.GridLayout;
import android.widget.FrameLayout;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import com.yottacode.pictogram.R;
import com.yottacode.pictogram.dao.PCBDBHelper;
import com.yottacode.pictogram.dao.Picto;
import com.yottacode.pictogram.dao.User;
import com.yottacode.pictogram.grammar.iVocabularyListener;
import com.yottacode.pictogram.tools.PCBcontext;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.LinkedList;
public class PictoGridAdapter extends ArrayAdapter {
private LinkedList<Picto> pictoLinkedList;
private final String LOG_TAG = this.getClass().getSimpleName();
private LinkedList<Picto> lPictos;
int color;
private Bitmap square_bmp = BitmapFactory.decodeResource(PCBcontext.getContext().getResources(), R.drawable.square);
//private Context mContext;
// String constant for logs
private final String LOG_TAG = this.getClass().getSimpleName(); // Or .getCanonicalName()
public PictoGridAdapter(LinkedList<Picto> ll){
super(PCBcontext.getContext(), R.layout.list_item_img ,ll);
//mContext = c;
lPictos = ll;
// Color por defecto de la pantalla principal
color = Color.parseColor("#AFAFAF");
public PictoGridAdapter(LinkedList<Picto> pictoLinkedList){
super(PCBcontext.getContext(), PictoItemViewGenerator.LAYOUT, pictoLinkedList);
this.pictoLinkedList = pictoLinkedList;
}
@Override
public int getCount() {// devuelve el número de elementos que se introducen
// en el adapter
return lPictos.size();
public int getCount() {
return this.pictoLinkedList.size();
}
@Override
public Picto getItem(int position) {
// este método debería devolver el objeto que esta en esa posición del
// adapter.
return lPictos.get(position);
return this.pictoLinkedList.get(position);
}
@Override
public long getItemId(int position) {
// este método debería devolver el id de fila del item que esta en esa
// posición del adapter. No es necesario en este caso más que devolver 0.
return 0;
}
public void deleteAll(){
lPictos.clear();
public void deleteAll() {
this.pictoLinkedList.clear();
}
// crear un nuevo ImageView para cada item referenciado por el Adapter
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// este método crea una nueva View para cada elemento añadido al
// ImageAdapter. Se le pasa el View en el que se ha pulsado, converview
// si convertview es null, se instancia y configura un ImageView con las
// propiedades deseadas para la presentación de la imagen
// si converview no es null, el ImageView local es inicializado con este
// objeto View
ImageView imageView;
if (convertView == null) {
//Log.i("getView", "Es nulo y paso...");
imageView = new ImageView(PCBcontext.getContext());
int pictogramSize = 0; // ESTE VALOR SE COGE DE LA CONFIGURACION DEL USUARIO (0:normal; 1:large)
//if (position==0 || position==2)
if (pictogramSize==0)
imageView.setLayoutParams(new GridView.LayoutParams(110,70));// ancho y alto
else if (pictogramSize==1)
imageView.setLayoutParams(new GridView.LayoutParams(140, 140));// ancho y alto
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(20, 20, 20, 20);
} else {
imageView = (ImageView) convertView;
}
// QUITAR imageView.setBackgroundColor(color);
// Propiedades de pictos
// Fuera de la comprobación de convertView y con los else para dejar el estado normal
// de los pictos al cargar los nuevos
// Cambio el color de la cinta, en función del color del picto
/*
try{
imageView.setBackgroundColor(lPictos.get(position).get_darkner_color());
//Log.d("PictoGridAdapter", "Position: " + position);
} catch (java.lang.IllegalArgumentException e){
e.printStackTrace();
//imageView.setBackgroundColor(PCBcontext.getContext().getResources().getColor(R.color.blue));
}
*/
// Highlight: ver cómo se hará ese highlight
/*
if(lPictos.get(position).is_highlight()){
imageView.setBackgroundColor(PCBcontext.getContext().getResources().getColor(R.color.orange));
}
else{
// Color de la cinta de pictogramas: coger de configuración
imageView.setBackgroundColor(PCBcontext.getContext().getResources().getColor(R.color.blue));
}
*/
/*
// Setting the row and column of the pictos
GridLayout.LayoutParams params = new GridLayout.LayoutParams(imageView.getLayoutParams());
params.rowSpec = GridLayout.spec(0 + lPictos.get(position).get_row()); // First cell in first row use rowSpan 2.
params.columnSpec = GridLayout.spec(0 + lPictos.get(position).get_column()); // First cell in first column use columnSpan 2.
Log.d("PanelAdapterPictos", "Picto: " + lPictos.get(position).get_id() + " -- Fila " + params.rowSpec + " , Col " + params.columnSpec);
imageView.setLayoutParams(params);
*/
try{
// Pruebo a poner una X encima de la imagen
if (lPictos.get(position) == null){
// Es un hueco en blanco
imageView.setImageAlpha(50);
imageView.setImageBitmap(this.square_bmp);
} else{
Picto picto =lPictos.get(position);
Bitmap bmp1 = picto.get_bitmap(PCBcontext.getContext());
if (bmp1 != null){
// Magnify
if(lPictos.get(position).is_magnify()){
imageView.setScaleX(1.2f);
imageView.setScaleY(1.2f);
}else{
imageView.setScaleX(1f);
imageView.setScaleY(1f);
}
if(picto.is_invisible()) {
imageView.setImageAlpha(50);
imageView.setImageBitmap(PCBcontext.getPcbdb().getCurrentUser().is_supervisor() ? bmp1 : this.square_bmp);
}
if(picto.is_disabled()){
imageView.setImageAlpha(100); // Entre 0 y 255
Bitmap bmp2 = BitmapFactory.decodeResource(PCBcontext.getContext().getResources(), R.drawable.redcross3);
Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
Matrix m=new Matrix();
canvas.drawBitmap(bmp1, m, null);
canvas.drawBitmap(bmp2, -10, 0, null);
imageView.setImageBitmap(bmOverlay);
/*
float canvasx = (float) canvas.getWidth();
float canvasy = (float) canvas.getHeight();
float bitmapx = (float) bmp1.getWidth();
float bitmapy = (float) bmp1.getHeight();
float boardPosX = (canvasx - bitmapx) / 2;
float boardPosY = (canvasy - bitmapy) / 2;
canvas.drawBitmap(bmp2, boardPosX, boardPosY, null);
*/
}
if (picto.is_enabled()) {
/* AÑADO UN BORDE */
/*
final int BORDER_WIDTH = 1;
final int BORDER_COLOR = Color.WHITE;
Bitmap res = Bitmap.createBitmap(bmp1.getWidth() + 2 * BORDER_WIDTH,
bmp1.getHeight() + 2 * BORDER_WIDTH,
bmp1.getConfig());
Canvas c = new Canvas(res);
Paint p = new Paint();
p.setColor(BORDER_COLOR);
c.drawRect(0, 0, res.getWidth(), res.getHeight(), p);
p = new Paint(Paint.FILTER_BITMAP_FLAG);
c.drawBitmap(res, BORDER_WIDTH, BORDER_WIDTH, p);
*/
/* FIN BORDE */
/*
Drawable d = null;
imageView.setImageDrawable(d);
imageView.setAdjustViewBounds(true);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setBackgroundColor(Color.WHITE); //providing color to the background.
imageView.setPadding(3, 3, 3, 3);//providing padding to the image.
imageView.setLayoutParams(new Gallery.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
*/
imageView.setImageAlpha(255);
imageView.setImageBitmap(bmp1);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
return imageView;
}
// Función que devuelve los píxeles equivalentes a los dps pasados
public int getPx(int dimensionDp) {
float density = PCBcontext.getContext().getResources().getDisplayMetrics().density;
return (int) (dimensionDp * density + 0.5f);
return PictoItemViewGenerator.getPictoView(
this.pictoLinkedList.get(position),
convertView,
parent
);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public void ttsPicto(Picto p, TextToSpeech tts){
//String input = lPictos.getFirst().get_translation();
if (p.is_enabled()){
public void ttsPicto(Picto p, TextToSpeech tts) {
if (p.is_enabled()) {
String input = p.get_translation();
//String input = "Geni, vaya fin de semana en el bater vas a pasar !!!";
Bundle params = new Bundle();
params.putString(TextToSpeech.Engine.KEY_PARAM_VOLUME, "1");
//tts.setPitch((float) 1);
//tts.setSpeechRate((float) 1);
tts.speak(input, TextToSpeech.QUEUE_FLUSH, params, null);
}
}
public void setColor(int newcolor){
color = newcolor;
}
}
\ No newline at end of file
package com.yottacode.pictogram.gui;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import com.yottacode.pictogram.R;
import com.yottacode.pictogram.dao.Picto;
import com.yottacode.pictogram.tools.PCBcontext;
import java.io.IOException;
/**
* This class is used for generating PictoViews which will be inserted inside a picto grid
* or a picto tape.
*/
public class PictoItemViewGenerator {
public static final int LAYOUT = R.layout.picto_grid_item;
public static View getPictoView(Picto picto, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(LAYOUT, parent, false);
}
RelativeLayout layoutWrapper = (RelativeLayout) convertView.findViewById(R.id.picto_grid_item_layout_wrapper);
FrameLayout layout = (FrameLayout) convertView.findViewById(R.id.picto_grid_item_layout);
ImageView pictoImage = (ImageView) convertView.findViewById(R.id.picto_grid_item_image);
ImageView redCrossImage = (ImageView) convertView.findViewById(R.id.picto_grid_item_redcross);
layoutWrapper.setVisibility(View.GONE);
layoutWrapper.setBackground(null);
layoutWrapper.setAlpha(0.25f);
layout.setBackgroundColor(convertView.getResources()
.getColor(R.color.picto_default_background));
redCrossImage.setVisibility(View.GONE);
pictoImage.setScaleX(1.0f);
pictoImage.setScaleY(1.0f);
pictoImage.setVisibility(View.GONE);
if (picto != null) {
if (!picto.is_invisible() && !picto.is_disabled()) {
layoutWrapper.setAlpha(1.00f);
}
try {
pictoImage.setImageBitmap(picto.get_bitmap(PCBcontext.getContext()));
if (!picto.is_invisible() || PCBcontext.getPcbdb().getCurrentUser().is_supervisor()) {
layoutWrapper.setVisibility(View.VISIBLE);
pictoImage.setVisibility(View.VISIBLE);
layoutWrapper.setBackground(convertView.getResources()
.getDrawable(R.drawable.picto_grid_item_border));
if (picto.is_magnify()) {
pictoImage.setScaleX(1.2f);
pictoImage.setScaleY(1.2f);
}
if (picto.is_disabled()) {
redCrossImage.setVisibility(View.VISIBLE);
}
if (picto.is_category()) {
layout.setBackgroundColor(picto.get_color());
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
return convertView;
}
}
......@@ -235,8 +235,6 @@ public class PictogramActivity extends Activity implements iVocabularyListener,
this.pictoCategoriesGridAdapter.addAll(this.sort(this.vocabulary.startSentence()));
this.pictoCategoriesGridAdapter.notifyDataSetChanged();
this.pictoGridAdapter.setColor(Color.parseColor("#AFAFAF"));
this.pictoCategoriesGridView.setEnabled(true);
this.pictoGridView.setEnabled(false);
......@@ -258,7 +256,6 @@ public class PictogramActivity extends Activity implements iVocabularyListener,
this.pictoGridAdapter.notifyDataSetChanged();
if (this.currentCategory.get_color() != -1) {
this.pictoGridAdapter.setColor(this.currentCategory.get_darkner_color());
this.pictoGridView.setBackgroundColor(this.currentCategory.get_color());
}
......@@ -648,8 +645,6 @@ public class PictogramActivity extends Activity implements iVocabularyListener,
tapeAdapter.deleteAll();
tapeAdapter.notifyDataSetChanged();
pictoGridAdapter.setColor(Color.parseColor("#AFAFAF"));
RelativeLayout rl = (RelativeLayout) findViewById(R.id.pictogramLayout);
rl.setBackgroundColor(Color.parseColor("#BDBDBD"));
......
package com.yottacode.pictogram.gui;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.FrameLayout;
import android.widget.ImageView;
import com.yottacode.pictogram.R;
import com.yottacode.pictogram.dao.Picto;
import com.yottacode.pictogram.tools.PCBcontext;
import com.yottacode.pictogram.tts.TTSHelper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Locale;
/**
* Created by emblanco on 9/10/14.
* @version 2.2
* @author Miguel Ángel García
*/
public class TapeAdapter extends BaseAdapter {
//private Context mContext;
private LinkedList<Picto> lPictos;
private LinkedList<Picto> pictoLinkedList;
public TapeAdapter(){
//mContext = c;
lPictos = new LinkedList<Picto>(); // the list begins empty
pictoLinkedList = new LinkedList<Picto>(); // the list begins empty
}
@Override
public int getCount(){
return lPictos.size();
return pictoLinkedList.size();
}
public Picto getItem(int position) {
// este método debería devolver el objeto que esta en esa posición del
// adapter.
return lPictos.get(position);
return pictoLinkedList.get(position);
}
public long getItemId(int position) {
......@@ -59,19 +47,19 @@ public class TapeAdapter extends BaseAdapter {
// AÑADIR ITEM AL ADAPTADOR
public void addItem(Picto p){
lPictos.add(p);
pictoLinkedList.add(p);
}
// ELIMINAR ITEM DEL ADAPTADOR
public void deleteItem(int position){
lPictos.remove(position);
pictoLinkedList.remove(position);
}
// ELIMINAR el último ITEM DEL ADAPTADOR
public void deleteLastView(){
// Controlar excepcion al intentar eliminar el último cuando no hay elementos
try{
lPictos.removeLast();
pictoLinkedList.removeLast();
}catch(ArrayIndexOutOfBoundsException exception){
Log.e("Excepción", "ArrayIndexOutOfBounds: " + exception.getMessage());
}
......@@ -79,16 +67,16 @@ public class TapeAdapter extends BaseAdapter {
// ELIMINAR TODOS LOS ITEMS DEL ADAPTADOR
public void deleteAll(){
lPictos.clear();
pictoLinkedList.clear();
}
// DEVUELVE TODOS LOS ELEMENTOS
public LinkedList<Picto> getAll(){ return lPictos; }
public LinkedList<Picto> getAll(){ return pictoLinkedList; }
// Devuelvo la cadena actual como un String
public String getAllAsString(){
String complete = "";
Iterator<Picto> iterator = lPictos.iterator();
Iterator<Picto> iterator = pictoLinkedList.iterator();
while (iterator.hasNext()) {
Picto current = iterator.next();
complete += " " + current.get_translation();
......@@ -97,47 +85,28 @@ public class TapeAdapter extends BaseAdapter {
}
// DEVUELVE último elemento
public Picto getLastItem(){ return lPictos.getLast(); }
public Picto getLastItem(){
return pictoLinkedList.getLast();
}
// Devuelve true o false si tiene o no elementos la lista de pictos
public boolean hasElements(){
return (lPictos.size() > 0);
return (pictoLinkedList.size() > 0);
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
ImageView view;
if(convertView == null){
view = new ImageView(PCBcontext.getContext());
// Ancho y alto de la imagen en la vista donde se va a colocar (en pixels)
view.setLayoutParams(new GridView.LayoutParams(80, 60));
view.setScaleType(ImageView.ScaleType.CENTER_CROP);
view.setPadding(5,5,5,5);
//view.setPadding(10,15,10,10);
}else{
view = (ImageView) convertView;
}
try{
view.setImageBitmap(lPictos.get(position).get_bitmap(PCBcontext.getContext()));
} catch (IOException e) {
e.printStackTrace();
}
return view;
}
// Función que devuelve los píxeles equivalentes a los dps pasados
public int getPx(int dimensionDp) {
float density = PCBcontext.getContext().getResources().getDisplayMetrics().density;
return (int) (dimensionDp * density + 0.5f);
return PictoItemViewGenerator.getPictoView(
this.pictoLinkedList.get(position),
convertView,
parent
);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public void ttsAllNew(TextToSpeech tts){
// DE PRUEBA
//String input = lPictos.getFirst().get_translation();
//String input = pictoLinkedList.getFirst().get_translation();
String input = getAllAsString();
//String input = "Geni, vaya fin de semana en el bater vas a pasar !!!";
......
......@@ -132,8 +132,9 @@ public class Img {
try {
this.bitmap=BitmapFactory.decodeStream(is);
if (this.bitmap.getWidth()>MAX_WIDTH) {
this.bitmap = new BitmapTools(this.bitmap).rescale(MAX_WIDTH / (float) this.bitmap.getWidth()).paintSquare(3, Color.DKGRAY).get();
this.bitmap = new BitmapTools(this.bitmap)
.rescale(MAX_WIDTH / (float) this.bitmap.getWidth())
.get();
}
}catch(java.lang.OutOfMemoryError err) {
Log.e(Img.class.getCanonicalName(), "Out of memory when decoding "+this.get_url());
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="7dp"
android:color="#de0707" />
<stroke android:width="@dimen/picto_border_width" android:color="@color/picto_border" />
<corners android:radius="2dp" />
</shape>
\ No newline at end of file
......@@ -7,29 +7,30 @@
android:keepScreenOn="true"
android:id="@+id/pictogramLayout"
tools:context=".PictogramActivity"
android:padding="8dp">
android:padding="@dimen/small_padding">
<!-- android:keepScreenOn - To keep the screen bright as long as the app is visible (also forever) -->
<GridView
android:id="@+id/tape_grid_view"
android:layout_width="wrap_content"
android:layout_height="64dp"
android:padding="8dp"
android:layout_height="@dimen/picto_normal_height"
android:padding="@dimen/small_padding"
android:gravity="center"
android:numColumns="@integer/columns"
android:numColumns="10"
android:accessibilityLiveRegion="none"
android:background="@android:color/holo_red_light"
android:clickable="false"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:paddingRight="192dp">
android:paddingRight="192dp"
android:horizontalSpacing="@dimen/picto_grid_spacing">
</GridView>
<ImageButton
android:layout_width="96dp"
android:layout_height="64dp"
android:layout_width="@dimen/picto_normal_width"
android:layout_height="@dimen/picto_normal_height"
android:src="@drawable/ic_backspace_white_48dp"
android:id="@+id/button_delete"
android:layout_alignParentTop="true"
......@@ -40,8 +41,8 @@
android:background="@null" />
<ImageButton
android:layout_width="96dp"
android:layout_height="64dp"
android:layout_width="@dimen/picto_normal_width"
android:layout_height="@dimen/picto_normal_height"
android:src="@drawable/ic_play_circle_filled_white_48dp"
android:background="@null"
android:id="@+id/button_tts"
......@@ -66,14 +67,18 @@
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_below="@+id/tape_grid_view"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:numColumns="10"
android:gravity="center_vertical|center|center_horizontal"
android:paddingTop="32dp"
android:verticalSpacing="24dp"
android:background="@color/common_signin_btn_default_background"
android:layout_toEndOf="@+id/showPictoCategoriesViewButton">
android:background="#DDDDDD"
android:layout_alignParentEnd="true"
android:layout_toEndOf="@+id/showPictoCategoriesViewButton"
android:paddingLeft="@dimen/small_padding"
android:paddingTop="@dimen/small_padding"
android:paddingRight="@dimen/small_padding"
android:paddingBottom="@dimen/small_padding"
android:verticalSpacing="@dimen/picto_grid_spacing"
android:horizontalSpacing="@dimen/picto_grid_spacing">
</GridView>
<GridView
......@@ -82,12 +87,15 @@
android:layout_width="match_parent"
android:layout_below="@+id/tape_grid_view"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:numColumns="10"
android:gravity="center_vertical|center|center_horizontal"
android:paddingTop="32dp"
android:verticalSpacing="24dp"
android:background="#DDDDDD">
android:background="#DDDDDD"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:paddingLeft="@dimen/small_padding"
android:paddingTop="@dimen/small_padding"
android:horizontalSpacing="@dimen/picto_grid_spacing"
android:verticalSpacing="@dimen/picto_grid_spacing">
</GridView>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/image_border"/>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:id="@+id/picto_grid_item_layout_wrapper"
android:background="@drawable/picto_grid_item_border"
android:padding="@dimen/picto_border_width">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="@dimen/picto_normal_height"
android:id="@+id/picto_grid_item_layout"
android:background="@color/picto_default_background"
android:padding="@dimen/picto_padding">
<ImageView
android:id="@+id/picto_grid_item_image"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/picto_grid_item_redcross"
android:src="@drawable/redcross" />
</FrameLayout>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="picto_default_background" type="color">#CCFFFFFF</item>
<item name="picto_border" type="color">#AA000000</item>
<item name="blue" type="color">#FF33B5E5</item>
<item name="purple" type="color">#FFAA66CC</item>
<item name="green" type="color">#FF99CC00</item>
......
......@@ -2,4 +2,11 @@
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="small_padding">8dp</dimen>
<dimen name="picto_grid_spacing">4dp</dimen>
<dimen name="picto_border_width">1dp</dimen>
<dimen name="picto_padding">4dp</dimen>
<dimen name="picto_normal_height">80dp</dimen>
<dimen name="picto_normal_width">80dp</dimen>
</resources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment