Как уже не раз обсуждалось на форуме - анимация средствами FMX под андроид задача неблагодарная. Перечитав много чего, и на основании D.P.F Delphi Android Native Components и
// ------------------------------------------------------------------------------
procedure TAntJFoldingLayout.Resize;
begin
{$IFDEF ANDROID}
if IsAutoResize then
begin
CallInUIThread(
procedure()
begin
FJFoldingLayout.setX(Position.x * ScreenScale);
FJFoldingLayout.setY(Position.y * ScreenScale);
if LayoutWidth <> lpNone then
169 JViewGroup_LayoutParams.Width := Integer(LayoutWidth)
else
172 JViewGroup_LayoutParams.Width := round(Width * ScreenScale);
if LayoutHeight <> lpNone then
175 JViewGroup_LayoutParams.Height := Integer(LayoutHeight)
else
177 JViewGroup_LayoutParams.Height := round(Height * ScreenScale);
end);
end
else
inherited;
{$ELSE}
inherited;
{$ENDIF}
end;
// ------------------------------------------------------------------------------
Если JViewGroup_LayoutParams заменить на JRelativeLayout_LayoutParams то компилится, но самописный класс FoldingLayout наследник ViewGroup и по моему так будет не правильно
Код ява проверен на Андроид студии - рабочий.
Может кто упростит проект, усовершенствует и тд.
Приглашаю всех к сотрудничеству - думаю такой компонент никому не помешает, тем более при желании на яве можно будет дописать любую анимацию
Вопрос
antarey
Как уже не раз обсуждалось на форуме - анимация средствами FMX под андроид задача неблагодарная. Перечитав много чего, и на основании D.P.F Delphi Android Native Components и
DevBytes: Folding Layout решил сварганить компонент для нативной анимации.
Дабы не делать тему не читабельной - сам проект в атаче , проблема в следующем :
при компиляции под андроид есть ряд ошибок
constructor TAntJFoldingLayout.Create(AOwner: TComponent); begin inherited Create(AOwner); ControlCaption := 'FoldingLayout'; BackgroundColor1 := TAlphaColors.Lightsteelblue; Visible := True; FForm := nil; {$IFDEF ANDROID} CallInUIThreadAndWaitFinishing( procedure() begin 119 JViewGroup_LayoutParams := TJViewGroup_LayoutParams.JavaClass.init 120 (Integer(LayoutWidth), Integer(LayoutHeight)); 121 FJFoldingLayout := TJFoldingLayout.JavaClass.init(SharedActivity); 122 FJFoldingLayout.setLayoutParams(JViewGroup_LayoutParams); JControl := FJFoldingLayout; end); {$ENDIF} end;// ------------------------------------------------------------------------------ procedure TAntJFoldingLayout.Resize; begin {$IFDEF ANDROID} if IsAutoResize then begin CallInUIThread( procedure() begin FJFoldingLayout.setX(Position.x * ScreenScale); FJFoldingLayout.setY(Position.y * ScreenScale); if LayoutWidth <> lpNone then 169 JViewGroup_LayoutParams.Width := Integer(LayoutWidth) else 172 JViewGroup_LayoutParams.Width := round(Width * ScreenScale); if LayoutHeight <> lpNone then 175 JViewGroup_LayoutParams.Height := Integer(LayoutHeight) else 177 JViewGroup_LayoutParams.Height := round(Height * ScreenScale); end); end else inherited; {$ELSE} inherited; {$ENDIF} end; // ------------------------------------------------------------------------------Если JViewGroup_LayoutParams заменить на JRelativeLayout_LayoutParams то компилится, но самописный класс FoldingLayout наследник ViewGroup и по моему так будет не правильно
Код ява проверен на Андроид студии - рабочий.
Может кто упростит проект, усовершенствует и тд.
Приглашаю всех к сотрудничеству - думаю такой компонент никому не помешает, тем более при желании на яве можно будет дописать любую анимацию
FoldingLayout.zip
0 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.