小编Jon*_*ate的帖子

Android:动画自定义视图

编辑2:新的官方培训指南

开发者网站发布了UI相关内容的培训指南,这是索引:

  • 动画概述
  • 物业动画概述
  • 动画可绘图形
  • 使用动画显示或隐藏视图
  • 使用动画移动视图
  • 使用fling动画移动视图
  • 使用缩放动画放大视图
  • 使用弹簧物理动画运动
  • 自动动画布局更新
  • 使用转换动画布局更改
  • 创建自定义过渡动画
  • 使用动画启动活动

如果您对以下任何一项感兴趣,请访问以下链接:https: //developer.android.com/training/animation/


编辑:答案总结

我找到了5种在Android中制作动画的方法:

  1. 动画的性能View属性动画平滑地改变rotation,alpha,scale等.

  2. 帧动画(AnimationDrawable):快速更改图片,使其看起来像动画

  3. 使用矢量(VectorDrawable)设计图像,并通过AnimatedVectorDrawable随时间编辑它们来制作动画.

  4. 覆盖 onDraw() a View并通过在画布中绘制来执行自定义绘图.

  5. 使用Lottie,从After Effects中复制动画.LottieFiles提供了许多动画.

但是,Android也提供了一些内置工具,例如Scenes(允许您在共享的几个布局之间设置转换动画Views),Shared elements(这可以让您将一个View从一个布局传递Activity到另一个布局)等.

API 21中添加了许多(如果不是全部)这些功能,请单击此处 …

java animation android android-animation android-layout

19
推荐指数
2
解决办法
6765
查看次数

在NuGet安装上将文件复制到Android项目

期望的输出

我们想.dll通过NuGet包安装分发(NetStandard项目)和一些文件.在Xamarin.Android项目中安装时:

  • 文件(Directory.Buil.props)被复制到解决方案文件夹
  • 可执行文件(config.exe)被复制到项目文件夹中
  • 目录(Files)及其内容将复制到项目文件夹中

问题

  • 使用的项目PackageReference不会复制文件(content不支持)
  • 出于某种原因,使用.nuspec文件时; 源文件obj,bin等被包装过

理想情况下,我们希望:

  • 只使用一个.csproj文件(没有.nuspec)
  • 没有contentcontentFiles包装在一起.nupkg
  • 容易访问.dll.csproj
  • 安装新.nupkg版本时,旧文件将被覆盖

问题

(1)这可以PackageReferencecontentFiles吗?

(2)你能想到的最佳方法是什么?

谢谢.

回应

狮子座:

在Android项目中安装软件包时,文件不会出现在项目中.更不用说文件只是引用而不是复制(即使我有copyToOutput="true"):

NuGet包安装后的解决方案项目

狮子座(编辑):

我无法使用新的SDK csproj格式.取自您的链接:

免责声明:这仅适用于一小部分项目类型.

  • 类库项目
  • 控制台应用
  • ASP.NET核心Web应用程序
  • .NET核心

如果您正在构建ASP.NET 4(即非ASP.NET Core),WPF,Universal Windows或Xamarin项目,则必须坚持使用旧格式

c# xamarin.android nuget xamarin visual-studio-2017

6
推荐指数
1
解决办法
407
查看次数

AccountManager:何时设置结果?

上下文

我的应用只存储用户/通行证.没有使用令牌.

问题1

方法setAccountAuthenticatorResult(Bundle)onResult(Bundle)意图是通知AbstractAccountAuthenticator结果,但我有一个没有它们的项目,它们有什么用?

问题2

什么是onRequestContinued()

问题3

什么时候addAccount完成并创建帐户,应该onActivityResultActivity触发它的时候调用它?

问题4

如果在实现中Intent返回带有键AccountManager.KEY_INTENT的a addAccount,AbstractAccountAuthenticator则将启动Intent.我注意到许多开发人员添加额外内容.谁得到了他们?

public Bundle addAccount(AccountAuthenticatorResponse response, String accountType, String authTokenType, String[] requiredFeatures, Bundle options) throws NetworkErrorException
{
    Intent intent = new Intent(mContext, AuthenticatorActivity.class);
    intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);

    intent.putExtra(AuthenticatorActivity.ARG_ACCOUNT_TYPE, accountType);     // <-- this
    intent.putExtra(AuthenticatorActivity.ARG_AUTH_TYPE, authTokenType);      // <-- this
    intent.putExtra(AuthenticatorActivity.ARG_IS_ADDING_NEW_ACCOUNT, true);   // <-- this


    Bundle bundle = new Bundle();
    bundle.putParcelable(AccountManager.KEY_INTENT, intent);

    return …
Run Code Online (Sandbox Code Playgroud)

android xamarin.android accountmanager android-account

5
推荐指数
1
解决办法
617
查看次数

无法为未连接到FragmentManager的Fragment设置MaxLifecycle:ViewPager

我已经尝试了很多示例,但是对我没有用。当我尝试从viewPager动态删除页面时,出现异常:

无法为未附加到FragmentManager的Fragment设置MaxLifecycle

我的PagerAdapter如下所示:

public class MyPagerAdapter extends FragmentStatePagerAdapter {

    private final Context mContext;
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();
    long baseId = 0;

    public MyPagerAdapter(Context context, FragmentManager fm) {
        super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
        mContext = context;
    }
    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    public void addFragment(Fragment fragment, String title, int position) {
        mFragmentList.add(position, fragment);
        mFragmentTitleList.add(position, title);
    }

    public void removeFragment(int position) {
        mFragmentList.remove(position); …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager fragmentmanager

5
推荐指数
1
解决办法
811
查看次数

XML样式放在哪里

问题1

我希望所有人Toolbar看起来都一样,而无需全部设置样式,因此尽管我会为其设置应用程序主题。我希望所有人拥有的东西之一就是colorControlNormal属性。这些是我的尝试:

代码示例1

<resources>
    <style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="toolbarStyle">@style/MyTheme.ToolbarStyle</item>
    </style>

    <style name="MyTheme.ToolbarStyle" parent="@style/Widget.AppCompat.Toolbar">
        <item name="colorControlNormal">@color/toolbarColorControlNormal</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

代码示例2

<resources>
    <style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorControlNormal">@color/toolbarColorControlNormal</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

代码示例1中,我尝试为Toolbar属性创建自定义样式,并将其设置为主题,但此方法无效。

代码示例2中,我全局设置了属性并正常工作。但是,它也会影响其他组件,因此无效。

  • 为什么代码示例1无法正常工作?

问题2

我需要更改all 的tabTextColortabSelectedTextColor属性TabLayout,因此我尝试了以下操作:

代码示例3

<resources>
  <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:tabWidgetStyle">@style/TabsStyle</item>
  </style>

  <style name="TabsStyle" parent="Widget.Design.TabLayout">
    <item name="tabTextColor">@color/tabTextColor</item>
    <item name="tabSelectedTextColor">@color/tabSelectedTextColor</item>
  </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我得到它的唯一方法是手动将它们设置为XML:

<android.support.design.widget.TabLayout
    [...]
    android:background="?android:attr/colorPrimary"
    app:tabTextColor="@color/tabTextColor"
    app:tabSelectedTextColor="@color/tabSelectedTextColor" />
Run Code Online (Sandbox Code Playgroud)
  • 为什么代码示例3无法正常工作? …

android android-theme android-styles android-toolbar

1
推荐指数
1
解决办法
321
查看次数