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

طريقة تحقيق عرض الصور الكبيرة بشكل متغير في Android

هذا المقال يشرح كيفية تنفيذ عرض الصور الكبيرة في تطبيقات اندرويد. أشارككم هذا لمساعدتكم في التفكير، كما يلي:

السؤال:

لدي صورة كبيرة نسبياً، على سبيل المثال، طولها وعرضها ضعف حجم الشاشة، وأريد تنفيذ وظيفة أولى هي عرض الصورة في منتصف الشاشة، حيث أن الصورة كبيرة بشكل واضح يمكن فقط عرض جزء منها، ثم يمكن من خلال سحبها تحقيق ر滚动 سلسة (لا يمكن رؤية أثر تحديث التحرك).

就像google地图一样,如果用mapView这个控件,那么可以在屏幕上拖动整个地图,但是由于地图信息量太大,如果一次拖动过快,那么屏幕会暂时显示出一些刷新痕迹(灰白的格子)。

想使用mapView来加载已有图片,但是没有成功,后来也使用了Srollview控件,和最常用的imageView,还是没有成功。

解决:

经过大量查资料,使用imageView配合onTouch事件,可以解决。

关键代码:

布局文件中imageView控件如下

<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"
/>

Activity文件中主要代码如下

@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;
    }
  });
}

النتيجة بعد التنفيذ كالتالي:

الصورة الأصلية:

النتيجة في المحاكي:

لمزيد من المعلومات المتعلقة بAndroid، يمكن للقراء المهتمين الرجوع إلى موضوعات هذا الموقع: 'مجموع تقنيات معالجة الصور والرسوم البيانية في Android'، 'دليل تدريب Android من البداية إلى المتقدم'، 'مجموع تقنيات الت调试 والتحقق من الأخطاء في Android'، 'مجموع تقنيات التشغيل的多媒体 (الصوت، الفيديو، التسجيل، إلخ)'، 'مجموع استخدامات العناصر الأساسية في Android'، 'مجموع تقنيات View في Android'، 'مجموع تقنيات layout في Android'، وأيضًا 'مجموع استخدامات العناصر التحكم في Android'.

نتمنى أن تكون هذه المقالة قد ساعدت في تصميم برامج Android.

بيان: محتويات هذا المقال مستمدة من الإنترنت، حقوق الطبع محفوظة للمالك الأصلي، محتويات النص مقدمة من المستخدمين عبر الإنترنت وتم تحميلها بشكل تلقائي، لا يمتلك هذا الموقع حقوق الملكية ولا يقوم بتعديل النصوص يدويًا ولا يتحمل أي مسؤولية قانونية تتعلق بذلك. إذا كنت قد وجدت محتوى يشتبه في حقوق الطبع، فالرجاء إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (الرجاء استبدال # بـ @ عند إرسال البريد الإلكتروني) لتقديم الشكوى، وتقديم الدليل ذات الصلة، وسيقوم الموقع بإزالة المحتوى المزعوم بعد التحقق من صحة الشكوى.

أعجبك ذلك