English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Este exemplo descreve o método de implementação de exibição de rolagem de grandes imagens em programação Android. Compartilho com vocês para referência, conforme detalhado a seguir:
Problema:
Tenho uma imagem grande, por exemplo, com duas vezes o tamanho da tela tanto em largura quanto em altura, quero implementar a função de primeiro mostrar a imagem no centro, devido ao tamanho da imagem grande, obviamente só pode mostrar uma parte, e então, através de arrastar, realizar a rolagem suave da imagem (onde não é possível ver as marcas de atualização da rolagem).
Como no Google Maps, se usar o controle mapView, então é possível arrastar todo o mapa na tela, mas devido à grande quantidade de informações do mapa, se arrastar muito rapidamente, a tela temporariamente mostrará algumas marcas de atualização (retângulos cinza e branco).
Queria usar mapView para carregar uma imagem existente, mas não conseguiu, mais tarde também usou o controle ScrollView e o mais comum imageView, mas ainda não conseguiu.
Solução:
Após muita pesquisa, o uso de imageView em conjunto com o evento onTouch resolveu o problema.
Código-chave:
O controle imageView no arquivo de layout está abaixo
<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" />
O código principal do arquivo Activity está abaixo
@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 - (int) (my - curY)); mx = curX; my = curY; break; case MotionEvent.ACTION_UP: curX = event.getX(); curY = event.getY(); switcherView.scrollBy((int) (mx - (int) (my - curY)); break; } return true; } }); }
O efeito de implementação é o seguinte:
Imagem original:
Efeito no simulador:
Leitores interessados em mais conteúdo sobre Android podem consultar as seções especiais do site: 'Resumo de Técnicas de Processamento de Gráficos e Imagens no Android', 'Tutorial de Entrada e Avançado de Desenvolvimento Android', 'Resumo de Técnicas de Depuração e Solução de Problemas Comuns no Android', 'Resumo de Técnicas de Manipulação de Multimídia (Áudio, Vídeo, Gravação, etc.) no Android', 'Resumo de Uso de Componentes Básicos no Android', 'Resumo de Técnicas de View no Android', 'Resumo de Técnicas de Layout no Android' e 'Resumo de Uso de Controles no Android'.
Espero que o conteúdo deste artigo ajude a todos a melhorar o design de programas Android.
Declaração: O conteúdo deste artigo é extraído da Internet, pertence ao respectivo proprietário, foi contribuído e carregado voluntariamente pelos usuários da Internet, o site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade por questões legais relacionadas. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar e forneça provas relevantes. Apenas após a verificação, o site deletará o conteúdo suspeito de violação de direitos autorais.