public class MainActivity extends Activity { RelativeLayout mainLayout; LinearLayout ll; ScaleGestureDetector detector; float scala=1.f; int bmpWidth, bmpHeight; TextView textView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mainLayout=(RelativeLayout) findViewById(R.id.mainLayout); ll=new LinearLayout(this); RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); params.width=300; params.height=200; ll.setLayoutParams(params); ll.setBackgroundColor(Color.GREEN); mainLayout.addView(ll); detector=new ScaleGestureDetector(this,new listener()); bmpWidth=300; bmpHeight=200; textView=(TextView)findViewById(R.id.textView1); drawMatrix(); } public void drawMatrix(){ bmpWidth=(int) (Math.round(bmpWidth*scala)); bmpHeight=(int) (Math.round(bmpHeight*scala)); LayoutParams p=(LayoutParams)ll.getLayoutParams(); p.width=bmpWidth; if(bmpWidth>=400){ bmpWidth=400; bmpHeight=(int)(400/1.5); } if(bmpWidth<=220){ bmpWidth=220; bmpHeight=(int)(220/1.5); } p.height=bmpHeight; ll.setLayoutParams(p); textView.setText(bmpWidth+" "+bmpHeight); } @Override public boolean onTouchEvent(MotionEvent event){ detector.onTouchEvent(event); return true; } class listener extends ScaleGestureDetector.SimpleOnScaleGestureListener{ @Override public boolean onScale(ScaleGestureDetector detector){ scala=detector.getScaleFactor(); drawMatrix(); return true; } } }
Miei appunti liberi, senza pretesa di dire necessariamente sempre cose giuste o sensate, durante l'apprendimento e la pratica della programmazione
JavascriptProva
martedì 29 marzo 2016
Promemoria: codice per il "pinch zoom" di un layout.
Ho sistemato il problema ponendo un minimo e un massimo:
Iscriviti a:
Commenti sul post (Atom)
Nessun commento:
Posta un commento