如何解决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);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。