English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Метод реализации отображения только части изображения в Android

В этой статье рассказывается о методе программирования Android, который позволяет отображать только часть изображения. Предлагается к рассмотрению и использованию, подробности см. ниже:

Загрузка изображения и его отображение в Android-приложении - это очень простая задача. Как показать только часть изображения? Один из способов - обработать изображение в Photoshop, сохранить нужную часть как отдельное изображение, а затем загрузить и отобразить его в программе. Но это увеличит количество изображений в программе. Разрезание целого изображения на часть, которую вы хотите, также очень просто.

Реализованная ниже программа загружает изображение, преобразует его, чтобы оно занимало весь экран телефона, и затем показывает часть 100*100 в центре экрана.

Код ShowPoritionPictureActivity:

package com.iwin.zzs;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.WindowManager;
public class ShowPoritionPictureActivity extends Activity {
  /** При вызове первого создания активности. */
  Bitmap picRes;
  Bitmap showPic;
  // получение исходных размеров изображения
  int picWidth;
  int picHeight;
  private PoritionView poritonView = null;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // не отображать статусную строку
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    DisplayMetrics dm = new DisplayMetrics();
    this.getWindowManager().getDefaultDisplay().getMetrics(dm);
    // получение размеров экрана
    int screenWidth = dm.widthPixels; // горизонтальное разрешение
    int screenHeight = dm.heightPixels; // вертикальное разрешение
    picRes = BitmapFactory.decodeResource(this.getResources(), R.drawable.girl);
    // получение размеров изображения
    picWidth = picRes.getWidth();
    picHeight = picRes.getHeight();
    // расчет коэффициента масштабирования, новый размер делен на исходный размер
    float scaleWidth = ((float) screenWidth) / picWidth;
    float scaleHeight = ((float) screenHeight) / picHeight;
    // создание объекта matrix для работы с изображением
    Matrix matrix = new Matrix();
    // уменьшение изображения
    matrix.postScale(scaleWidth, scaleHeight);
    // Полученное новое изображение - это изображение, преобразованное и заполненное до всего экрана
    Bitmap picNewRes = Bitmap.createBitmap(picRes, 0, 0,picWidth, picHeight, matrix, true);
    // bitmap = Bitmap.createBitmap(400, 480, Bitmap.Config.ARGB_8888);
    // canvas=new Canvas();
    // canvas.setBitmap(bitmap);
    showPic = Bitmap.createBitmap(picNewRes, screenWidth/2-50, screenHeight/2-50, 100, 100);
    poritonView = new PoritionView(this);
    poritonView.setBitmapShow(showPic, screenWidth/2-50, screenHeight/2-50);
    setContentView(poritonView);
{}

Новый код класса PoritionView:

package com.iwin.zzs;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.view.View;
public class PoritionView extends View {
  private Bitmap showPic = null;
  private int startX = 0;
  private int startY = 0;
  public PoritionView(Context context) {
    super(context);
    // TODO Автоматически сгенерированный конструктор шаблона
  {}
  @Override
  protected void onDraw(Canvas canvas) {
    // TODO Автоматически сгенерированный метод шаблона
    super.onDraw(canvas);
    canvas.drawBitmap(showPic, startX, startY, null);
  {}
  public void setBitmapShow(Bitmap b, int x, int y)
  {
    showPic = b;
    startX = x;
    startY = y;
  {}
{}

Добавьте изображение gir.png в папку res/drawable проекта, и при запуске программы будет отображаться только средняя часть изображения 100x100.

Читатели, которые интересуются дополнительной информацией по теме Android, могут ознакомиться с нашими статьями: "Обзор навыков обработки графики и изображений в Android", "Введение и продвинутый tuition по разработке Android", "Обзор методов отладки и решения проблем в Android", "Обзор навыков работы с мультимедиа в Android (аудио, видео, запись и т.д.)", "Обзор использования основных компонентов в Android", "Обзор навыков работы с View в Android", "Обзор навыков работы с layout в Android" и "Обзор использования контроллеров в Android".

Надеюсь, что это руководство поможет вам в разработке Android-приложений.

Заявление: контент статьи был получен из Интернета, авторские права принадлежат соответствующему автору, материал был предоставлен пользователями Интернета в добровольном порядке, сайт не имеет права собственности, не underwent редактирование, и не несет ответственности за соответствующие юридические последствия. Если вы обнаружите подозрительный контент, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма, пожалуйста, замените # на @) для отчета, и предоставьте соответствующие доказательства. При подтверждении, сайт немедленно удаляет подозрительный контент,涉嫌侵权。

Основной учебник
Давай угадаем!