Android Wear开发系列教程——HelloWear

Stella981
• 阅读 596

        从今天开始,笔者将正式开始更新关于Android Wear开发的相关内容,第一个程序自然是大名鼎鼎的Hello World了。打开AndroidStudio,选择New Project,我们创建一个新的Android项目。下面是一些与普通Android项目不同的地方:
Android Wear开发系列教程——HelloWear

Android Wear开发系列教程——HelloWear

Android Wear开发系列教程——HelloWear
        可以看到,我们的项目跟普通的Android项目最大的区别就在于Wear的项目至少需要包含两个Module(模块),手机部分和手表部分。手机部分的模块名称叫做mobile,手表部分的模块名称叫做wear。之所以会是这样一个结果的原因其实也可以理解,毕竟手表的性能、续航等跟手机相比目前还差的比较远,很多事情还是需要依赖手机来完成的,因此谷歌目前并不允许用户单独的使用手表来安装google play上的应用,而是用户在下载应用到手机上的时候,如果有对应的手表的应用,就会自动的推送至与之匹配的手表上。当然,在开发阶段,谷歌是允许开发者直接将开发包安装到手表的模拟器上的。

接下来我们就开启手表的模拟器,将这个程序安装到我们的手表上,看一看程序运行的效果。需要注意的是,由于我们的项目里面有手机和手表两个模块,在点击运行按钮之前一定要先切换到wear模块。然后我们就可以看见项目运行的效果了。Android Wear开发系列教程——HelloWear Android Wear开发系列教程——HelloWear

在这里顺带再说一下,在手表上,由于屏幕很小,因此我们的项目被藏的很深,我们要怎么从手表上打开我们的应用呢?
1、在手表的桌面上的空白处点击一下进入语音界面;
2、在列表中找到"Start..."按钮,点击进去之后找到我们的应用点击就可以打开了;
        接下来我们来看一下wear模块的具体代码,看看跟标准的Android程序有哪些区别。首先来看一下activity_wear_start.xml这个布局文件,这个文件是程序的主界面的布局文件。

<?xml version="1.0" encoding="utf-8"?>
<android.support.wearable.view.WatchViewStub
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/watch_view_stub"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:rectLayout="@layout/rect_activity_wear_start"
    app:roundLayout="@layout/round_activity_wear_start"
    tools:context=".WearStart"
    tools:deviceIds="wear">
</android.support.wearable.view.WatchViewStub> 

谷歌为了解决适配圆形和矩形的表盘,增加了WatchViewStub这个控件,在这个控件中,我们可以看到

app:rectLayout="@layout/rect_activity_wear_start"
app:roundLayout="@layout/round_activity_wear_start"

这两句分别为矩形和圆形的的表盘的手表设置了两个布局文件,所以如果你想给不同样式的手表设计不同的样式的话,这个控件就会大大简化开发的过程。
        接下来,我们看一下WearStart这个类,这个是手表的起始界面,可以看到,跟普通的Android项目基本上没有区别,唯一的区别就在于,由于我们用了WatchViewStub来适配矩形和圆形的手表类型,所以我们需要使用特殊的方法来获得布局中的控件对象。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wear_start);
        final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
        stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
            @Override
            public void onLayoutInflated(WatchViewStub stub) {
                mTextView = (TextView) stub.findViewById(R.id.text);
                //请注意,关于控件的行为也要在这里面进行
            }
        });
    }

由于我们的控件要依赖WatchViewStub控件,所以针对控件的操作都要放在监听事件中进行,否则是要报错的。
        这些就是一个简单的HelloWorld程序的内容了,其实由于Android Wear本来就是Android系统的一个变形的分支,因此大体上还是沿用的Android中的那些东西,在局部地方做了修改,因此如果你有Android开发基础的话学习Android Wear的曲线是比较低的。
        以上就是这一回的Hello World,就这些内容了,下一篇我将和大家来学习一下Wear中的通知,那我们下期见啦。
        项目的地址:http://git.oschina.net/foxchan/HelloWear

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
3年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Wesley13 Wesley13
3年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Stella981 Stella981
3年前
Eclipse插件开发_学习_00_资源帖
一、官方资料 1.eclipseapi(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fhelp.eclipse.org%2Fmars%2Findex.jsp%3Ftopic%3D%252Forg.eclipse.platform.doc.isv%252Fguide%2
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这