android wearable 研究

2023-12-26 15:30
文章标签 android 研究 wearable

本文主要是介绍android wearable 研究,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

android 4.4W.2是用于智能手表开发,建议用android studio开发,不过也可以用eclipse,因为是新系统,所以网上的demo比较少。只有在developer上可以看到几个简单的demo,但是需要翻墙,我把开发文档都保存下来:

http://download.csdn.net/detail/chaoyue0071/8369241

http://download.csdn.net/detail/chaoyue0071/8369241

开发者链接:http://developer.android.com/training/building-wearables.html

针对手表小屏幕的关系,android 有一套新的ui库去适配,具体sample可以用 sdk manager管理下载

这个库可以帮你专为可穿戴设备构建UI,一些主要的类包括:

BoxInsetLayout - 一个FrameLayout ,可以自适应屏幕形状,可以把子View填充进屏幕的中间。

CardFragment  -  一个可扩展内容的Fragment,可垂直滚动的卡片

CircledImageView - 圆形的ImageView

ConfirmationActivity - 一个Activity,当用户完成某个操作的时候 会有确认动画

DismissOverlayView - 一个实现了长按消失的view

GridViewPager - 一个可以允许用户垂直和水平滑动页面的控件,可以实现一个GridPagerAdapter 来展现数据

WatchViewStub - 根据屏幕的形状来渲染一个特殊的布局的类

WearableListView - 专门为小屏幕的可穿戴设备而优化的listview,显示一个可垂直滚动的列表。当用户停止滑动的时候,会自动将最近的项吸附住。

用eclipse可以开发,等下会附录下载地址

以wearablelistview为例开发

WearableListView是适用于android小型设备如智能手表显示列表的组件,可以村子滚动,非常方便的在只能手表上显示列表控件,每次显示三个列表在屏幕中间位置。

它继承RecyclerView,实现了OnScrollListener接口。

 

view source print ?
1. public class WearableListView extends android.support.v7.widget.RecyclerView
2. implements android.support.v7.widget.RecyclerView.OnScrollListener {
3.  
4. ….
5. ….
6. }
下面是使用的例子

 

\

 

view source print ?
01. package com.technotalkative.wearablelistviewdemo;
02.  
03. import android.app.Activity;
04. import android.content.Context;
05. import android.os.Bundle;
06. import android.support.wearable.view.WatchViewStub;
07. import android.support.wearable.view.WearableListView;
08. import android.view.LayoutInflater;
09. import android.view.ViewGroup;
10. import android.widget.TextView;
11.  
12. import java.util.ArrayList;
13.  
14. public class SimpleListActivity extends Activity implements WearableListView.ClickListener{
15.  
16. private WearableListView mListView;
17.  
18. @Override
19. protected void onCreate(Bundle savedInstanceState) {
20. super.onCreate(savedInstanceState);
21. setContentView(R.layout.activity_my);
22. final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
23. stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
24. @Override
25. public void onLayoutInflated(WatchViewStub stub) {
26. mListView = (WearableListView) stub.findViewById(R.id.listView1);
27. mListView.setAdapter(new MyAdapter(SimpleListActivity.this));
28. mListView.setClickListener(SimpleListActivity.this);
29. }
30. });
31. }
32.  
33. private static ArrayList<String> listItems;
34. static {
35. listItems = new ArrayList<String>();
36. listItems.add("Monday");
37. listItems.add("Tuesday");
38. listItems.add("Wednesday");
39. listItems.add("Thursday");
40. listItems.add("Friday");
41. listItems.add("Saturday");
42. }
43.  
44. @Override
45. public void onClick(WearableListView.ViewHolder viewHolder) {
46.  
47. }
48.  
49. @Override
50. public void onTopEmptyRegionClick() {
51.  
52. }
53.  
54. private class MyAdapter extends WearableListView.Adapter {
55. private final LayoutInflater mInflater;
56.  
57. private MyAdapter(Context context) {
58. mInflater = LayoutInflater.from(context);
59. }
60.  
61. @Override
62. public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
63. return new WearableListView.ViewHolder(
64. mInflater.inflate(R.layout.row_simple_item_layout, null));
65. }
66.  
67. @Override
68. public void onBindViewHolder(WearableListView.ViewHolder holder, int position) {
69. TextView view = (TextView) holder.itemView.findViewById(R.id.textView);
70. view.setText(listItems.get(position).toString());
71. holder.itemView.setTag(position);
72. }
73.  
74. @Override
75. public int getItemCount() {
76. return listItems.size();
77. }
78. }
79. }


可以为该列表加入图标,更加漂亮

 

\

 

view source print ?
01. private final class MyItemView extends FrameLayout implements WearableListView.Item {
02.  
03. final CircledImageView imgView;
04. final TextView txtView;
05. private float mScale;
06. private final int mFadedCircleColor;
07. private final int mChosenCircleColor;
08.  
09. public MyItemView(Context context) {
10. super(context);
11. View.inflate(context, R.layout.row_advanced_item_layout, this);
12. imgView = (CircledImageView) findViewById(R.id.image);
13. txtView = (TextView) findViewById(R.id.text);
14. mFadedCircleColor = getResources().getColor(android.R.color.darker_gray);
15. mChosenCircleColor = getResources().getColor(android.R.color.holo_blue_dark);
16. }
17.  
18. @Override
19. public float getProximityMinValue() {
20. return mDefaultCircleRadius;
21. }
22.  
23. @Override
24. public float getProximityMaxValue() {
25. return mSelectedCircleRadius;
26. }
27.  
28. @Override
29. public float getCurrentProximityValue() {
30. return mScale;
31. }
32.  
33. @Override
34. public void setScalingAnimatorValue(float value) {
35. mScale = value;
36. imgView.setCircleRadius(mScale);
37. imgView.setCircleRadiusPressed(mScale);
38. }
39.  
40. @Override
41. public void onScaleUpStart() {
42. imgView.setAlpha(1f);
43. txtView.setAlpha(1f);
44. imgView.setCircleColor(mChosenCircleColor);
45. }
46.  
47. @Override
48. public void onScaleDownStart() {
49. imgView.setAlpha(0.5f);
50. txtView.setAlpha(0.5f);
51. imgView.setCircleColor(mFadedCircleColor);
52. }
53. }

这篇关于android wearable 研究的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/539942

相关文章

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目

Android fill_parent、match_parent、wrap_content三者的作用及区别

这三个属性都是用来适应视图的水平或者垂直大小,以视图的内容或尺寸为基础的布局,比精确的指定视图的范围更加方便。 1、fill_parent 设置一个视图的布局为fill_parent将强制性的使视图扩展至它父元素的大小 2、match_parent 和fill_parent一样,从字面上的意思match_parent更贴切一些,于是从2.2开始,两个属性都可以使用,但2.3版本以后的建议使

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到