Android Phone 和 Android Wear

展示同样的功能 显示文本hello  world

android wear 效果图


hello world 1

android phone


hello world 2



第一 处比较  AndroidManifest.xml文件

Android Phone 的AndroidManifest.xml

Android Wear 的 AndroidManifest.xml

从上面粗黑体可以看到有三个wear 多了三个标签  、 、

第二处比较 activity_main.xml文件

Android Phone 的activity_main.xml

    android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" />ConstraintLayout>

Android Wear 的activity_main.xml

android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> FrameLayout>.BoxInsetLayout>

可以看到他们使用的组件是一样的都是 TextView 组件,是Android sdk 的api。但是 phone 使用的布局是ConstraintLayout,wear 使用的是BoxInsetLayout 中包含FrameLayout 

ConstraintLayout api部分代码截取

public class ConstraintLayout extends ViewGroup { static final boolean ALLOWS_EMBEDDED = false; private static final boolean CACHE_MEASURED_DIMENSION = false; public static final String VERSION = "ConstraintLayout-1.1.3"; private static final String TAG = "ConstraintLayout"; private static final boolean USE_CONSTRAINTS_HELPER = true; private static final boolean DEBUG = false; SparseArray mChildrenByIds = new SparseArray();

BoxInsetLayout  api 部分代码截取

@UiThreadpublic   class BoxInsetLayout extends ViewGroup { private static final float FACTOR = 0.146447f; //(1 - sqrt(2)/2)/2 private static final int DEFAULT_CHILD_GRAVITY = Gravity.TOP | Gravity.START; private final int mScreenHeight; private final int mScreenWidth;    private boolean mIsRound; private Rect mForegroundPadding; private Rect mInsets; private Drawable mForegroundDrawable; 

可以看到其实ConstraintLayout  和 BoxInsetLayout 都是继承了同一个 api ,即ViewGroup 

第三处,看MainActivity

phone 的继承关系

 MainActivity -> AppCompatActivity -> FragmentActivity -> BaseFragmentActivityApi16 ->BaseFragmentActivityApi14 ->SupportActivity ->Activity

wear 的继承关系

WearableActivity ->Activity

通过以上三处比较可以看出

phone和wear 最基本的 api 都是一样的,只是在不同平台实现上做了布局上的差异调整。

build.gradle文件看依赖库差异

Phone 的 build.gradle

dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.1' implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation 'com.android.support:design:26.1.1' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'}

wear 的 build.gradle

dependencies { implementation 'com.android.support:wear:27.1.1' implementation 'com.google.android.support:wearable:2.3.0' compileOnly 'com.google.android.wearable:wearable:2.3.0'}


现在添加 图片ImageView和精度条组件ProgressBar

效果图

phone


phone


wear 


wear

三个组件。

wear 的Android api 和phone 的Android api 的差异

phone 支持的 Android sdk版本

Wear 支持的 Android sdk版本

由上面可以看到在 api 19 以前 不支持 手表,到api 20 以后才支持手表

那么api 19 和 api 20 有什么差异呢?

api 19 对应Android 4.2,4.2.2 叫做KITKAT ,api 20 对应Android 4.4W  叫做KITKAT_WATCH

Android 4.2,4.2.2及更小版本,不支持手表开发,Android 4.4W开始支持手表开发。

Android 4.4W 里面有 Android Wear ,Android Wear是指2014年03月19日,谷歌为智能手表打造的全新智能平台Android Wear。

2016年05月19日凌晨,在2016谷歌I/O大会上,谷歌推出了新一代的智能手表操作系统Android Wear 2.0,其中最重要的更新为操作系统自带LTE网络和Wi-Fi。


11

你可能感兴趣的:(Android Phone 和 Android Wear)