.net - Tizen 手表表圈交互
问题描述
我正在尝试为 Galaxy Watch 开发一个简单的应用程序,其中包括一个使用可旋转表圈递增和递减的计数器,但我无法让它响应旋转事件。我创建了一个实现的页面BezelInteractionPage
和一个包含计数器的简单类,该计数器在检测到旋转事件时实现IRotaryEventReceiver
并更新 a Label
,并将页面设置为RotaryFocusObject
后一个类的实例,我认为这反映了其中一个类中所做的事情Tizen.CircularUI GitHub 存储库中的示例。这是我的代码:
public class MainPage : BezelInteractionPage
{
public MainPage()
{
Label text = new Label
{
Text = "0"
};
var proxy = new RotaryFocusProxy(text);
Content = new StackLayout
{
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.Center,
Children =
{
text
}
};
RotaryFocusObject = proxy;
}
}
class RotaryFocusProxy : IRotaryEventReceiver
{
private int x;
private Label label;
public RotaryFocusProxy(Label l)
{
x = 0;
label = l;
}
public void Rotate(RotaryEventArgs args)
{
if (args.IsClockwise)
x++;
else
x--;
label.Text = x.ToString();
}
}
除了主类之外,这是项目中唯一的文件,它是我从“Blank App (Xamarin.Forms)”模板创建的。标签显示出来,但当我旋转挡板时它不会更新。
我尝试过的另一种方法是使用 a CircleStepper
,但我不知道如何自定义它使用的文本的大小和格式,或者让它响应边框旋转而无需先点击。我也不太喜欢它在对焦时背后的小阴影,所以如果我不需要的话,我宁愿不使用它。
解决方案
我创建了空的可穿戴项目并添加了您的代码。就我而言,它按预期工作。
请尝试从模板 Tizen Wearable App 创建空项目并添加您的代码片段。您可能需要在该空项目中更新 CircularUI nuget。
更新:
未交付旋转事件的原因是“Blank App (Xamarin.Forms)”模板没有开箱即用的 CircularUI。除了添加 CircularUI nuget 之外,还需要在 Main 方法中添加初始化:
static void Main(string[] args)
{
var app = new Program();
Forms.Init(app);
//This is the missing initialization code
global::Tizen.Wearable.CircularUI.Forms.FormsCircularUI.Init();
app.Run(args);
}
推荐阅读
- javascript - 解析错误:无效或意外的令牌
- mysql - 无法在 case when 语句中放置子查询条件
- laravel - Laravel 通过模型存储数据
- amazon-ec2 - EC2 实例允许将流量传出到特定网站
- ios - 个人团队未注册 Apple Developer Program
- swift - 离线时删除、添加和更新 Firestore 文档
- java - 带有迭代的 Yelp API 搜索请求 - 如何进行迭代
- c - 调用 globfree() 时出现分段错误
- c++ - 使用 IMFSinkWriter 更改标题、作者等元数据
- python - 为什么我的 python 循环只返回最后一轮结果