Ora devo mettere l'immagine regolabile e scalabile anche alle funzioni che permettono di modificare l'immagine.
Vediamo un po' come fare...
Innanzitutto, da dove parte il codice?
Eccolo:
//LISTENER PER IL BOTTONE IMGBUTTON CHE MODIFICA LE IMMAGINI:
imgButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setData(Uri.parse("content://media/external/images/media"));
startActivityForResult(intent, 0);
}
});
Ecco, questo permette di andare direttamente alla memoria a prendere un'immagine per sostituirla a quella che c'era precedentemente.Questo non va bene.
Dovrei riaprire invece il form ImagePick.
Vediamo il codice che lo apre...
//LISTENER PER CREARE UNA NUOVA IMMAGINE
mainLayout.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if(settingMode){
Intent intent=new Intent(MainActivity.this,ImagePick.class);
intent.putExtra("Categoria", currentCat);
intent.putExtra("CoordX", mlX);
intent.putExtra("CoordY", mlY);
startActivity(intent);
}
return true;
}
});
Ecco: è un Intent esplicito che semplicemente apre ImagePickE vi immette la categoria corrente, la coordinata X e la coordinata Y di dove è stato esercitato il tocco.
Ma dove prende le variabili mlX e mlY?
Da qui:
mainLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mlX=(int)event.getX();
mlY=(int)event.getY();
scrollView.requestDisallowInterceptTouchEvent(false);
ActiveOne=null;
for(int i=0;i<mainLayout.getChildCount();i++){
((ViewGroup)mainLayout.getChildAt(i)).getChildAt(numEtichetta).setBackgroundColor(Color.WHITE);
}
button.setVisibility(View.INVISIBLE);
imgButton.setVisibility(View.INVISIBLE);
return false;
}
});
che è il listener del tocco di mainLayout.Ristudiamoci il codice:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras=getIntent().getExtras();
categoria =extras.getString("Categoria");
coordX=extras.getInt("CoordX");
coordY=extras.getInt("CoordY");
setContentView(R.layout.activity_image_pick);
mainLayout=(RelativeLayout)findViewById(R.id.mainLayout);
//inizializzazione della jImage
jImage=new JImage();
//creo una nuova istanza di Immagine, chiamata img.
img=new Immagine(this);
mainLayout.addView(img);
img.getLayoutParams().width=300;
img.getLayoutParams().height=300;
img.setX(50);
img.setY(70);
//inizializzazioni delle variabili oggetto dei controlli presenti nell'activity
editText=(EditText)findViewById(R.id.editText1);
editText.setVisibility(View.INVISIBLE);
radioGroup=(RadioGroup)findViewById(R.id.radioGroup1);
radioGroup.setVisibility(View.INVISIBLE);
bttInvia=(Button)findViewById(R.id.button1);
bttInvia.setVisibility(View.INVISIBLE);
bttAnnulla=(Button)findViewById(R.id.button2);
bttPick=(Button)findViewById(R.id.bttPick);
//AL TOCCO DEL PULSANTE, PER CARICARE LE IMMAGINI DALLO STORAGE
bttPick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setData(Uri.parse("content://media/external/images/media"));
startActivityForResult(intent,0);
}
});
Ecco: dovendo caricare ImagePick per scegliere un'immagine ex novo, abbiamo questa inizializzazione dei vari controlli:
//inizializzazioni delle variabili oggetto dei controlli presenti nell'activity editText=(EditText)findViewById(R.id.editText1); editText.setVisibility(View.INVISIBLE); radioGroup=(RadioGroup)findViewById(R.id.radioGroup1); radioGroup.setVisibility(View.INVISIBLE); bttInvia=(Button)findViewById(R.id.button1); bttInvia.setVisibility(View.INVISIBLE); bttAnnulla=(Button)findViewById(R.id.button2); bttPick=(Button)findViewById(R.id.bttPick);La casella di testo dove digitare il nome dell'immagine è invisibile;
i radiobuttons per selezionare se si tratti di un'immagine normale o di una categoria sono invisibili;
Il pulsante Invia è invisibile.
Solo il pulsante Annulla è visibile, come lo è quello che ho aggiunto per andare ad aprire la memoria in modo da selezionare l'immagine.
Qui, invece, devo fare in modo che il nome e il tipo siano già determinate. Dunque su editText deve già figurare il nome dell'immagine e su RadioButtons deve già figurare il tipo. E quindi questi controlli devono essere già visibili.
Forse conviene aprire un altro form per evitare confusioni terribili?
Forse è meglio, sì. Semmai una volta entrato nel meccanismo potrò utilizzare lo stesso form con maggior possibilità di non commettere errori.
Correggo solo l'allineamento del button che carica l'immagine e del controllo Immagine, e ne rendo uguali le ampiezze, giusto per un fatto estetico.
editText=(EditText)findViewById(R.id.editText1);
editText.setVisibility(View.INVISIBLE);
radioGroup=(RadioGroup)findViewById(R.id.radioGroup1);
radioGroup.setVisibility(View.INVISIBLE);
bttInvia=(Button)findViewById(R.id.button1);
bttInvia.setVisibility(View.INVISIBLE);
bttAnnulla=(Button)findViewById(R.id.button2);
bttPick=(Button)findViewById(R.id.bttPick);
bttPick.setX(img.getX());
bttPick.getLayoutParams().width=img.getLayoutParams().width;
E vediamo se funziona...Okay, funziona!
Passiamo a realizzare l'activity per il cambio di immagine.
Nessun commento:
Posta un commento