public class MainActivity extends Activity {
//DICHIARAZIONI
RelativeLayout mainLayout;
ImageView imageView;
ScrollView scrollView;
int deltaX;
int deltaY;
RelativeLayout.LayoutParams absParam;
//dichiarazioni delle variabili posizioni delle sottoViews
int posEtichetta=0;
int posCategoria=1;
//dichiarazione del database
Helper helper=new Helper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//DEFINIZIONI E ATTRIBUTI
mainLayout=(RelativeLayout)findViewById(R.id.mainLayout);
imageView=(ImageView)findViewById(R.id.imageView1);
/*
SalvaJElemento("bonazza","iniziale",R.drawable.bonazza,"base",0,0);
SalvaJElemento("caffè","iniziale",R.drawable.cafe,"base",200,0);
SalvaJElemento("faccia da culo","iniziale",R.drawable.faciadecul,"base",400,0);
*/
//helper.aggiorna();
Cursor c=helper.query("iniziale");
//per ogni record...
do{
LinearLayout layout=new LinearLayout(this);
//abbiamo preso i records dal database e li dobbiamo mostrare.
//Ho materializzato un nuovo layout per ospitare un record, e vi attribuisco
//dei parametri:
//Creo i parametri, vi attribuisco le coordinate prelevate dal database,
//e setto con essi i parametri del layout.
RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
params.leftMargin=c.getInt(5);
params.rightMargin=-250;
params.topMargin=c.getInt(6);
params.bottomMargin=-250;
Log.d("CARICAMENTO X",""+c.getInt(5));
Log.d("CARICAMENTO Y",""+c.getInt(6));
layout.setLayoutParams(params);
//ora setto altre caratteristiche del layout, ORIENTAMENTO e COLORE.
layout.setOrientation(LinearLayout.VERTICAL);
layout.setBackgroundColor(Color.WHITE);
//Mi occupo ore del CONTENUTO del layout:
//creo la CATEGORYVIEW e vi imposto il testo prelevato dal database,
//campo CATEGORIA.
TextView categoryView = new TextView(this);
categoryView.setText(c.getString(2));
//la setto di altezza zero
categoryView.setHeight(0);
//la setto come invisibile
categoryView.setVisibility(View.INVISIBLE);
//aggiungo al layout la TextView CATEGORIA
layout.addView(categoryView);
//creo la TIPOVIEW e vi imposto il testo prelevato dal database,
//campo TESTO (4° campo)
TextView tipoView =new TextView(this);
tipoView.setText(c.getString(4));
//la setto di altezza zero
tipoView.setHeight(0);
//la setto come invisibile
tipoView.setVisibility(View.INVISIBLE);
//aggiungo al layout la TextView TIPOVIEW
layout.addView(tipoView);
//creo la ImageView e ne setto l'immagine prelevando il dato BLOB dal database
//decodificandolo da array di bytes in Bitmap:
ImageView img=new ImageView(this);
Bitmap b=BitmapFactory.decodeByteArray(c.getBlob(3), 0, c.getBlob(3).length);
img.setImageBitmap(b);
//aggiungo al layout l'ImageView IMG:
layout.addView(img);
//creo la TextView e ne setto il testo
//prelevato dal database, campo ETICHETTA:
TextView textView =new TextView(this);
textView.setText(c.getString(1));
//aggiungo al layout la TextView ETICHETTA:
layout.addView(textView);
//Quindi AGGIUNGO AL MAINLAYOUT il mio layout:
mainLayout.addView(layout);
//e infine setto il TOUCH LISTENER del LAYOUT:
layout.setOnTouchListener(onTouchListener);
//passo al successivo record...
}while(c.moveToNext());
}
//CODICE DEL TOUCH LISTENER DA ATTRIBUIRE AI LAYOUT:
View.OnTouchListener onTouchListener=new View.OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
int X=(int)event.getRawX();
int Y=(int)event.getRawY();
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
absParam = (RelativeLayout.LayoutParams)v.getLayoutParams();
deltaX=X-absParam.leftMargin;
deltaY=Y-absParam.topMargin;
break;
case MotionEvent.ACTION_MOVE:
absParam = (RelativeLayout.LayoutParams)v.getLayoutParams();
absParam.leftMargin=X-deltaX;
absParam.topMargin=Y-deltaY;
v.setLayoutParams(absParam);
break;
case MotionEvent.ACTION_UP:
TextView ch =(TextView)((ViewGroup)v).getChildAt(3);
helper.aggiorna(ch.getText()+"", v.getLeft(), v.getTop());
break;
}
return true;
}
};
public void SalvaJElemento(String etichetta, String categoria, int idImage, String tipo, int x, int y){
//metto tutti i campi da salvare nel database in un unico parametro di tipo Elemento.
//istanzio un elemento
Elemento jElemento=new Elemento();
//Nell'ordine: stabilisco direttamente il campo "etichetta" preso direttamente
//dal parametro:
jElemento.etichetta=etichetta;
//stabilisco il campo "categoria", sempre direttamente, prendendolo dal parametro:
jElemento.categoria=categoria;
//L'immagine si trova invece nelle RISORSE, e devo usare il parametro Id che
//ne specifica la risorsa per prelevarla.
//creandone una Bitmap, rendendola più piccola e quindi riducendola di peso:
BitmapFactory.Options opzioni=new BitmapFactory.Options();
opzioni.inJustDecodeBounds=true;
BitmapFactory.decodeResource(getResources(), idImage, opzioni);
int fattore=1;
while(opzioni.outWidth/fattore>100 && opzioni.outHeight/fattore>100){
fattore*=2;
}
opzioni.inSampleSize=fattore;
opzioni.inJustDecodeBounds=false;
Bitmap bmp=BitmapFactory.decodeResource(getResources(), idImage,opzioni);
//ora creo uno stream di array di bytes e vi decomprimo la bitmap, per poi
//convertirla in array di bit.
ByteArrayOutputStream stream=new ByteArrayOutputStream();
bmp.compress(CompressFormat.JPEG, 20, stream);
byte[] byteArray=stream.toByteArray();
//e la carico nell'Elemento.
jElemento.immagine=byteArray;
//Imposto direttamente la stringa "tipo" prelevandola dai parametri
jElemento.tipo=tipo;
//Imposto direttamente le coordinate prelevandole dalle risorse di tipo intero
jElemento.x=x;
jElemento.y=y;
//Invoco infine, completato l'Elemento, il metodo save() del database
//per salvarvelo.
helper.save(jElemento);
}
}
Miei appunti liberi, senza pretesa di dire necessariamente sempre cose giuste o sensate, durante l'apprendimento e la pratica della programmazione
JavascriptProva
sabato 13 febbraio 2016
Il codice funzionante prima che venga istanziata la ScrollView
Un semplice promemoria: il codice funzionante prima che venga materializzata la ScrollView:
Iscriviti a:
Commenti sul post (Atom)
Nessun commento:
Posta un commento