Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Муратов
1 / 1 / 0
Регистрация: 17.08.2012
Сообщений: 62
#1

Окружность радиус которого является getEvent палец - Android

30.11.2013, 23:50. Просмотров 467. Ответов 5
Метки нет (Все метки)

здравствуйте! Есть вопрос, окружность радиус которого является getEvent палец, вокруг пальца отрисовывается круг, через палец он также получает getEvent для (y1 и y2 для sin альфа), а также (x1 и x2 для cos альфа).
Нужно получить Угол tg = (sin альфа/cos альфа). И как от рисовать круг через Convas.drawCircle чтобы получилось вот такой рисунок Окружность радиус которого является getEvent палец
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2013, 23:50     Окружность радиус которого является getEvent палец
Посмотрите здесь:

Turbo Pascal Массив: Поменять местами столбец, произведение элементов которого является наименьшим, со столбцом, сумма элементов которого является наибольшей
Delphi Пусть элементами равносторонего треугольника является 1)Сторона а 2)плошядь S 3)высота H 4)радиус вписанной окружности r 5)радиус описсаной окружност
Android PLAY при касании экрана и STOP когда палец убран
Android Не открывается новое окно у которого класс наследуется не от Activity
Как сделать клиент для видео хостинга, у которого нет своего API? Android
Android На каждой странице ViewPager'а должен отображаться свой ListFragment данные для которого берутся из базы
Является ли репликацией вид системы Android
Кто является parent-ом layout? Android
Android Пробная версия приложения на 2 часа, после которого оно самоудалится
Изобразить на экране окружность и ее радиус; при нажатии на клавишу «Enter» радиус должен вращаться по часово Free Pascal
Android OnTouchListener и толстый дрожащий палец :)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Муратов
1 / 1 / 0
Регистрация: 17.08.2012
Сообщений: 62
10.12.2013, 15:02  [ТС]     Окружность радиус которого является getEvent палец #2
получилось выложу код может кому нибудь пригодится, по нажатию по экрану появляется круг и в этом круге отрисовывается ещё один круг, идея была чтобы маленький круг не выходил за пределы большого круга, для этого нужно было уравнение окружности и высчитывание синуса угла и косинуса угла.
public class SingleTouchView extends View {



final int MIN_WIDTH = 75;
final int MIN_HEIGHT = 75;
final int DEFAULT_COLOR = Color.WHITE;
int _color;
final int STROKE_WIDTH = 2;

private Paint paint = new Paint();
public float x, y, x1, y1, k, b, Rad, d, EF, A, B, angle, angle1, number = 25, x2, y2, x3, y3, A1, B1, R1, cosalfa, RcosAlfa;
private boolean touching = false;
public boolean ViewFinal = false;
public boolean Final = false;
private float Radius = 100;
private float RadiusMin = 30;
public Drawable image;

public SingleTouchView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
init();
}

public SingleTouchView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
init();
}

public SingleTouchView(Context context) {
super(context);
// TODO Auto-generated constructor stub
init();
}

private void init() {
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(2);
paint.setColor(Color.DKGRAY);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
MeasureSpec.getSize(heightMeasureSpec));
}

@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);

if (touching) {
//paint.setStrokeWidth(STROKE_WIDTH);
//paint.setColor(_color);
//paint.setStyle(Paint.Style.FILL);
//paint.setMaskFilter(new BlurMaskFilter(5, Blur.OUTER));

Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.unl2);
//Bitmap myBitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.unl1);
Bitmap myBitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.unl1);
canvas.drawBitmap(myBitmap, x3 - 25, y3 - 35, paint);

if(ViewFinal){
canvas.drawBitmap(myBitmap1, x2 - 25, y2 - 35, paint);
} else{
canvas.drawBitmap(myBitmap, x2 - 25, y2 - 35, paint);
}

canvas.drawCircle(x, y, RadiusMin, paint);

canvas.drawCircle(x1, y1, Radius, paint);

//canvas.drawCircle(x2, y2, 30f, paint);

//canvas.drawCircle(x3, y3, 30f, paint);
/*canvas.save();
image.draw(canvas);
canvas.restore();*/

}
}

public void setColor(int color) {
_color = color;
}

@Override
public boolean onTouchEvent(MotionEvent motionEvent) {
// TODO Auto-generated method stub

switch (motionEvent.getAction()) {
case MotionEvent.ACTION_MOVE:
x = motionEvent.getX();
y = motionEvent.getY();
k = (y1-y)/(x1-x);
b = (x1*y-x*y1)/(x1-x);
Rad = (float) Math.sqrt(Math.pow((x1-x), 2) + Math.pow((y1 - y), 2));
d = Radius - RadiusMin;
EF = Radius + RadiusMin - d;

if((Math.pow((x1-x), 2) + Math.pow((y1-y), 2)) > Math.pow(Radius, 2)){
//x = k*x1+b;
//y = k*y1+b;

cosalfa = (float) ((float) (x-x1)/ Math.sqrt(Math.pow((y-y1), 2)+ Math.pow((x-x1), 2)));
R1 = (float) (Math.sqrt(Math.pow((y-y1), 2)+ Math.pow((x-x1), 2)));
RcosAlfa = Radius*cosalfa;
if(Rad*(1-cosalfa) > 0 && Rad*(1-cosalfa) < 15){
x = x1+Radius;
y = y1;
ViewFinal = true;
Final = true;

}
else if(Rad*(1-Math.abs(cosalfa)) > 0 && Rad*(1-Math.abs(cosalfa)) < 15){
x = x1-Radius;
y = y1;
} else {
x = Radius * cosalfa + x1;
y = Radius * (y-y1)/R1 + y1;
}





//y = (((y1-y)*(x1-x))/(x1-x)) + y;
//touching = false;
}
break;
case MotionEvent.ACTION_DOWN:
touching = true;
x = motionEvent.getX();
y = motionEvent.getY();
x1 = motionEvent.getX();
y1 = motionEvent.getY();
//for(int i = 0; i < number; i++){
angle = (float) ((float) 0 * (Math.PI*2));
angle1 = (float) ((float) (Math.PI*2) - Math.PI);
A = (float) ((float) Radius * Math.sin(angle));
B = (float) ((float) Radius * Math.cos(angle));
A1 = (float) ((float) Radius * Math.sin(angle1));
B1 = (float) ((float) Radius * Math.cos(angle1));
x2 = x + B;
y2 = y + A;
x3 = x + B1;
y3 = y + A1;

//}
break;
case MotionEvent.ACTION_UP:
touching = false;
ViewFinal = false;
Final = false;

default:
touching = false;
ViewFinal = false;
Final = false;
}
invalidate();
return true;
}

}
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,502
13.12.2013, 12:41     Окружность радиус которого является getEvent палец #3
Смутно понял задание и слишком большой код для "легкого чтива".
За код конечно спасибо, но можете четче задачу обьяснить?
круг между 2мя пальцами рисуете? один за центр - второй за радиус?
или вокруг одного пальца кружок пытаетесь нарисовать?
Муратов
1 / 1 / 0
Регистрация: 17.08.2012
Сообщений: 62
13.12.2013, 13:38  [ТС]     Окружность радиус которого является getEvent палец #4
2 круга рисуется с одного пальца, палец является своего рода центром, маленький круг с меньшим чтобы он за пределы второго большого круга с большим радиусом не выходил, а оставался в круге даже если палец находится вне круга. например палец вышел за пределы большого круга то маленький круг останется в большом круге только по направлению пальца
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,502
13.12.2013, 13:48     Окружность радиус которого является getEvent палец #5
а-а-а... вариант джостика? Оригинально... Интересный компонент получится... Часто в играх такой используют... Но если честно по первому Вашему сообщению догадаться было не реально! И рисунок тоже не помог.
Муратов
1 / 1 / 0
Регистрация: 17.08.2012
Сообщений: 62
13.12.2013, 14:09  [ТС]     Окружность радиус которого является getEvent палец #6
да вариант джостика! если программируете игры для android или на unity 3d можете использовать
Yandex
Объявления
13.12.2013, 14:09     Окружность радиус которого является getEvent палец
Ответ Создать тему
Опции темы

Текущее время: 04:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru