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 ImagePick
E 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