forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Android (http://forum.boolean.name/forumdisplay.php?f=150)
-   -   Помогите новичку! (http://forum.boolean.name/showthread.php?t=16699)

Жека 17.10.2012 06:49

Ответ: Помогите новичку!
 
Вручную вот так мне видится решение:
Тебе нужно расширить метод onTouchEvent, на событие ACTION_DOWN запоминать координаты нажатия, как ты и делаешь, и затем на событие ACTION_MOVE вычислять разность координат, далее вручную всё сдвигать на полученные dx, dy.
Код:

case MotionEvent.ACTION_DOWN:
  prevX = (int)event.getX();
  prevY = (int)event.getY();
  break;

case MotionEvent.ACTION_MOVE:
  int x = (int)event.getX();
  int y = (int)event.getY();
  int dx = x-prevX;
  int dy = y-prevY;
  prevX = x;
  prevY = y;
  if(dx != 0 || dy) { //надо бы сдвинуть
    scroll(dx, dy);
  }
  break;

Тут же можно настроить чувствительность скролла, например чтобы он срабатывал при прокрутке на не менее какого-то расстояния.
Код:

int min = 5;
int dx = x-prevX;
if(Math.abs(dx) < min)
  dx = 0; //считаем что вообще не сдвинулись по Х
else
  prevX = x; //обновляем только если прокрутили нужное расстояние
int dy = y-prevY;
if(Math.abs(dy) < min)
  dy = 0;
else
  prevY = y;


Morganolla 14.12.2012 11:47

Ответ: Помогите новичку!
 
Ща делаю на Юнити 2D игруху и компилю в .apk файл. Нужен легкий и простой эмулятор андроида для ПиСи под ВиндуХР, который может запускать .apk файлы. Посоветуйте и порекомендуйте плиз, чтобы зря не тестить всякий хлам...

RegIon 14.12.2012 14:55

Ответ: Помогите новичку!
 
В комплект сдк входит AVD (android virtual device)
http://www.androidteach.ru/2012/05/avd.html вместо первого шага тебе просто щелкнуть на AVD Manager в меню пуск
Но мне не лень тестить на чистом железе (какая разница, все равно процесс установки проходит через adb, скорость слегка отличается)

moka 14.12.2012 15:12

Ответ: Помогите новичку!
 
Лучше конечно на железе, т.к. эмулятор обычно очень тормозит, т.к. полностью эмулируют другую структуру процессора - а это геморой конкретный..

pozitiffcat 20.12.2012 12:47

Ответ: Помогите новичку!
 
Цитата:

Сообщение от Костян (Сообщение 246539)
В комплект сдк входит AVD (android virtual device)
http://www.androidteach.ru/2012/05/avd.html вместо первого шага тебе просто щелкнуть на AVD Manager в меню пуск
Но мне не лень тестить на чистом железе (какая разница, все равно процесс установки проходит через adb, скорость слегка отличается)

ты даже не представляешь как виртуалка тормозит раз в 100 медленней

RegIon 20.12.2012 13:38

Ответ: Помогите новичку!
 
Цитата:

Сообщение от pozitiffcat (Сообщение 247093)
ты даже не представляешь как виртуалка тормозит раз в 100 медленней

Я установку имел ввиду.

NetBuilding 04.02.2013 16:33

Ответ: Помогите новичку!
 
Ребята, я совсем немного знаю Java.
Прошу сильно по голове не бить. Но пробую написать чтонибудь под андройд.
Вот сее творение:
Код:

package com.example.Test;

import android.app.Activity;
import android.os.Bundle;

public class MyActivity extends Activity
{
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    Views v = new Views(this);
    setContentView(v);
  }
}

Код:

package com.example.Test;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;

/**
 * Created with IntelliJ IDEA.
 * User: eat
 * Date: 01.02.13
 * Time: 19:53
 * To change this template use File | Settings | File Templates.
 */
public class Views extends View implements View.OnTouchListener
{

  float px = 0;
  float py = 0;

  public Views(Context context)
  {
    super(context);
  }

  @Override
  public void onDraw(Canvas canvas)
  {
    super.onDraw(canvas);

    int width = this.getWidth();
    int height = this.getHeight();

    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.WHITE);
    canvas.drawPaint(paint);
    paint.setColor(Color.BLACK);
    paint.setTextSize(30);
    canvas.drawText("размер экрана", px, py, paint);
    canvas.drawText(" " + height, 10, 50, paint);
    canvas.drawText(" " + width, 10, 100, paint);
  }

  @Override
  public boolean onTouch(View v, MotionEvent event)
  {
    px = event.getX();
    py = event.getY();
    return true;
  }

}

Хочу чтобы канвас был на весь экран и попробовать отресовывать текст в точках касания.
Но как вызвать перересовку при касании незнаю. Можете пояснить немного мне как это сделать. и вообще правильней организовать код.
я так понимаю события касания лучше в оддельном классе? А отрисовку в другом.
Как мне обратиться потом к методу отрисовки?


Часовой пояс GMT +4, время: 15:11.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot