Android: прокрутка изображения

Джей Абузи показал решение в powershell. Вот то же самое, что и функция c #:

   /// <summary>
    /// Detect if this OS runs in a virtual machine
    /// 
    /// http://blogs.msdn.com/b/virtual_pc_guy/archive/2005/10/27/484479.aspx
    /// 
    /// Microsoft themselves say you can see that by looking at the motherboard via wmi
    /// </summary>
    /// <returns>false</returns> if it runs on a fysical machine
    public bool DetectVirtualMachine()
    {
        bool result = false;
      const  string  MICROSOFTCORPORATION ="microsoft corporation";
        try
        {
            ManagementObjectSearcher searcher =
                new ManagementObjectSearcher("root\\CIMV2","SELECT * FROM Win32_BaseBoard");

            foreach (ManagementObject queryObj in searcher.Get())
            {
               result =  queryObj["Manufacturer"].ToString().ToLower() == MICROSOFTCORPORATION.ToLower();
            }
            return result;
        }
        catch (ManagementException ex)
        {
            return result;
        }
    }
23
задан Tamás 15 August 2011 в 21:01
поделиться

2 ответа

Самый простой способ - imho использовать веб-просмотр и загрузить в него изображение через локальный файл HTML. Таким образом, вы также автоматически получите элементы управления масштабированием, если захотите их использовать. Для большого изображения (т.е. если оно имеет ширину 1000 или 3000 пикселей) вы заметите, что Android (Coliris) не очень хорошо отображает большие увеличенные изображения очень резкими, даже если исходные изображения резкие и несжатые). Это известная проблема. Решение для этого - разбить большое изображение на более мелкие плитки и снова собрать их вместе через html (div или таблицу). Я использую этот подход, чтобы предоставить пользователю карту метро (больше экрана и с возможностью прокрутки).

    WebView webView = (WebView)findViewById(R.id.webView);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);

    webView.loadUrl( "content://com.myapp.android.localfile/sdcard/myappdata/common/mtr_map.html");

Это может сработать для большинства случаев / «обычных приложений», хотя это зависит от вашего конкретного случая. Если вы говорите об изображении как о прокручиваемом фоне игры, оно может вам не пригодиться.

Вместо файла html вы также можете загрузить изображение напрямую (png, jpg). Если вам не нужны элементы управления масштабированием, просто отключите их.

6
ответ дан 28 November 2019 в 22:11
поделиться

Я так долго искал этот код, так что я хотел поделиться этим великим миром кода:

этот код взят из Activity, который имеет xml файл на backend содержащий ImageView под названием 'img'

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

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

}

сделал работу идеально для меня... горизонтальная и вертикальная прокрутка включена (включена)

единственный минус... вы можете прокрутить за край картинки... но это не проблема для меня... и потратив немного времени, вы можете легко реализовать эту функцию :)

удачи и веселья

.
29
ответ дан 28 November 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: