Download presentation
Presentation is loading. Please wait.
Published byClarence John Goodman Modified over 9 years ago
2
Speakers 이길복 MVP 휴즈플로우 CTO 주신영 MVP 스마트쉐어 CEO
3
Windows 8.1: Free for all Windows 8 PCs
4
1
5
TextBlock
6
RichTextBlock
7
TextBox and PasswordBox <TextBox Text="I am going to the store for moar bread." Header="Spell-checking" IsSpellCheckEnabled="True"/> <TextBox Header="Placeholder text" PlaceholderText="please enter your first name"/> <TextBox Header="Color Font Support" Text="I like tapioca. 😀" IsColorFontEnabled="True" FontFamily="Segoe UI Emoji" /> <TextBox Text="For on-screen keyboards only" Header="Text Prediction" IsTextPredictionEnabled="True"/> <TextBox Text="pete@contoso.com" Header="Input scope control" PlaceholderText="For touch keyboard" InputScope="EmailSmtpAddress"/> <TextBox Text="Peter piper picked a peck" Header="Selection highlight color control" SelectionHighlightColor="Orange"/> <PasswordBox Header="Please enter your password" FontSize="40" Margin="20" IsPasswordRevealButtonEnabled="True" Password="Password1" />
8
Input scope
9
DatePicker and TimePicker DatePicker TimePicker
10
Flyouts
11
AppBar
12
Image DecodePixelWidth/Height 불러올 때 크기를 제공하면 메모리를 절약할 수 있다. 퍼포먼스도 좋아진다. 확대 / 축소된 결과도 더 품질이 좋다.
13
2
14
Chinese French German Indian Italian Mexican Data Data template
15
ListView
16
GridView
17
Data Template FlipView
18
Panning perf overview – UI virtualization
19
8 8.1
20
가상화 불가 가상화 가능 가상화 불가
21
Large list performance += 퍼포먼스 개선 불필요한 엘리먼트의 생성을 줄이기. GridViewItemPresenter 의 사용.
22
Placeholders 로 가시적인 퍼포먼스 개선
23
Incrementally updating the data template GridView 의 ContainerContentChanging 이벤트
24
3
25
Windows 8 view states Full landscape Filled Snapped Full portrait
26
Windows in Windows 8.1 Wider than tall window Taller than w ide window
27
Windows 8.1 접근
28
App-specific visual states Visual States Visual states 는 UI 와 코드 를 분리해 주죠. 코드에서 수동으로 엘리먼 트 이동하고, 크기변경하고 하는 대신에 간단히 이 변 경사항들을 처리하는 Storyboard 를 가진 visual state 로 변경하는 게 깔끔 하죠.
29
Setting visual states from code Use constants Sizes and state names will almost certainly change during design iterations
30
방향과 위치
31
Window 크기
32
Handling the SizeChanged event 핸들러 제거하는 것 잊지 마세요 ! 팁 : 모든 닷넷 프로그램에서 메모리 누수가 발생하는 흔한 원인 중 하나가 제대로 이벤트 핸들러를 제거 하지 않는 것이다. 싱글턴 객체나 정적 클래스의 이벤트에 대한 핸들러는 꼭 제거합시다.
33
Show Create Setup window content Show a secondary view
34
4 Speech Synthesis
35
Speech synthesis Voice David(en-US, 남성 ) Zira(en-US, 여성 ) Hazel(en-UK, 여성 ) Heami(ko-KR, 여성 ) 외 13 개국 음성 지원
36
Code Speech synthesis 단순 텍스트 음성 출력 synthesizeTextToStreamAsync PC 의 위치 설정에 따라 음성 지원 var synth = new Windows.Media.SpeechSynthesis.SpeechSynthesizer(); SpeechSynthesisStream stream = await synth.SynthesizeTextToStreamAsync("Welcome!"); media.SetSource(stream, stream.ContentType); media.Play();
37
Speech synthesis SSML(Speech Synthesis Markup Language) synthesizeSsmlToStreamAsync 음성 특징, 발음, 볼륨, 피치, 비율 / 속도, 강도 Code string Ssml = @" " + " Welcome! Shinyoung" + " " + "Have a good time" + " "; var synth = new Windows.Media.SpeechSynthesis.SpeechSynthesizer(); SpeechSynthesisStream stream = await synth.SynthesizeSsmlToStreamAsync(Ssml); media.SetSource(stream, stream.ContentType); media.Play();
38
5 Contact & Appointment
39
Contact People 앱을 통한 연락처 관리 이메일 및 소셜 계정의 연락처 연동됨 모든 연락처의 추가 / 수정 / 삭제 ContactPickerUI 를 통한 연락처들 호출 ContactManager.ShowContactCard() 를 통해 바로 원하는 연락처의 ContactCard 를 호출 대부분의 사용자는 개인정보 유출에 대한 우려로 앱 자체에서 연락처정보의 관리 / 보호 / 저장 하는 것을 원하지 않음.
40
Contact Picker Appxmanifest 에서 Contact Picker 사용 선언
41
Contact Picker Code ContactPicker picker = new ContactPicker(); picker.SelectionMode = ContactSelectionMode.Contacts; // Contact contacts = await picker.PickContactAsync();// 1 개 IList contacts = await picker.PickContactsAsync();// 여러개 foreach (Contact contact in contacts) { // process each contact returned Debug.WriteLine(contact.FirstName + " " + contact.LastName); } ContactPickerUI 로 UI 를 커스텀 가능
42
Contact card Contact card workflow View Profile ContactManager From: Ben Miller
43
ContactManager Code Contact contact = new Contact(); contact.FirstName = " 주 "; contact.LastName = " 신영 "; ContactEmail email = new ContactEmail(); email.Address = “bit1010@live.com"; contact.Emails.Add(email); Rect rect = Helper.GetElementRect(sender as FrameworkElement); ContactManager.ShowContactCard(contact, rect, Windows.UI.Popups.Placement. Default);
44
Appointments Calrendar 앱을 통한 일정 관리 이메일 및 소셜 계정의 일정 연동됨 모든 일정의 추가 / 수정 / 삭제 AppointmentManager. ShowAddAppointmentAsync(…) 를 통해 바로 원 하는 일정 ContactCard 를 호출
45
Appointments AppointmentManager. ShowAddAppointmentAsync(…)
46
Appointments Code private async void AddAppointment_Click(object sender, RoutedEventArgs e) { var appointment = new Appointment(); appointment.Subject = "Prepare for next session"; appointment.StartTime = DateTime.Now.AddMinutes(2); appointment.Duration = TimeSpan.FromHours(1); appointment.Location = "Speaker room"; appointment.Uri = new Uri("http://dev.windows.com"); appointment.Sensitivity = AppointmentSensitivity.Public; appointment.Details = "Nothing like a little procrastination!";
47
Appointments Code Rect rect = Helper.GetElementRect(sender as FrameworkElement); var id = await AppointmentManager.ShowAddAppointmentAsync( appointment, rect, Windows.UI.Popups.Placement.Above); if (!string.IsNullOrEmpty(id)) ResultDisplay.Text = "Returned appointment id " + id; else ResultDisplay.Text = "Appointment not added."; }
49
6
50
Bluetooth in Windows 8.1 RFCOMM General device control Robots Sphero Netduino Gadgeteer More… GATT Custom and low-power devices Smart watches Health monitors Fitness monitors Home automation More… Windows 8.1 PC running your Windows Store app Windows.Devices.Bluetooth.RfcommWindows.Devices.Bluetooth.GenericAttributeProfile
51
Bluetooth Pairing
52
Bluetooth RFCOMM: Connection Windows.Devices.Bluetooth.RfcommDeviceService _service; Windows.Networking.Sockets.StreamSocket _socket; async void Initialize() { // Enumerate devices with the object push service DeviceInformationCollection _DICollection = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync( RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort)); if (_ DICollection.Count > 0) { // Typically, check protection level and version compatibility here // Initialize the target Bluetooth device _service = await RfcommDeviceService.FromIdAsync(services[0].Id); // Create a standard networking socket and connect to the target _socket = new StreamSocket(); await _socket.ConnectAsync(_service.ConnectionHostName, _service.ConnectionServiceName, SocketProtectionLevel.BluetoothEncryptionAllowNullAuthentication); // The socket is connected. Data transfer happens using standard WinRT Sockets API }
53
Bluetooth RFCOMM: receiving data Socket.. StreamSocketListener socketListener = new StreamSocketListener(); …. DataReader reader = new DataReader(socket.InputStream); // Read the message. uint messageLength = reader.ReadByte(); // Loads data from the input stream. uint actualMessageLength = await reader.LoadAsync(messageLength); // Reads a string value from the input stream. string message = reader.ReadString(actualMessageLength); …..
54
Package.appxmanifest 중요 !
55
Bluetooth GATT: receiving data The full heart rate monitor example is available at code.msdn.co m. http://code.msdn.microsoft.com/Bluetooth-Generic-5a99ef95
57
7
58
Industry-leading economics Starts at 70% for new apps Jumps to 80% once your app makes $25,00 0
59
Developer registration $19 Individual $99 Business Registration covers both Windows and Windows Phone
61
Trials Matter 70x downloads 10% conversion 10x revenue Windows Phone Developer blog, March 2011
62
Simple time-based trials
63
Initialize the license Use the right license provider WinRT provides the CurrentAppSimulator for testing trial mode, in-app purchases, and more without you r app being listed in the Windows Store. CurrentApp is for submission to the Windows Store. You cannot submit an app which uses CurrentAppSimulator.
64
Handle license events
65
Conditionally enable features Hide or inform? You may find that providing a UI with a warning that the feature is only enabled in the full version is a bet ter approach than simply hiding the feature. Whenever you prompt, be sure to give the user the option t o purchase right then.
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.