Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
yotta
/
pictogram
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
60
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
d2c1a88e
authored
Feb 08, 2017
by
german
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Interfaz del menu de los pictos modificado, añadido abrir desde galeria(falta funcionalidad)
parent
de4d53ee
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
66 additions
and
244 deletions
android/Pictogram/tabletlibrary/src/main/java/com/yottacode/pictogram/tabletlibrary/cropper/EditPictoActivity.java
android/Pictogram/tabletlibrary/src/main/java/com/yottacode/pictogram/tabletlibrary/gui/communicator/PictoMenu.java
android/Pictogram/tabletlibrary/src/main/java/com/yottacode/pictogram/tabletlibrary/gui/communicator/PictogramActivity.java
android/Pictogram/tabletlibrary/src/main/res/layout/edit_picto_layout.xml
android/Pictogram/tabletlibrary/src/main/java/com/yottacode/pictogram/tabletlibrary/cropper/EditPictoActivity.java
View file @
d2c1a88e
...
...
@@ -59,7 +59,7 @@ public class EditPictoActivity extends Activity {
Bitmap
imagePicto
=
BitmapFactory
.
decodeByteArray
(
byteArray
,
0
,
byteArray
.
length
);
cropImageView
.
setImageBitmap
(
imagePicto
);
/*
byteArray = getIntent().getByteArrayExtra("imageBackground");
/*byteArray = getIntent().getByteArrayExtra("imageBackground");
Bitmap imageBackground = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
backgroundImage.setImageBitmap(imageBackground);*/
...
...
android/Pictogram/tabletlibrary/src/main/java/com/yottacode/pictogram/tabletlibrary/gui/communicator/PictoMenu.java
View file @
d2c1a88e
...
...
@@ -40,6 +40,8 @@ import com.yottacode.pictogram.tools.PCBcontext;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
static
android
.
graphics
.
Color
.
BLACK
;
...
...
@@ -53,6 +55,7 @@ public class PictoMenu {
//Variables used on the picto menu (only supervisors)
private
static
final
int
CAMERA_PIC_REQUEST
=
1
;
private
static
final
int
GALLERY_PIC_REQUEST
=
2
;
private
RadialMenuWidget
PieMenu
;
private
ImageView
detail
;
...
...
@@ -83,8 +86,7 @@ public class PictoMenu {
activity
.
getIntent
().
putExtra
(
Picto
.
JSON_ATTTRS
.
FREE_ROW
,
row
);
activity
.
getIntent
().
putExtra
(
Picto
.
JSON_ATTTRS
.
FREE_COLUMN
,
col
);
}
activity
.
startActivityForResult
(
intent
,
SELECT_PICTURE
);
activity
.
startActivityForResult
(
intent
,
SELECT_PICTURE
);
}
...
...
@@ -190,173 +192,9 @@ public class PictoMenu {
}
public
void
createViewForCrop
(
final
Picto
picto
)
{
final
RelativeLayout
rl
=
new
RelativeLayout
(
PCBcontext
.
getContext
());
RelativeLayout
.
LayoutParams
params
=
new
RelativeLayout
.
LayoutParams
(
RelativeLayout
.
LayoutParams
.
MATCH_PARENT
,
RelativeLayout
.
LayoutParams
.
MATCH_PARENT
);
activity
.
addContentView
(
rl
,
params
);
rl
.
setBackgroundColor
(
argb
(
180
,
0
,
0
,
0
));
final
TextView
text
=
new
TextView
(
PCBcontext
.
getContext
());
final
CropImageView
imageToCrop
=
new
CropImageView
(
PCBcontext
.
getContext
());
final
Button
okButton
=
new
Button
(
PCBcontext
.
getContext
());
final
Button
cancelButton
=
new
Button
(
PCBcontext
.
getContext
());
rl
.
addView
(
imageToCrop
);
rl
.
addView
(
text
);
rl
.
addView
(
okButton
);
rl
.
addView
(
cancelButton
);
text
.
setWidth
(
200
);
imageToCrop
.
setMaxHeight
(
300
);
imageToCrop
.
setMaxWidth
(
650
);
LinearLayout
.
LayoutParams
params2
=
new
LinearLayout
.
LayoutParams
(
LinearLayout
.
LayoutParams
.
WRAP_CONTENT
,
LinearLayout
.
LayoutParams
.
WRAP_CONTENT
);
params2
.
gravity
=
Gravity
.
CENTER
;
imageToCrop
.
setLayoutParams
(
params2
);
//Ponerla en el view
imageToCrop
.
setImageResource
(
R
.
drawable
.
descarga
);
imageToCrop
.
setGuidelines
(
CropImageView
.
GUIDELINES_ON
);
//To show the guidelines
imageToCrop
.
setFixedAspectRatio
(
true
);
imageToCrop
.
setAspectRatio
(
1
,
1
);
text
.
setX
((
activity
.
getResources
().
getDisplayMetrics
().
widthPixels
/
2
)
-
(
text
.
getWidth
()/
2
));
text
.
setY
(
5
);
text
.
setTextColor
(
Color
.
WHITE
);
text
.
setText
(
R
.
string
.
titleCropper
);
text
.
setTextSize
(
24
);
//Obtener imagen tras camara
okButton
.
setText
(
R
.
string
.
crop
);
okButton
.
setTextSize
(
20
);
okButton
.
setWidth
(
100
);
//okButton.setGravity(Gravity.BOTTOM);
cancelButton
.
setText
(
R
.
string
.
cancel
);
cancelButton
.
setTextSize
(
20
);
cancelButton
.
setWidth
(
100
);
//cancelButton.setGravity(Gravity.BOTTOM);
okButton
.
setX
(
activity
.
getResources
().
getDisplayMetrics
().
widthPixels
/
2
-
okButton
.
getWidth
()
-
10
);
okButton
.
setY
(
activity
.
getResources
().
getDisplayMetrics
().
heightPixels
-
20
);
cancelButton
.
setX
((
activity
.
getResources
().
getDisplayMetrics
().
widthPixels
/
2
)
+
cancelButton
.
getWidth
()
+
10
);
cancelButton
.
setY
(
activity
.
getResources
().
getDisplayMetrics
().
heightPixels
-
20
);
okButton
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
final
Bitmap
croppedImage
=
imageToCrop
.
getCroppedImage
();
Bitmap
scaled
=
null
;
scaled
.
createScaledBitmap
(
croppedImage
,
96
,
96
,
false
);
imageToCrop
.
setImageBitmap
(
scaled
);
}
});
cancelButton
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
rl
.
removeAllViewsInLayout
();
rl
.
removeAllViewsInLayout
();
rl
.
setVisibility
(
View
.
GONE
);
}
});
}
/**Function for open a new View for change the expression of a picto
*
* @param picto
*/
public
void
createViewForExpression
(
final
Picto
picto
){
ll
=
new
RelativeLayout
(
PCBcontext
.
getContext
());
RelativeLayout
.
LayoutParams
params
=
new
RelativeLayout
.
LayoutParams
(
RelativeLayout
.
LayoutParams
.
MATCH_PARENT
,
RelativeLayout
.
LayoutParams
.
MATCH_PARENT
);
activity
.
addContentView
(
ll
,
params
);
ll
.
setBackgroundColor
(
argb
(
180
,
0
,
0
,
0
));
ll
.
setClickable
(
false
);
//Parameters for hide navigation bar when u save or cancel
final
View
decorView
=
activity
.
getWindow
().
getDecorView
();
final
int
uiOptions
=
View
.
SYSTEM_UI_FLAG_HIDE_NAVIGATION
/*| View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE*/
;
final
EditText
leyenda
=
new
EditText
(
PCBcontext
.
getContext
());
leyenda
.
setBackgroundColor
(
rgb
(
221
,
221
,
211
));
leyenda
.
setWidth
(
400
);
leyenda
.
setMaxLines
(
1
);
leyenda
.
setClickable
(
true
);
leyenda
.
setTextSize
(
25
);
leyenda
.
setX
(
activity
.
getResources
().
getDisplayMetrics
().
widthPixels
/
2
-
300
);
leyenda
.
setY
(
activity
.
getResources
().
getDisplayMetrics
().
heightPixels
/
2
-
50
);
leyenda
.
setTextColor
(
BLACK
);
if
(
picto
.
get_translation
()!=
null
&&
picto
!=
null
){
leyenda
.
setText
(
picto
.
get_translation
());
}
else
{
leyenda
.
setText
(
"Sin Descripción"
);
}
//Mostrar teclado automaticamente
final
InputMethodManager
imm
=
(
InputMethodManager
)
activity
.
getSystemService
(
Context
.
INPUT_METHOD_SERVICE
);
ImageButton
botonOk
=
new
ImageButton
(
PCBcontext
.
getContext
());
botonOk
.
setImageResource
(
android
.
R
.
drawable
.
ic_menu_save
);
botonOk
.
setX
(
activity
.
getResources
().
getDisplayMetrics
().
widthPixels
/
2
+
110
);
botonOk
.
setY
(
activity
.
getResources
().
getDisplayMetrics
().
heightPixels
/
2
-
50
);
botonOk
.
setBackgroundColor
(
rgb
(
221
,
221
,
221
));
botonOk
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
picto
.
set_translation
(
leyenda
.
getText
().
toString
());
imm
.
hideSoftInputFromWindow
(
leyenda
.
getWindowToken
(),
0
);
picto
.
set_local_status
(
true
);
if
(!
picto
.
is_local
())
{
new
PictoUploader
(
picto
).
uploadState
();
PCBcontext
.
getActionLog
().
log
(
new
VocabularyAction
(
VocabularyAction
.
ALTERATTRS
,
picto
));
}
activity
.
getCurrentPictoGridAdapter
().
notifyDataSetChanged
();
ll
.
setVisibility
(
View
.
GONE
);
ll
.
removeAllViewsInLayout
();
//Hide navigation bar
//activity.refresh();
decorView
.
setSystemUiVisibility
(
uiOptions
);
}
});
ImageButton
botonSalir
=
new
ImageButton
(
PCBcontext
.
getContext
());
botonSalir
.
setImageResource
(
android
.
R
.
drawable
.
ic_menu_close_clear_cancel
);
botonSalir
.
setX
(
activity
.
getResources
().
getDisplayMetrics
().
widthPixels
/
2
+
150
);
botonSalir
.
setY
(
activity
.
getResources
().
getDisplayMetrics
().
heightPixels
/
2
-
50
);
botonSalir
.
setBackgroundColor
(
rgb
(
221
,
221
,
221
));
botonSalir
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
imm
.
hideSoftInputFromWindow
(
leyenda
.
getWindowToken
(),
0
);
ll
.
setVisibility
(
View
.
GONE
);
ll
.
removeAllViewsInLayout
();
//Hide navigation bar
//activity.refresh();
decorView
.
setSystemUiVisibility
(
uiOptions
);
}
});
ll
.
addView
(
leyenda
);
ll
.
addView
(
botonOk
);
ll
.
addView
(
botonSalir
);
leyenda
.
requestFocus
();
imm
.
showSoftInput
(
leyenda
,
InputMethodManager
.
SHOW_FORCED
);
}
/**Function for build a radial menu
*
...
...
@@ -420,7 +258,7 @@ public class PictoMenu {
}
public
String
getName
()
{
return
"Close"
;
}
public
String
getLabel
()
{
return
null
;
}
public
int
getIcon
()
{
return
android
.
R
.
drawable
.
ic_menu_
close_clear_cancel
;
}
public
int
getIcon
()
{
return
android
.
R
.
drawable
.
ic_menu_
revert
;
}
public
List
<
RadialMenuWidget
.
RadialMenuEntry
>
getChildren
()
{
return
null
;
}
//Metodo para realizar acciones si se pulsa
public
void
menuActiviated
()
...
...
@@ -505,24 +343,17 @@ public class PictoMenu {
}
public
String
getName
()
{
return
"edit"
;
}
public
String
getLabel
()
{
return
null
;
}
public
int
getIcon
()
{
return
R
.
drawable
.
edit
;
}
public
int
getIcon
()
{
return
android
.
R
.
drawable
.
ic_menu_
edit
;
}
private
List
<
RadialMenuWidget
.
RadialMenuEntry
>
children
;
public
List
<
RadialMenuWidget
.
RadialMenuEntry
>
getChildren
()
{
return
children
;
}
public
void
menuActiviated
()
{
//ll.getChildAt(1).setX(ll.getChildAt(1).getX() + 30);
//children = new ArrayList<>(Arrays.asList(new EditTextPicto(p),new EditImage(p)));
ll
.
setVisibility
(
View
.
GONE
);
ll
.
removeAllViewsInLayout
();
/**Al presionar el boton de ajustes lanza la actividad de la camara*/
Intent
cameraIntent
=
new
Intent
(
android
.
provider
.
MediaStore
.
ACTION_IMAGE_CAPTURE
);
Log
.
i
(
"DETALLES"
,
"Texto del picto "
+
"'"
+
p
.
get_translation
()+
"'"
);
ll
.
getChildAt
(
1
).
setX
(
ll
.
getChildAt
(
1
).
getX
()
+
30
);
children
=
new
ArrayList
<>(
Arrays
.
asList
(
new
PickFromCamera
(
p
),
new
PickFromGallery
(
p
)));
//ll.setVisibility(View.GONE);
//ll.removeAllViewsInLayout();
if
(
p
!=
null
)
cameraIntent
.
putExtra
(
"pictoLegend"
,
p
.
get_translation
());
activity
.
startActivityForResult
(
cameraIntent
,
CAMERA_PIC_REQUEST
);
}
public
void
menuDisabled
(){
ll
.
getChildAt
(
1
).
setX
(
ll
.
getChildAt
(
1
).
getX
()
-
30
);
...
...
@@ -530,79 +361,57 @@ public class PictoMenu {
}
//Edit legend text of picto button
public
class
EditTextPicto
implements
RadialMenuWidget
.
RadialMenuEntry
public
class
PickFromCamera
implements
RadialMenuWidget
.
RadialMenuEntry
{
Picto
p
;
public
EditTextPicto
(
Picto
picto
){
public
PickFromCamera
(
Picto
picto
){
p
=
picto
;
}
public
String
getName
()
{
return
"editText"
;
}
public
String
getLabel
()
{
return
null
;
}
public
int
getIcon
()
{
return
R
.
drawable
.
edit_text
;
}
public
int
getIcon
()
{
return
android
.
R
.
drawable
.
ic_menu_camera
;
}
public
List
<
RadialMenuWidget
.
RadialMenuEntry
>
getChildren
()
{
return
null
;
}
public
void
menuActiviated
()
{
ll
.
setVisibility
(
View
.
GONE
);
ll
.
removeAllViewsInLayout
();
createViewForExpression
(
p
);
/**Al presionar el boton de ajustes lanza la actividad de la camara*/
Intent
cameraIntent
=
new
Intent
(
android
.
provider
.
MediaStore
.
ACTION_IMAGE_CAPTURE
);
Log
.
i
(
"DETALLES"
,
"Texto del picto "
+
"'"
+
p
.
get_translation
()+
"'"
);
if
(
p
!=
null
)
{
//cameraIntent.putExtra("pictoLegend", p.get_translation());
activity
.
setPicto
(
p
);
}
activity
.
startActivityForResult
(
cameraIntent
,
CAMERA_PIC_REQUEST
);
}
public
void
menuDisabled
(){}
}
public
class
EditImage
implements
RadialMenuWidget
.
RadialMenuEntry
public
class
PickFromGallery
implements
RadialMenuWidget
.
RadialMenuEntry
{
Picto
p
;
public
EditImage
(
Picto
picto
){
public
PickFromGallery
(
Picto
picto
){
p
=
picto
;
}
public
String
getName
()
{
return
"editImage"
;
}
public
String
getLabel
()
{
return
null
;
}
public
int
getIcon
()
{
return
R
.
drawable
.
edit_picture
;
}
public
int
getIcon
()
{
return
android
.
R
.
drawable
.
ic_menu_gallery
;
}
public
List
<
RadialMenuWidget
.
RadialMenuEntry
>
getChildren
()
{
return
null
;
}
public
void
menuActiviated
()
{
/**TODO: Llamar a la interfaz de editar foto*/
Toast
.
makeText
(
PCBcontext
.
getContext
(),
"Editar Imagen"
,
Toast
.
LENGTH_SHORT
).
show
();
ll
.
removeAllViewsInLayout
();
createViewForCrop
(
p
);
//activity.setContentView(R.layout.edit_picto_layout);
/*
ll = (RelativeLayout) activity.findViewById(R.id.TotalLayout);
activity.addContentView(ll,ll.getLayoutParams());
ll.setBackgroundColor(argb(180,0,0,0));
final CropImageView cropImageView = (CropImageView) activity.findViewById(R.id.CropImageView);
cropImageView.setImageResource(R.drawable.descarga);
final ImageView croppedImageView = (ImageView) activity.findViewById(R.id.croppedImageView);
final Button cropButton = (Button) activity.findViewById(R.id.Button_crop);
final Button cancelButton = (Button) activity.findViewById(R.id.Button_cancel);
cropImageView.setGuidelines(CropImageView.GUIDELINES_ON); //To show the guidelines
cropImageView.setFixedAspectRatio(true);
cropImageView.setAspectRatio(1,1);
cropButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Bitmap croppedImage = cropImageView.getCroppedImage();
Bitmap scaled = null;
scaled.createScaledBitmap(croppedImage,96,96,false);
croppedImageView.setImageBitmap(scaled);
}
});
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ll.setVisibility(View.GONE);
ll.removeAllViewsInLayout();
}
});*/
if
(
p
!=
null
)
{
//cameraIntent.putExtra("pictoLegend", p.get_translation());
activity
.
setPicto
(
p
);
}
Intent
intent
=
new
Intent
();
intent
.
setType
(
"image/*"
);
intent
.
setAction
(
Intent
.
ACTION_GET_CONTENT
);
activity
.
startActivityForResult
(
intent
,
GALLERY_PIC_REQUEST
);
//addPicto(p.get_row(),p.get_column());
}
public
void
menuDisabled
(){}
}
}
android/Pictogram/tabletlibrary/src/main/java/com/yottacode/pictogram/tabletlibrary/gui/communicator/PictogramActivity.java
View file @
d2c1a88e
...
...
@@ -63,7 +63,9 @@ import org.json.JSONException;
import
org.json.JSONObject
;
import
java.io.ByteArrayOutputStream
;
import
java.io.FileNotFoundException
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.LinkedList
;
...
...
@@ -74,6 +76,7 @@ import java.util.concurrent.TimeUnit;
public
class
PictogramActivity
extends
Activity
implements
VocabularyTalk
.
iVocabularyListener
{
private
Picto
picto
=
null
;
private
static
final
int
CAMERA_PIC_REQUEST
=
1
;
private
static
final
int
GALLERY_PIC_REQUEST
=
2
;
// Main layout for this activity
...
...
@@ -684,6 +687,14 @@ public class PictogramActivity extends Activity implements VocabularyTalk.iVocab
}
}
public
Picto
getPicto
()
{
return
picto
;
}
public
void
setPicto
(
Picto
picto
)
{
this
.
picto
=
picto
;
}
/* *********************************************************************************************
* Event listener classes
* ********************************************************************************************/
...
...
@@ -1090,7 +1101,7 @@ protected void showOnlyTape(boolean onlyTape) {
case
CAMERA_PIC_REQUEST:
//Captura de foto
if
(
data
!=
null
)
{
imagen
=
(
Bitmap
)
data
.
getExtras
().
get
(
"data"
);
legend
=
data
.
getExtras
().
getString
(
"picto
Text
"
);
/**AQUI DEBERIA OBTENER EL LEGEND EN EL CASO DE QUE QUIERA EDITAR LA IMAGEN DE UN PICTO
legend
=
data
.
getExtras
().
getString
(
"picto
Legend
"
);
/**AQUI DEBERIA OBTENER EL LEGEND EN EL CASO DE QUE QUIERA EDITAR LA IMAGEN DE UN PICTO
NO FUNCIONA DEVUELVE NULL ¿?¿?¿WHY?¿?¿*/
Log
.
i
(
"DETALLES"
,
"Llega el intent del menú, con texto: "
+
legend
);
...
...
@@ -1100,6 +1111,19 @@ protected void showOnlyTape(boolean onlyTape) {
break
;
case
GALLERY_PIC_REQUEST:
//Galeria
Uri
selectedImage
=
data
.
getData
();
if
(
selectedImage
!=
null
)
{
InputStream
imageStream
=
null
;
try
{
imageStream
=
getContentResolver
().
openInputStream
(
selectedImage
);
}
catch
(
FileNotFoundException
e
)
{
e
.
printStackTrace
();
}
// Transformamos la URI de la imagen a inputStream y este a un Bitmap
imagen
=
BitmapFactory
.
decodeStream
(
imageStream
);
}
/*Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
...
...
@@ -1109,32 +1133,22 @@ protected void showOnlyTape(boolean onlyTape) {
String filePath = cursor.getString(columnIndex);
cursor.close();
imagen
=
BitmapFactory
.
decodeFile
(
filePath
);
imagen = BitmapFactory.decodeFile(filePath);
*/
break
;
}
/** Tras echar foto llamar a la actividad de recortar y le paso la leyenda para si tiene anteriormente o null, y la imagen a recortar */
this
.
launchActivity
(
legend
!=
null
?
legend
:
null
,
imagen
);
this
.
launchActivity
(
imagen
);
}
/**Para cambiar la activity de PictogramActivity a EditPictoActivity
*
* @param textLegend
* @param image
*/
public
void
launchActivity
(
String
textLegend
,
Bitmap
image
){
//Para hacer el pantallazo
/*View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);*/
public
void
launchActivity
(
Bitmap
image
){
Intent
intent
=
new
Intent
(
this
,
EditPictoActivity
.
class
);
finish
();
...
...
@@ -1149,9 +1163,9 @@ protected void showOnlyTape(boolean onlyTape) {
byte
[]
byteArray
=
stream
.
toByteArray
();
intent
.
putExtra
(
"imagePicto"
,
byteArray
);
if
(
textLegend
!=
null
)
{
//Si es editar un picto anterior
Log
.
i
(
"DETALLES"
,
"Lanza el intent a recortar con texto: "
+
textLegend
);
intent
.
putExtra
(
"textPicto"
,
textLegend
)
;
if
(
picto
!=
null
)
{
//Si es editar un picto anterior
intent
.
putExtra
(
"textPicto"
,
picto
.
get_translation
()
);
picto
=
null
;
}
}
else
{
Log
.
i
(
"Detalles"
,
"Activity sin imagen"
);
...
...
android/Pictogram/tabletlibrary/src/main/res/layout/edit_picto_layout.xml
View file @
d2c1a88e
...
...
@@ -56,7 +56,6 @@
android:layout_height=
"wrap_content"
android:adjustViewBounds=
"true"
android:scaleType=
"centerInside"
app:srcCompat=
"@drawable/descarga"
android:layout_marginLeft=
"5dp"
android:maxWidth=
"650px"
android:maxHeight=
"250px"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment