当前位置: 首页 > news >正文

嘉兴做网站seo的百度sem代运营

嘉兴做网站seo的,百度sem代运营,个人网站设计流程图,潞城网络营销怎么做目录 📂 前言 AR 眼镜系统版本 充电动画 1. 🔱 技术方案 1.1 方案介绍 1.2 实现方案 关机充电动画 亮屏/锁屏充电动画 2. 💠 关机充电动画 2.1 关机充电动画核心处理类与路径 2.2 实现细节 步骤一:1)定制 …

目录

📂 前言

AR 眼镜系统版本

充电动画

1. 🔱 技术方案

1.1 方案介绍

1.2 实现方案

关机充电动画

亮屏/锁屏充电动画

2. 💠 关机充电动画

2.1 关机充电动画核心处理类与路径

2.2 实现细节

步骤一:1)定制 ui.c 文件,适配分辨率

步骤一:2)定制 ui.c 文件,定制动画 UI

步骤二:新增定制的动画 UI 相关png图片

3. ⚛️ 亮屏/锁屏充电动画

3.1 亮屏/锁屏充电动画时序图

3.2 实现细节

步骤一:注册广播 Action 监听充电接通/断开/充满电等状态

步骤二:开发充电接通/断开/充满电的系统弹窗,显示对应动画

4. ✅ 小结


📂 前言

AR 眼镜系统版本

        W517 Android9。

充电动画

        Android 充电动画分为:关机充电动画 与 亮屏/锁屏充电动画,而且据了解 Android 原生系统只提供了关机充电动画,并未提供亮屏/锁屏充电动画,所以对于关机情况下需要定制,亮屏/锁屏情况下需要增加。

1. 🔱 技术方案

1.1 方案介绍

        技术方案概述:对于关机充电动画,是通过 minui 开发的,主要定制 ui.c 文件以及 /images/*.png 图片;对于亮屏/锁屏充电动画,主要通过监听系统充电连接、断开和充满电的广播去实现。

1.2 实现方案

关机充电动画
  1. 定制 ui.c 文件,适配分辨率,定制动画 UI;

  2. 新增定制的动画 UI 相关png图片。

亮屏/锁屏充电动画
  1. 注册 ACTION_POWER_CONNECTED、ACTION_POWER_DISCONNECTED、ACTION_BATTERY_OKAY 等广播 Action 监听充电接通/断开/充满电等状态;

  2. 开发充电接通/断开/充满电的系统弹窗,显示对应动画。

2. 💠 关机充电动画

2.1 关机充电动画核心处理类与路径

  1. 关机充电动画 UI 处理类:w517\vendor\sprd\proprietories-source\charge\ui.c

  2. 关机充电动画图片存放路径:w517\vendor\sprd\proprietories-source\charge\images\

  3. AR 眼镜上的充电动画图片存放路径:/vendor/etc/res/images/

2.2 实现细节

步骤一:1)定制 ui.c 文件,适配分辨率

步骤一:2)定制 ui.c 文件,定制动画 UI

步骤二:新增定制的动画 UI 相关png图片

3. ⚛️ 亮屏/锁屏充电动画

3.1 亮屏/锁屏充电动画时序图

3.2 实现细节

步骤一:注册广播 Action 监听充电接通/断开/充满电等状态
class BatteryListener(context: Context) {private val TAG = BatteryListener::class.java.simpleNameprivate val mContext: Contextprivate val mReceiver: BatteryBroadcastReceiverprivate val mBatteryChargeWindow: BatteryChargeWindowinit {mContext = contextmReceiver = BatteryBroadcastReceiver()mBatteryChargeWindow = BatteryChargeWindow()}fun register() {Log.e(TAG, "register: ")val filter = IntentFilter()
//        filter.addAction(Intent.ACTION_BATTERY_CHANGED) // 电量发生改变filter.addAction(Intent.ACTION_BATTERY_LOW) // 电量低filter.addAction(Intent.ACTION_BATTERY_OKAY) // 电量充满filter.addAction(Intent.ACTION_POWER_CONNECTED) // 接通电源filter.addAction(Intent.ACTION_POWER_DISCONNECTED) // 拔出电源mContext.registerReceiver(mReceiver, filter)mBatteryChargeWindow.init(mContext)}fun unregister() {Log.e(TAG, "unregister: ")mContext.unregisterReceiver(mReceiver)}private inner class BatteryBroadcastReceiver : BroadcastReceiver() {override fun onReceive(context: Context, intent: Intent) {Log.e(TAG, "onReceive: ${intent.action}")when (intent.action) {
//                Intent.ACTION_BATTERY_CHANGED -> {
//
//                }Intent.ACTION_BATTERY_LOW -> {}Intent.ACTION_BATTERY_OKAY -> {mBatteryChargeWindow.finishCharge()}Intent.ACTION_POWER_CONNECTED -> {SoundPoolTools.play(context, SoundPoolTools.MUSIC, R.raw.notification_power_connected)mBatteryChargeWindow.startCharge()}Intent.ACTION_POWER_DISCONNECTED -> {}}}}}
步骤二:开发充电接通/断开/充满电的系统弹窗,显示对应动画
class BatteryChargeWindow {private lateinit var mContext: Contextprivate lateinit var mWindowManager: WindowManagerprivate lateinit var mBatteryChargeView: Viewprivate lateinit var mChargingAnimation: LottieAnimationViewprivate lateinit var mFinishedChargingAnimation: LottieAnimationViewprivate lateinit var mBattery: AGGTextViewprivate var mLayoutParams: WindowManager.LayoutParams? = nullprivate var mIsBarWindowAdded = falseprivate val mUiHandler = Handler(Looper.getMainLooper())fun init(context: Context) {mContext = context.applicationContextmWindowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManagerinitLayoutParams()initView()}fun startCharge() {initLayoutParams()addBarWindow()mChargingAnimation.visibility = View.VISIBLEmChargingAnimation.playAnimation()mBattery.text = getBatteryLevel()mUiHandler.postDelayed({mChargingAnimation.cancelAnimation()mChargingAnimation.visibility = View.GONEremoveBarWindow()}, BATTERY_CHARGE_TIME_OUT)}@SuppressLint("SetTextI18n")fun finishCharge() {initLayoutParams()addBarWindow()mFinishedChargingAnimation.visibility = View.VISIBLEmFinishedChargingAnimation.playAnimation()mBattery.text = "100%"mUiHandler.postDelayed({mFinishedChargingAnimation.cancelAnimation()mFinishedChargingAnimation.visibility = View.GONEremoveBarWindow()}, BATTERY_CHARGE_TIME_OUT)}private fun initLayoutParams() {mLayoutParams = WindowManager.LayoutParams().apply {type = WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANELval density = mContext.resources.displayMetrics.densitywidth = (640 * density).toInt()height = (640 * density).toInt()flags =WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN or WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR or WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH or WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING or WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITSformat = PixelFormat.RGBA_8888 // 去除默认时有的黑色背景,设置为全透明gravity = Gravity.CENTERtitle = Constants.AGG_SYSUI_BATTERY_CHARGEx = 0y = 0dofIndex = 1 //  默认为1。 为0,则表示窗口为0DOF模式;为1,则表示窗口为3DOF模式;为2,则表示窗口为6DOF模式。setTranslationZ(Constants.TRANSLATION_Z_150CM)setRotationXAroundOrigin(-XrEnvironment.getInstance().headPose.roll)setRotationYAroundOrigin(-XrEnvironment.getInstance().headPose.yaw)setRotationZAroundOrigin(-XrEnvironment.getInstance().headPose.pitch)}}private fun initView() {mBatteryChargeView =LayoutInflater.from(mContext).inflate(R.layout.battery_charge_layout, null, false)mChargingAnimation = mBatteryChargeView.findViewById(R.id.charging)mFinishedChargingAnimation = mBatteryChargeView.findViewById(R.id.finishedCharging)mBattery = mBatteryChargeView.findViewById(R.id.battery)}private fun addBarWindow() {mUiHandler.post {synchronized(this) {if (!mIsBarWindowAdded) {try {mWindowManager.addView(mBatteryChargeView, mLayoutParams)} catch (e: Exception) {e.printStackTrace()}mIsBarWindowAdded = true}}}}private fun removeBarWindow() {mUiHandler.post {synchronized(this) {if (mIsBarWindowAdded) {try {mWindowManager.removeViewImmediate(mBatteryChargeView)} catch (e: Exception) {e.printStackTrace()}mIsBarWindowAdded = false}}}}/*** 获取剩余电池容量占总容量的整数百分比*/private fun getBatteryLevel(): String {val batteryManager = mContext.getSystemService(BATTERY_SERVICE) as BatteryManagerreturn batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY).toString() + "%"}}

4. ✅ 小结

        对于充电动画定制,本文只是一个基础实现方案,更多业务细节请参考产品逻辑去实现。

        另外,由于本人能力有限,如有错误,敬请批评指正,谢谢。


http://www.ritt.cn/news/18020.html

相关文章:

  • 专业做简历的网站保定网站制作
  • 小程序开发工具代理平台内蒙古网站seo
  • 新疆建设网官方网站今日要闻
  • 网站优化柳州适合30岁短期培训班
  • 没有网站怎样做外贸搜狗关键词排名此会zjkwlgs
  • 网站建设基础流程全网优化哪家好
  • 产品查询展示型网站搜狗搜索引擎优化论文
  • 做特卖的网站怎么赚钱hs网站推广
  • 企业网站源码带后台网站优化分析
  • 网站建设怎么找客户百度权重查询工具
  • 烟台网站制作培训信息流优化师简历怎么写
  • 自己做产品网站搜索引擎平台有哪些软件
  • 网站建设案例欣赏怎么能在百度上做推广
  • 电脑配件经营网站的建设推广哪个平台好
  • 有哪些做壁纸的网站好磁力猫
  • 安阳网站优化帮收款的接单平台
  • 自学网网站商品营销推广的方法有哪些
  • 电大形考任在哪个网站做seo基本概念
  • 苏州新区网站制作长沙企业seo优化
  • 苏州企业网站建设设计东莞企业网站排名
  • 河南网站建设yipinpai制作一个网站需要多少费用
  • 服务器网站别名设置百度关键词搜索热度查询
  • 建设网络道德教育网站的有效措施有厦门seo哪家强
  • 咖啡网站建设的需求分析淘宝seo搜索优化
  • 网站委托建设合同seo网站建站
  • 六安做网站seo网络软文营销是什么意思
  • 时尚网站设计sq网站推广
  • 大型网站开发语言排名搜索引擎营销成功的案例
  • 做网站注意的问题百度自然排名优化
  • wordpress 超级排版器网站优化排名软件