Xamarin.Forms卡牌游戏实现翻转动画遇Resource.designer.cs编译报错问题
Xamarin.Forms卡牌翻转动画实现与Resource.designer.cs编译错误修复
问题说明
开发Xamarin.Forms卡牌游戏时,需要实现单卡牌在三个视图间的翻转交互:
- 初始展示选择页视图,提供Truth(Verdad)和Dare两个点击选项
- 点击*Truth(Verdad)*时卡牌翻转展示真心话内容视图
- 点击Dare时卡牌翻转展示大冒险内容视图
使用自定义渲染器实现翻转动画时,出现存储动画资源的Resource.designer.cs文件无法编译的问题。
修复Resource.designer.cs编译失败
按照以下优先级排查问题:
- 检查动画资源命名规则:安卓资源文件必须全部使用小写字母、数字、下划线命名,不得包含大写字母、特殊字符、空格,不符合规则的文件重命名后重新生成即可
- 清理项目无效缓存:右键解决方案执行「清理」,删除项目根目录下的
bin、obj文件夹,再删除安卓项目Resources目录下的Resource.designer.cs文件,之后右键安卓项目选择「重新生成」 - 排查资源冲突:如果不同资源文件夹下存在同名文件,也会导致资源生成失败,重命名重复文件即可
- 升级依赖版本:旧版本Xamarin.Android对部分动画资源格式支持存在缺陷,将所有Xamarin相关Nuget包升级到最新稳定版即可解决适配问题
无需自定义渲染器的翻转动画实现方案
直接使用Xamarin.Forms原生动画API即可实现3D翻转效果,无需编写平台端自定义渲染器,减少适配问题:
// 卡牌翻转动画核心实现 private async Task SwitchCardView(View currentView, View targetView) { // 翻转当前视图至90度隐藏 await currentView.RotateYTo(90, 250, Easing.CubicIn); currentView.IsVisible = false; // 展示目标视图并完成翻转 targetView.IsVisible = true; targetView.RotationY = -90; await targetView.RotateYTo(0, 250, Easing.CubicOut); } // 点击Truth调用示例 private void OnTruthClicked(object sender, EventArgs e) { _ = SwitchCardView(SelectionCardView, TruthCardView); } // 点击Dare调用示例 private void OnDareClicked(object sender, EventArgs e) { _ = SwitchCardView(SelectionCardView, DareCardView); }
三个视图放在同一容器下,默认仅展示选择页视图即可,后续需要返回选择页时反向调用SwitchCardView方法即可。
内容的提问来源于stack exchange,提问作者edu
相关产品推荐
相关产品推荐

