Ваш браузер устарел. Рекомендуем обновить его до последней версии.




 



 


Delphi

 

 


 

 

 

 

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

     24     Вставка кода java. Перетаскивание виджетов по экрану. Двумерный массив случайных чисел. Рисование пальцем на экране. Анти-затухание экрана

Эта страничка будет интересна тому кто соскучился по java-коду. Интегрированная среда разработки приложений Sketchware позволяет писать или вставлять готовый java-код с помощью блока add source directly. Этот блок находится в разделе Operator. Если тебе не удобно писать код в узком окне редактирования, можно предварительно написать код в любом текстовом редакторе.

 

Пример 1     В этом приложении виджеты трех изображений можно пальцем передвигать в любую точку экрана. Ниже предлагается готовый для этого случая java-код.

 

imageview1.setOnTouchListener(new OnTouchListener() {PointF DownPT = new PointF();

PointF StartPT = new PointF();
@Override public boolean onTouch(View v, MotionEvent event) { int eid = event.getAction();
switch (eid) { case MotionEvent.ACTION_MOVE :

PointF mv = new PointF( event.getX() - DownPT.x, event.getY() - DownPT.y);
imageview1.setX((int)(StartPT.x+mv.x));
imageview1.setY((int)(StartPT.y+mv.y));
StartPT = new PointF( imageview1.getX(), imageview1.getY() );
break;
case MotionEvent.ACTION_DOWN :

DownPT.x = event.getX();
DownPT.y = event.getY();
StartPT = new PointF( imageview1.getX(), imageview1.getY() );
break;
case MotionEvent.ACTION_UP :

break; default :

break;

} return true;
}
}
);

 

Пример 2     Приложение выводит на экран массив размером 10 х 12 из случайных чисел в диапазоне от 0 до 9. При создании этого приложения программный java-код был написан непосредственно в мобильной среде Sketchware в окне редактирования блока add source directly.

 

Random random = new Random();

int a[][] = new int[10][12]; //объявление массива 10х14
int i, j; // номер строки и столбца

for (i = 0; i < 10; i++) // внешний цикл строк
{
for (j = 0; j < 12; j++) // внутренний цикл столбцов
{
a[i][j] = (random.nextInt(10)); //случайные от 0 до 9
}
}

for (i = 0; i < 10; i++)
{
for (j = 0; j < 12; j++)
{
textView.append(a[i][j] + " "); // вывод массива
}
textView.append("\n"); // перенос в следующую строку
}

 

 

 

 

 

 

 

Пример 3     Приложение позволяет рисовать на экране пальцем, после вставки готового java-кода в блок add source directly. Этот блок должен быть размещен в событие On activity createПредусмотрены выбор цвета, размер кисти, стирательная резинка и возможность записи рисунка в файл. Экран приложения можно ориентировать как вертикально так и горизонтально.

Вставка java-кода, который приведен в конце этого примера. 

  

Этот код не является обязательным. Что от делает разберись самостоятельно.

 

 

 

 

 

 

 

 

 

 

Выбор цвета рисования. Количество цветов в палитре назначишь сам.

 

 

 

 

 

 

 

 

 

 

Код для ластика просто устанавливает цвет рисования и цвет бумаги одинаковыми.

 

 

 

 

 

 

Очистка холста для рисования.

 

 

 

 

 

 

Выбор ширины кисти для рисования. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dv = new DrawingView(this);
linear1.addView(dv);
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setColor(Color.BLUE);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(24);
}
DrawingView dv; private Paint mPaint;
private Canvas mCanvas;
public class DrawingView extends View {
public int width;
public int height;
private Bitmap mBitmap;
private Path mPath;
private Paint mBitmapPaint;
Context context; private Paint circlePaint; private Path circlePath;
public DrawingView(Context c) {
super(c);
context=c;
mPath = new Path();
mBitmapPaint = new Paint(Paint.DITHER_FLAG);
circlePaint = new Paint();
circlePath = new Path();
circlePaint.setAntiAlias(true);
circlePaint.setColor(Color.BLUE);
circlePaint.setStyle(Paint.Style.STROKE);
circlePaint.setStrokeJoin(Paint.Join.MITER);
}
@Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); mCanvas = new Canvas(mBitmap); }
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawBitmap( mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath( mPath, mPaint); canvas.drawPath( circlePath, circlePaint);
invalidate(); }
private float mX, mY;
private static final float TOUCH_TOLERANCE = 4;
private void touch_start(float x, float y) { mPath.reset(); mPath.moveTo(x, y); mX = x; mY = y; }
private void touch_move(float x, float y) { float dx = Math.abs(x - mX); float dy = Math.abs(y - mY); if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) { mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2); mX = x; mY = y; circlePath.reset(); circlePath.addCircle(mX, mY, 30, Path.Direction.CW); } }
private void touch_up() { mPath.lineTo(mX, mY); circlePath.reset();
mCanvas.drawPath(mPath, mPaint);
mPath.reset(); }
@Override public boolean onTouchEvent(MotionEvent event) {
float x = event.getX(); float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: touch_start(x, y); invalidate(); break;
case MotionEvent.ACTION_MOVE: touch_move(x, y); invalidate(); break;
case MotionEvent.ACTION_UP: touch_up(); invalidate();

break;

}

return true;

}

 

Пример 4     Если ты хочешь что бы экран при работе твоего приложения не потухал, будет необходим java-код состоящий всего из одной строки. Если в обработчике этого события есть еще что-то, то этот код нужно разместить на первом месте.

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Flag Counter
Яндекс.Метрика
200stran.ru: показано число посетителей за сегодня, онлайн, из каждой страны и за всё время
Besucherzahler russain brides
счетчик посещений

Выбери лучшее!

allbest