Spostare la visualizzazione di text attraverso lo schermo integer

Ho sviluppato un'applicazione che mostra il tempo in un completo schermo. Le ore minuti e secondi vengono visualizzate al centro dello schermo. Quindi il mio objective è che, quando faccio clic su una delle presentazioni di text, sia in grado di scorarla attraverso tutto lo schermo e posizionarla where voglio …

Ho cercato di trovare un codice appropriato da applicare alla mia applicazione, e ho trovato un codice che rende il text all'image e quindi sposta quella image. Ma il problema è che i testi stanno aggiornando each secondo, quindi penso che la creazione di immagini each secondo non sia una buona idea …

  • aggiornare la galleria di immagini android con bitmap appena creata
  • Soluzione di cache di immagini locali per Android: Square Picasso vs Universal Image Loader
  • Sostituisci il gesto di Google Now
  • java.net.ConnectException: localhost / 127.0.0.1: 8080 - Connessione rifiutata
  • Condividi l'image senza WRITE_EXTERNAL_STORAGE?
  • Ottenere un errore: imansible trovare la class 'android.app.AppOpsManager', indicata dal metodo com.google.android.gms.common.GooglePlayServicesUtil.zza
  • Chiunque conosce un metodo per essere in grado di spostare textviews attraverso tutto lo schermo ??? Questa è una delle mie visualizzazioni di text

    private TextView txtHour; txtHour = (TextView)findViewById(R.id.TxtHour); txtHour.setOnLongClickListener(new OnLongClickListener{ .... 

    Non so cosa aggiungere a questo …. 🙁 Per favore AIUTO!

    EDIT: Secondo la prima risposta, dovrebbe essere il mio codice come questo?

      txtHour.setOnLongClickListener(new OnLongClickListener() { public void onLongClick(View v){ public void drag(MotionEvent event, View v) { RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) v.getLayoutParams(); switch(event.getAction()) { case MotionEvent.ACTION_MOVE: { params.topMargin = (int)event.getRawY() - (v.getHeight()); params.leftMargin = (int)event.getRawX() - (v.getWidth()/2); v.setLayoutParams(params); break; } case MotionEvent.ACTION_UP: { params.topMargin = (int)event.getRawY() - (v.getHeight()); params.leftMargin = (int)event.getRawX() - (v.getWidth()/2); v.setLayoutParams(params); break; } case MotionEvent.ACTION_DOWN: { v.setLayoutParams(params); break; } } }}); 

    EDIT 2: Finalmente questo è il codice risultato, è questo ok?

      package com.iamaner.T2Speech; //imports public class MAINActivity extends Activity{ private TextView txtHour; private TextView txtMinutes; private TextView txtSeconds; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); txtHour = (TextView)findViewById(R.id.TxtHour); txtMinutes = (TextView)findViewById(R.id.TxtMinute); txtSeconds = (TextView)findViewById(R.id.TxtSeconds); txtHour.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub drag(event, v); return false; }}); } public void drag(MotionEvent event, View v) { FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) v.getLayoutParams(); switch(event.getAction()) { case MotionEvent.ACTION_MOVE: {params.topMargin = (int)event.getRawY() - (v.getHeight()); params.leftMargin = (int)event.getRawX() - (v.getWidth()/2); v.setLayoutParams(params); break;} case MotionEvent.ACTION_UP: {params.topMargin = (int)event.getRawY() - (v.getHeight()); params.leftMargin = (int)event.getRawX() - (v.getWidth()/2); v.setLayoutParams(params); break;} case MotionEvent.ACTION_DOWN: {v.setLayoutParams(params); break;} }} } 

    E questo framelayout

      <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/your_layout" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/TxtHour" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15mm" android:textColor="#000000"/> <TextView android:id="@+id/TxtPoints1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/separator" android:textSize="15mm" android:textColor="#000000" android:layout_gravity="center" android:gravity="center"/> <TextView android:id="@+id/TxtMinute" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15mm" android:textColor="#000000" android:layout_gravity="center" android:gravity="center" /> <TextView android:id="@+id/TxtPoints2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/separator" android:textSize="15mm" android:textColor="#000000" android:layout_gravity="center" android:gravity="center"/> <TextView android:id="@+id/TxtSeconds" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15mm" android:textColor="#000000" android:layout_gravity="bottom|right" /> </FrameLayout> 

  • Implementazione di una list orizzontale all'interno di una list verticale in android
  • Utilizzo di attributo per modificare un colore dell'elemento disegnabile
  • API Google Sheets v4 - Come get l'ultima row con valore?
  • Causa: java.security.NoSuchProviderException: nessun provider di questo tipo: Crypto - Android N
  • Fotocamera Android: Discussioni? Quale dovrebbe fare ciò?
  • Come avviare il servizio Android da un'altra applicazione Android
  • 2 Solutions collect form web for “Spostare la visualizzazione di text attraverso lo schermo integer”

    Aggiungi questo al tuo onCreate: Miglior uso FrameLayout stesso.

      txtHour.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub drag(event, v); return false; } }); 

    E questo alla tua class di attività indipendentemente da qualsiasi metodo.

      public void drag(MotionEvent event, View v) { RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) v.getLayoutParams(); switch(event.getAction()) { case MotionEvent.ACTION_MOVE: { params.topMargin = (int)event.getRawY() - (v.getHeight()); params.leftMargin = (int)event.getRawX() - (v.getWidth()/2); v.setLayoutParams(params); break; } case MotionEvent.ACTION_UP: { params.topMargin = (int)event.getRawY() - (v.getHeight()); params.leftMargin = (int)event.getRawX() - (v.getWidth()/2); v.setLayoutParams(params); break; } case MotionEvent.ACTION_DOWN: { v.setLayoutParams(params); break; } } 
     public void drag(MotionEvent event, View v) { FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) v.getLayoutParams(); switch(event.getAction()) { case MotionEvent.ACTION_MOVE: { params.topMargin = (int)event.getRawY() - (v.getHeight()); params.leftMargin = (int)event.getRawX() - (v.getWidth()/2); v.setLayoutParams(params); break; } case MotionEvent.ACTION_UP: { params.topMargin = (int)event.getRawY() - (v.getHeight()); params.leftMargin = (int)event.getRawX() - (v.getWidth()/2); v.setLayoutParams(params); break; } case MotionEvent.ACTION_DOWN: { v.setLayoutParams(params); break; } } } 

    Copia questo metodo alla class ur e lo chiami dentro il tuo ontouch () di textview. Qui suppongo di utilizzare Framelayout. Se non modificare i parametri di layout di conseguenza.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.