@xamarin_russia

Страница 443 из 619
Max
26.06.2018
12:17:36
каким образом?
Там все очень глупо вышло в итоге, надо было саппорт 8.1 отключить

Проблема тупо с Android.TargetVesion

У меня по дефолту стояла 8.1

Надо было поставить Use Compiling SDK

Google
Kirill
26.06.2018
12:18:36
странно, а что делать, если надо 8.1?

Max
26.06.2018
12:18:54
странно, а что делать, если надо 8.1?
А там боль с новым форматом таких окошек

И надо запрашивать рантайм пермишн

Но это на онли 7+

Kirill
26.06.2018
12:19:17
ааа

Max
26.06.2018
12:19:43
И с этим возникла новая проблема)))

По дефолту нет такого пермишена

Разберусь, скину решение

Serhii
26.06.2018
12:20:37
Всем привет. Приложение xamarin android native. Делаем регистрацию. При регистрации на почту приходит ссылка подтверждения. При нажатии на ссылку должно редиректить в приложение. Uri scheme для перенаправления в приложение должна приходить с письмом? Как вообще это лучше всего реализовать? Мне нужно сделать именно сам переход с письма в приложение

Google
Serhii
26.06.2018
12:31:20
благодарю

Sasha
26.06.2018
13:01:40
Всем привет, посоветуйте как решить проблему, у меня есть метод который должен выполняться по окончанию другого метода, Другой метод выполняется в классе интерсептори (активити) Xamarin Android проекта. Запуск метода интерсептора выполняется в OnCreate

Sasha
26.06.2018
13:05:04
vladimir
26.06.2018
13:12:34
у Task ещё есть ContinueWith, не знаю, на сколько подойдёт

Andy
26.06.2018
13:14:21
Invalidate() вызывать. Да, таймером. Ну или из самого Draw (но не забыть условие выхода)
пробую draw но он почему то не вызывается вообще никогда при Invalidate() public override void Draw(Canvas canvas) { pp.Color = GetRandomColor(); x = rand.Next(600 + 1); y = rand.Next(1000 + 1); MyCanvas.DrawRoundRect(new RectF(x, y, x + 100, y + 100), 10, 10, pp); }

Kirill
26.06.2018
13:15:36
пробую draw но он почему то не вызывается вообще никогда при Invalidate() public override void Draw(Canvas canvas) { pp.Color = GetRandomColor(); x = rand.Next(600 + 1); y = rand.Next(1000 + 1); MyCanvas.DrawRoundRect(new RectF(x, y, x + 100, y + 100), 10, 10, pp); }
ну во 1 канвас надо использовать тот, который приходит в метод, во 2 - не вызывается - проверенно через дебаггер/логи или просто не отрисовывает? Ну и base.Draw(canas) лучше вызывать

Andy
26.06.2018
13:16:40
дебагером base сначала написал, потом убрал, но толку если не заходит

наличие OnDraw может мешать ?

vladimir
26.06.2018
13:20:49
наличие OnDraw может мешать ?
вы, надеюсь, от просто View унаследовались? и надо перегружать OnDraw, а не Draw

Andy
26.06.2018
13:22:10
c OnDraw я и начинал неуспешно потом тут посоветовали напрямую в Draw в инете почитал тоже как бы надо в него если все будет рисоваться самостоятельно и не будет дочерних view

если OnDraw то рисует один случайный квадратик и все

мне то и надо всего навсего прямой доступ к тому что в View будет видно чего столько проблем то :)

vladimir
26.06.2018
13:24:22
Andy
26.06.2018
13:24:50
фактически с таймером я получил тот же плохой результат как и с BackgroundWorker

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

или как укажет BackgroundWorker

vladimir
26.06.2018
13:25:37
а как вы вызываете Invalidate?

Andy
26.06.2018
13:25:40
и так и так только один раз отображается

Google
Andy
26.06.2018
13:25:49
в таймере

в BackgroundWorker я через сохраненный канвас пробовал

vladimir
26.06.2018
13:26:20
всмысле, код покажите

Andy
26.06.2018
13:29:35
ну проще с таймером понять не работает одинаково вот таймер вызывается CountDown() в констректоре моего View private void CountDown() { System.Timers.Timer timer = new System.Timers.Timer(); timer.Interval = 100; timer.Elapsed += OnTimedEvent; timer.AutoReset = true; timer.Enabled = true; } private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e) { Invalidate(); }

vladimir
26.06.2018
13:31:15
это внутри вашей кастомной вьюхи методы, да?

попробуйте добавить RunOnUiThread и в внутри него Invalidate

Andy
26.06.2018
13:38:03
если в кнопке в MainActivity добавить Invalidate то срабатывает

vladimir
26.06.2018
13:40:18
скорее всего потому что инвалидация была не в главном потоке

попробуйте через RunOnUiThread

Andy
26.06.2018
13:55:09
скорее всего потому что инвалидация была не в главном потоке
знать бы еще как все примеры что то на яве попадаются вот ошибка и так и так



скрыто Activity.RunOnUiThread(() => {Invalidate();});

vladimir
26.06.2018
13:58:45
это метод объекта Activity, а не статический надо либо вьюхе передать Activity (что не стоит) либо пропробовать метот Post у View

Andy
26.06.2018
14:00:00
post вчера пробовал ну попробую еще

vladimir
26.06.2018
14:00:35
не знаю, как сейчас, но года 2 назад Action уступал Runnable в производительности конкретно в случае RunOnUiThread если вдруг будут какие-то просадки, то лучше Runnable попробовать

попробуйте ещё var activity = Context as Activity;

Alex
26.06.2018
14:04:38
Ребята, стоит ли покупать макбук? И нормально ли на нем кодить под XF, XC?

vladimir
26.06.2018
14:06:23
post вчера пробовал ну попробую еще
ещё вариант private Handler handler = new Handler(); - во View handler.Post(() => {}); - в вашем методе

Andy
26.06.2018
14:09:15
буду пробовать изначально я вообще не собирался рисовать сразу на рабочем канвасе в винформс я рисовал в буфере bitmap. в который копировался фон а затем уже когда кадр готов то передавалось на экран тоже не без проблем, блокировка например но в итоге работает норма вроде а тут что то застрял

vladimir
26.06.2018
14:09:54
ну рисуйте тоже в таймере, и потом делайте Invalidate

Google
Andy
26.06.2018
14:10:29
там в винформ правда для копирования использовал функцию с винапи с предварительной блокировки получателя и источника как тут будет с скоростью - не знаю пока

так и начинал только один кадр на экране в итоге случайный

vladimir
26.06.2018
14:11:20
нет, вы же рисуете в OnDraw

а я имею в виду, приготовьте Bitmap в таймере, после Invalidate и в OnDraw просто сделайте canvas.DrawBitmap(bitmap);

забавный факт: все эти работы с canvas, bitmap и т.п. в Android - это всё обёртки поверх нативного skia, встроенного в Android

сравните

https://developer.xamarin.com/api/type/SkiaSharp.SKCanvas/

https://developer.android.com/reference/android/graphics/Canvas

Admin
ERROR: S client not available

Andy
26.06.2018
14:29:43
ещё вариант private Handler handler = new Handler(); - во View handler.Post(() => {}); - в вашем методе
ха это вроде работает по крайней мере что то происходит на экране :) private Handler handler = new Handler(); private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e) { handler.Post(() => { Invalidate(); }); }

vladimir
26.06.2018
14:31:24
?

Andy
26.06.2018
14:31:48
правда почему то сам в каждом кадре затирает все что было до этого

ну это уже похоже верное направление спасибо :)

vladimir
26.06.2018
14:34:56
ну да, там полная перерисовка всегда идёт

Andy
26.06.2018
14:41:30
ну то не проблема огромное спасибо наконец сдвинулся небось когда доберусь до iOS та же хрень будет :) завтра попробую уже через BackgroundWorker

vladimir
26.06.2018
14:44:37
да используйте везде Skia уже и не парьтесь в iOS со Skia будете почти также как в Android общий код и лёгкая переносимость

Kirill
26.06.2018
14:45:38
забавный факт: все эти работы с canvas, bitmap и т.п. в Android - это всё обёртки поверх нативного skia, встроенного в Android
То бишь схожесть методов означает применение той технологии? Пруфы есть? На канве практически везде примерно одинаковые методы. На iOS тоже

vladimir
26.06.2018
14:46:59
покажите мне похожие методы на iOS

прямо почти идентичные

ну и первые две строки отсюда читаем

Google
vladimir
26.06.2018
14:47:32
https://skia.org/

Kirill
26.06.2018
14:47:58
Ага уже увидел. Похожие.. момент

Denis
26.06.2018
14:48:29
Как считаете, нормально когда в json разные объекты приходят в одном поле, скажем в одном случае объект, в другом - массив. Как лучше это обработать средствами newtonsoft.json?

Kirill
26.06.2018
14:49:34
context.MoveTo(rect.Left + tmpTopLeftDiameter, rect.Top); context.AddLineToPoint(rect.Right - tmpTopRightDiameter, rect.Top); context.AddQuadCurveToPoint(rect.Right, rect.Top, rect.Right, rect.Top + tmpTopRightDiameter); context.AddLineToPoint(rect.Right, rect.Bottom - tmpBottomRightDiameter); context.AddQuadCurveToPoint(rect.Right, rect.Bottom, rect.Right - tmpBottomRightDiameter, rect.Bottom); context.AddLineToPoint(rect.Left + tmpBottomLeftDiameter, rect.Bottom); context.AddQuadCurveToPoint(rect.Left, rect.Bottom, rect.Left, rect.Bottom - tmpBottomLeftDiameter); context.AddLineToPoint(rect.Left, rect.Top + tmpTopLeftDiameter); context.AddQuadCurveToPoint(rect.Left, rect.Top, rect.Left + tmpTopLeftDiameter, rect.Top); просто прямоугольник закругленный рисуется. Методы похожи. Ну это по Path. и другие тоже подобны. Аналогичны все +1

Andy
26.06.2018
14:50:04
я очень боюсь перегуза промолчу про юнити но и без него меня бесит когда простенькая игрушка 2D жрет неимоверные ресурсы и тормозит жутко как так можно блин

Denis
26.06.2018
14:50:49
Не нормально. У каждого поля должен быть определенный тип.
ну это понятно, но вот серверсайд говорит - это возможно ?

Kirill
26.06.2018
14:52:42
ну это понятно, но вот серверсайд говорит - это возможно ?
Ну возможно многое, но это неверно и в приложении придется костыли плодить. В одном объекте одно поле должно быть одного типа, если объекты разные, то и поля могут быть другие, даже с одинаковым названием, но лучше таки разные, что бы небыло путаницы.

vladimir
26.06.2018
14:52:45
покажите canvas из iOS

Kirill
26.06.2018
14:53:01
По сути работа как и с канвасом

Andy
26.06.2018
14:54:32
еще б хамарин умел в JS компилить для броузеров :)

vladimir
26.06.2018
14:55:01
По сути работа как и с канвасом
глянул на методы CGContext вообще нисколечки не похоже

https://github.com/aosp-mirror/platform_frameworks_base/blob/master/graphics/java/android/graphics/Canvas.java

ctrl+f skia

Kirill
26.06.2018
14:56:57
еще б хамарин умел в JS компилить для броузеров :)
слышал что-то о таких планах, web assembly, но это не скоро

глянул на методы CGContext вообще нисколечки не похоже
ну это один пример. на JS вроде похоже было

vladimir
26.06.2018
14:59:10
я очень боюсь перегуза промолчу про юнити но и без него меня бесит когда простенькая игрушка 2D жрет неимоверные ресурсы и тормозит жутко как так можно блин
очень жаль, что у вас из-за неудачного опыта с Unity (а он как раз, да, не очень, если мы говорим о крутой производительности), отпугивает использовать реально быструю и удобную библиотеку но щито поделать

Andy
26.06.2018
15:01:22
не ну бывают исключения и на юнити но обычно если вижу заставку юнити на смарте - значит будет тормоз ну для 3D то ладно - меняй смарт :) а вот для 2D это свинство еще и иногда простенькие 2D жрут страшно батарею и горячий смарт хотя на экране могут буть да хоть крестики нолики :)

Страница 443 из 619