我正试图为Galaxy开发一个简单的应用程序,其中包括一个计数器,它使用可旋转的边框进行增量和递减,但我很难让它对旋转事件做出响应。我创建了一个实现BezelInteractionPage的页面和一个简单的类,其中包含实现IRotaryEventReceiver的计数器,并在检测到旋转事件时更新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();
}
}除了主类之外,这是项目中唯一的文件,我是从“空白应用程序(Xamarin.Forms)”模板创建的。标签会出现,但当我旋转边框时它不会更新。
我尝试过的另一种方法是使用CircleStepper,但是我不知道如何定制它使用的文本的大小和格式,或者让它响应bezel旋转而不必先点击。我也不喜欢它背后的阴影,当它在焦点,所以我宁愿不使用它,如果我没有必要。
发布于 2020-10-19 11:13:26
我已经创建了空的可穿戴项目并添加了您的代码。在我的例子中,它发挥了预期的作用。
请尝试从模板Tizen可穿戴应用程序创建空项目并添加您的代码片段。您可能需要在该空项目中更新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);
}https://stackoverflow.com/questions/64393133
复制相似问题