Tizen手表表圈互动

问题描述

我正在尝试为galaxy Watch开发一个简单的应用程序,该应用程序包括一个使用可旋转表圈进行递增和递减计数的计数器,但是我很难让它对旋转事件做出响应。我创建了一个实现BezelInteractionPage页面,并创建了一个简单的类,其中包含实现IRotaryEventReceiver并在检测到旋转事件时更新Label的计数器,并设置了页面的{{1} }到后一个类的实例,我认为它反映了Tizen.CircularUI GitHub repo中的一个示例中的操作。这是我的代码

RotaryFocusObject

除主类外,这是项目中的唯一文件,是我从“空白应用程序(Xamarin.Forms)”模板创建的。标签显示出来,但是当我旋转挡板时它不会更新。

我尝试过的另一种方法是使用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(); } } ,但是我无法弄清楚如何自定义其使用的文本的大小和格式,或者使它能够响应边框旋转而不必先被点击。我也不太喜欢对焦时它背后的小阴影,所以我宁愿不要使用它。

解决方法

我创建了一个空的可穿戴项目并添加了您的代码。就我而言,它按预期工作。

请尝试从模板Tizen Wearable App创建空项目,然后添加代码段。您可能需要在该空项目中更新CircularUI nuget。

更新

之所以没有传递旋转事件,是因为“空白应用程序(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);
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...