English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Questo esempio illustra come implementare la visualizzazione scorrevole di immagini grandi in Android programmazione. Condivido con tutti per riferimento, come segue:
Problema:
Ho un'immagine abbastanza grande, ad esempio, le dimensioni di lunghezza e larghezza sono due volte il tamaño dello schermo, e la funzione che voglio implementare è prima mostrare l'immagine al centro, poiché l'immagine è troppo grande, è ovvio che solo una parte può essere visualizzata, quindi è possibile realizzare uno scorrimento fluido dell'immagine tramite lo spostamento (senza lasciare traccia di aggiornamento dello scorrimento).
Come nella mappa di Google, se si utilizza il controllo mapView, è possibile trascinare l'intera mappa sullo schermo. Tuttavia, poiché l'informazione della mappa è molto grande, se si trascina troppo velocemente, lo schermo mostrerà temporaneamente alcune tracce di aggiornamento (griglie grigie e bianche).
Volevo utilizzare mapView per caricare un'immagine esistente, ma non sono riuscito. Successivamente, ho anche utilizzato il controllo ScrollView e l'ImageView più comune, ma non sono riuscito a risolvere il problema.
Soluzione:
Dopo aver consultato molte fonti, l'uso di imageView in combinazione con l'evento onTouch può risolvere il problema.
Codice chiave:
Il controllo ImageView nel file di layout è il seguente
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/img" android:scaleType="center" android:background="#fff" android:src="@drawable/picName" />
Il codice principale dell'Activity è il seguente
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.xml_name_layout); final ImageView switcherView = (ImageView) this.findViewById(R.id.img); switcherView.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View arg0, MotionEvent event) { float curX, curY; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mx = event.getX(); my = event.getY(); break; case MotionEvent.ACTION_MOVE: curX = event.getX(); curY = event.getY(); switcherView.scrollBy((int) (mx - curX), (int) (my - curY)); mx = curX; my = curY; break; case MotionEvent.ACTION_UP: curX = event.getX(); curY = event.getY(); switcherView.scrollBy((int) (mx - curX), (int) (my - curY)); break; } return true; } }); }
L'effetto realizzato è il seguente:
Immagine originale:
Effetto nel simulatore:
Per i lettori interessati a ulteriori contenuti su Android, è possibile consultare le sezioni speciali del nostro sito: 'Concetti di elaborazione di immagini e grafica in Android', 'Manuale di入门与进阶教程 per Android', 'Riassunto delle tecniche di debug e soluzioni ai problemi comuni in Android', 'Riassunto delle tecniche di operazione multimediale in Android (audio, video, registrazione, ecc.)', 'Riassunto dell'uso dei componenti base in Android', 'Riassunto delle tecniche per View in Android', 'Riassunto delle tecniche per layout in Android' e 'Riassunto dell'uso dei controlli in Android'.
Spero che il contenuto di questo articolo possa essere utile per la progettazione di applicazioni Android.
Dichiarazione: Il contenuto di questo articolo è stato tratto da Internet, il copyright è proprietà del rispettivo proprietario, il contenuto è stato contribuito volontariamente dagli utenti di Internet e caricato autonomamente, il sito web non detiene il diritto di proprietà, non è stato editato manualmente e non assume alcuna responsabilità legale correlata. Se trovi contenuti sospetti di violazione del copyright, sei invitato a inviare una e-mail a notice#oldtoolbag.com (sostituisci # con @) per segnalare il problema e fornire prove pertinenti. Una volta verificata, il sito web rimuoverà immediatamente il contenuto sospetto di violazione del copyright.