dialog window by touching

  • 2 Antworten
  • Letztes Antwortdatum
G

guguli

Neues Mitglied
0
Hi leute,

ich möchte ein Dialog fenster erstellen. aber ohne auf nem Button zu klicken sondern einfach wenn ich auf Display drucke.

Wie kann ich das machen???
habt ihr nen Tipp für mich?

THX
 
Benutze dafür am besten einen OnTouchListener. Du muss"OnTouchListener" implementieren. Dann setzt du bei deinem jeweiligen den OnTouchListener mit view.setOnTouchListener(this). Und zum Schluss schreibst du die Funktion public boolean onTouch(View v, MotionEvent event){}, in der du den Code für ein neues Dialogfenster schreibst Mfg :)
 
ok ich hab schon sowas. also mein Code ist so :
Code:
	public boolean onTouchEvent(final MotionEvent event) {
		queueEvent(new Runnable() {
			// TODO: Speak about this thing, this functions need API8
			@SuppressLint("NewApi")
			public void run() {
	
				switch (event.getAction() & MotionEvent.ACTION_MASK) {
				case MotionEvent.ACTION_DOWN:
					offX = editMapRenderer.getxView();
					offY = editMapRenderer.getyView();
					coordsXFirst[0] = (int) event.getX(0);
					coordsYFirst[0] = (int) event.getY(0);
					
					startDialog();
					break;
				case MotionEvent.ACTION_POINTER_DOWN:
					offZ = editMapRenderer.getzView();
					coordsXFirst[0] = (int) event.getX(0);
					coordsYFirst[0] = (int) event.getY(0);
					coordsXFirst[1] = (int) event.getX(1);
					coordsYFirst[1] = (int) event.getY(1);
					zooming=true;
					break;
				case MotionEvent.ACTION_UP:
					zooming=false;
					break;

				default:

					// track all touches
					for (int i = 0; i < event.getPointerCount(); i++) {
						int id = event.getPointerId(i);

						// update all other pointer positions
						coordsX[id] = (int) event.getX(i);
						coordsY[id] = (int) event.getY(i);

					}

					// When only one finger
					if (event.getPointerCount() == 1 && !zooming)
						editMapRenderer.setPosition(offX
								+ (coordsX[0] - coordsXFirst[0])*editMapRenderer.getzView()*-1 / 1000.0f, offY
								+ (coordsYFirst[0] - coordsY[0])*editMapRenderer.getzView()*-1 / 1000.0f);
					// When two fingers
					float distanceOld = (float) FloatMath
							.sqrt((coordsXFirst[1] - coordsXFirst[0])
									* (coordsXFirst[1] - coordsXFirst[0])
									+ (coordsYFirst[1] - coordsYFirst[0])
									* (coordsYFirst[1] - coordsYFirst[0]));
					float distanceNew = (float) FloatMath
							.sqrt((coordsX[1] - coordsX[0])
									* (coordsX[1] - coordsX[0])
									+ (coordsY[1] - coordsY[0])
									* (coordsY[1] - coordsY[0]));
					float distanceMax = (float) FloatMath
							.sqrt(getWidth()
									* getWidth()
									+ getHeight()
									* getHeight());
					

					if (event.getPointerCount() == 2) {
						editMapRenderer.setZoom(offZ + (distanceNew
								- distanceOld)/(distanceMax/10));

					}
					break;
				}

ich muss da bei startDialog(); die methode so implementieren dass ich dann einen spinner ausgegeben bekomme.

aber wie geht denn das?
aslo den spinner hab ich in MapEditorActivity schon so gemacht:
Code:
final Spinner spinner= (Spinner)findViewById(R.id.my_colour_spinner);
	        
		ArrayAdapter adapter = new ArrayAdapter(this, R.layout.color_spiner_item, new String[] { "#F5F6F6", "#FFC0CB", "#FF0000", 
					"#C00000","#62492F","#DB3C00", "#98E01C" });
	    adapter.setDropDownViewResource(R.layout.color_spinner_dropdown_item);
	    spinner.setAdapter(adapter);

ICh weiss nicht wie ich das so machen kann dass der spinner nur dann sichtbar wird wenn man auf display klickt.

kann einer Helfen???
 
Zurück
Oben Unten