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

旅游网站论文北京公司建网站要多少费用

旅游网站论文,北京公司建网站要多少费用,网站两侧广告代码,WordPress简约主题开源目录 📂 前言 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.yayakq.cn/news/655971/

相关文章:

  • 网站运营主管是干什么的网站推广怎么写
  • 大企业网站建设方案湖北省建设厅官方网站八大员
  • 搭建网站的企业网络推广及销售
  • 什么网站可以做翻译兼职宜宾网站建设多少钱
  • 锡山区住房和城乡建设局网站wordpress videotheme
  • 什么网站可以自己做房子设计无锡画室网站建设
  • 吴兴区建设局网站wordpress 添加首页
  • 电子商务网站体系结构有哪些简易网址制作
  • 建网站要多长时间本地配置wordpress
  • 响应式网站是什么wordpress sphinx
  • 网站需要多大宽带wordpress文章写html
  • 门户网站如何建设如何做好电商网站平面设计
  • 买实体服务器做网站一起做网站郑州
  • 舟山建站wordpress主题模板怎么用
  • 长春市建设工程交易中心网站杭州seo教程
  • 微信小店可以做分类网站网站备案要多长时间
  • o2o网站建设平台陶瓷企业 瓷砖地板公司网站建设
  • 福州seo网站排名品牌网站建设預定大蝌蚪
  • 做富集分析的网站营销计划的主要内容
  • 一般做网站需要什么框架品质好可以说成品质什么
  • 那个网站专利分析做的好网站建设项目开发
  • 建网站资料可以做手机网页的网站
  • 抄袭网站设计127.0.0.1 wordpress
  • 成都企业网站建设及公司ppt51做网站建设企业官网
  • 营销型网站的定位用jquery做网站好吗
  • 网站建设 的介绍免费企业黄页下载
  • 关于干外贸的一些好的学习网站推广方式有哪些?
  • 网站图片搜索技术哪里可以做建设银行温州支行官方网站
  • 自己做淘宝返利网站吗让人做网站需要准备什么条件
  • dw静态个人简历网站模板下载南昌网站建设技术托管