首页
学习
活动
专区
圈层
工具
发布

Android 开发艺术探索笔记一

需要避免并发写,通过使用同步限制多个线程写操作,适用于对数据同步要求不高的进程通信,需要妥善处理并发写的问题 使用Messenger 是一个轻量级的IPC方案,它的底层实现了AIDL。...滑动对比: scrollBy/scrollTo 操作简单,适合view内容的滑动 动画 操作简单,主要适用于没有交互的view和实现复杂的动画效果 改变布局参数 操作复杂,适用于有交互的view View...remoteviews使用了AppWidgetProvider类实现桌面小部件,本质是一个广播。...应用每调用一次set方法,remoteViews就会添加一个对应的action,它的apply进行view的更新操作。...,3.0以下有兼容问题 view动画问题,view动画是对view的影像做动画,不是真正改变view状态,有时会出现无法隐藏,调用view.clearAnimation清除动画 不使用px,否则在不同的设备出现不同的效果

1.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    RemoteViews的内部机制

    RemoteViews的作用是在其他进程中显示并更新View的界面,主要用于通知栏和桌面小部件。...具体过程 首先RemoteViews会通过Binder传递到SystemServer进程,这是因为RemoteViews实现了Parcelable接口,因此它可以跨进程传输,系统会根据RemoteViews...然后会通过LayoutInflater加载RemoteViews中的布局文件,在SystemServer进程中加载后的布局文件是一个普通的View,只不过相对我们的进程它是一个RemoteViews而已...set方法对View所做的更新并不是立刻执行的,在RemoteViews内部会记录所有的更新操作,具体的执行操作要等到RemoteViews被加载以后才能执行,这样RemoteViews就可以在SystemServer...远程进程通过RemoteViews的apply方法进行View的更新操作,RemoteViews的apply方法内部则会去调用所有Action对象并调用它们的apply方法,具体的View更新操作游Action

    85510

    Art of Android Development Reading Notes 5

    由于它在其他进程中显示,为了能够更新它的界面,RemoteViews提供了一组基础的操作用于跨进程更新它的界面。...(2)RemoteViews主要用于通知栏通知和桌面小部件的开发,通知栏通知是通过NotificationManager的notify方法来实现的;桌面小部件是通过AppWidgetProvider来实现的...srcbBitmap.getHeight(), matrix, true); } } 4.在AndroidManifest.xml文件中声明小部件 下面的示例中包含了两个action,第一个action用于识别小部件的单击行为...,每个周期小部件都会自动更新一次; onDeleted:每删除一次小部件就调用一次; onDisabled:当最后一个该类型的小部件被删除时调用该方法; onReceive:这是广播内置的方法,用于分发具体的事件给其他方法...(8)setOnClickPendingIntent、setPendingIntentTemplate和setOnClickFillIntent的区别 setOnClickPendingIntent用于给普通的

    81230

    Android-Widget重装上阵

    有意思的是这个尺寸标准并不适用于所有的设备,因为ROM的碎片化问题,各个厂商的桌面都不一样,所以。。。只能参考参考。...updatePeriodMillis 这个参数用于指定Widget的被动刷新频率,它由系统控制,所以具有很强的不定性,而且它也不能随意设置,官网上对这个属性的限制如下所示。...但是这种方案有一个致命的问题,那就是不同的ROM的计算方式完全不一样,有可能在Vivo上一个格子的高度只有80,但是在Pixel中,一个格子就是100,所以,在不同的设备上显示的n x m不一样,也是很正常的事...也正是因为这样的问题,如果不是只在Android 12+的设备上使用,那么通常都是固定好Widget的大小,避免使用动态布局,这也是没办法的权衡之举。...RemoteViews行为 RemoteViews不像普通的View,所以我们不能像写普通布局的方式一样来操纵View,但RemoteViews提供了一些set方法来帮助我们对RemoteViews中的

    1.6K32

    Android开发笔记(五十二)通知推送Notification

    PendingIntent意即延迟的Intent,主要用于非立即响应的通信场合。...上回的博文,博主介绍了PendingIntent的用法,下面再列出有用到它的场合: 1、用于定时器AlarmManager,处理时刻到达后的提醒动作 2、用于通知推送Notification,处理点击通知后的相应动作...3、用于远程视图RemoteViews,处理远程控件上的点击动作 4、用于发送短信SmsManager,处理短信发送完的后续动作 Notification Android的消息通知栏放的是...,用于取代Builder的默认视图模板 build : 构建方法。...RemoteViews 远程视图RemoteViews与页面视图一样也是从layout下的布局文件中得到,二者之间的区别主要有: 1、远程视图主要用于桌面部件与通知栏部件,而页面视图用于APP页面

    3.5K20

    Android中的通知和自定义通知布局

    new Intent(this, SecondActivity.class); /* * 调用PendingIntent的静态放法创建一个 PendingIntent对象用于点击通知之后执行的操作...如果使用自定义布局的话这个RemoteViews对象需要我们自己创建, * 并且加入我们需要的对应的控件事件处理,然后通过setContent(RemoteViews remoteViews...)方法传参实现 */ RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.notification...MainActivity.java的代码就有点多了,总体思路是对布局文件中的两个按钮进行事件处理,定义 notifyFirstNotification() 方法和 notifySecondNotification() 方法分别用于创建系统提供布局的通知和自定义布局的通知...Toast.LENGTH_SHORT).show(); } } } 在这段代码中我们定义了一个类MyBroadcastReceiver继承于BroadCastReceiver,并且实现了它的抽象方法用于对按钮的点击进行相应的处理

    4.7K20

    网易考拉 Android 通知栏适配全方案

    支持展示具有一串消息内容的会话样式,适用于短信、邮件、IM等。...RemoteViews显示异常 问题详情 由于系统提供的通知栏消息类型有时候不能满足要求,部分通知栏消息采用自定义RemoteViews来实现。...解决方案 目前只能解决第一个问题——前后台判断的问题。应用是否在后台可以根据以下代码进行判断。...下面解决一个最关键,也最致命的问题——字体颜色。如果字体颜色和背景颜色一样,那这条通知栏消息就没法看了,如RemoteViews显示异常一节介绍的一样。...因此这种方案只能作为参考,不能用于实际环境中。最后详细介绍一下第三种方式。 Android默认字体颜色获取 这种方案有一点投机取巧,是网上寻找代替方案时在简书上找到的,作者是hackware。

    6K11

    成功解决“函数用于调用的参数太少太多”问题

    个人主页:修修修也 所属专栏:程序调试及报错解决 ⚙️操作环境:Visual Studio 2022 问题描述 我们在使用C语言编写程序,特别是使用函数递归时经常会遇到编译器报错“用于调用的参数太少...原因分析 首先以下面一段代码为例向大家解释问题到底出在哪里: #define _CRT_SECURE_NO_WARNINGS 1 #include int power(int x,int...看似没有什么问题,但如果你原封不动的将该段代码放在编译器运行时却会导致编译器报错,如图: 然而问题就出在第 7行代码: return x * power(y-1); 注意,power函数在定义时是创建了两个形式参数的...,即x和y: int power(int x,int y) 那么在后续调用power函数时就需要传给它两个参数才行,而第七行代码明显只传给了power函数一个参数,因此会导致编译器报错“用于调用的参数太少

    2K10

    Android应用界面开发——Widget(实现液晶时钟)

    一般,开发桌面控件只需定义一个APPWidgetProvider的子类,并重写它的onUpdate()方法即可,重写该方法的步骤: 创建一个RemoteViews对象,创建该对象时可以指定加载指定的界面布局文件...如果需要改变上一步所加载的界面布局文件的内容,则可通过RemoteViews对象进行修改。 创建一个ComponentName对象。 调用APPWidgetManager更新桌面控件。...归纳起来,其核心代码就是使用APPWidgetManager通过RemoteViews来更新APPWidgetProvider的子类实例(需要将它包装成ComponentName对象)。...三.实现液晶时钟 ---- 程序界面包含8个ImageView,其中六个用于显示小时、分钟、秒钟的数字,另外两个用于显示冒号。...views = new RemoteViews(mContext.getPackageName(), R.layout.main); //定义SimpleDateFormat

    2.7K70

    android的消息通知栏

    HIGH 高优先级用于重要的通信内容,例如短消息或者聊天,这些都是对用户来说比较有兴趣的。 DEFAULT 默认优先级用于没有特殊优先级分类的通知。...注意: Notification的自定义布局是RemoteViews,和其他RemoteViews一样,在自定义视图布局文件中,仅支持FrameLayout、LinearLayout、RelativeLayout...2.自定义不带按钮通知栏 实现方法如下: //先设定RemoteViews         RemoteViews view_custom = new RemoteViews(getPackageName...)//显示数量                 .setStyle(inboxStyle)//设置风格                 .setTicker("测试通知来啦");   开发中碰到的问题...=null notification=Notification(vibrate=null,sound=null,defaults=0x0,flags=0x2)) 解决方法: 在自定义的时候,发现了这个问题

    5K80

    Python字典用于测验的常见问题及解决方法

    在使用 Python 字典进行测验或测试时,可能会遇到一些常见的问题。以下是这些问题的描述及相应的解决方法:1、问题背景在Python中,我们经常会使用字典结构来创建测验程序,其中键是问题,值是答案。...当用户回答问题时,程序会检查答案是否正确,并给出相应的反馈。然而,在使用字典结构创建测验程序时,我们可能会遇到一些问题,例如无法正确删除已回答的问题或无法跟踪用户答错的问题等。...2、解决方案为了解决上述问题,我们可以使用以下方法:在每次回答问题后,从字典中删除已回答的问题。使用一个列表来跟踪用户答错的问题。...if __name__ == "__main__": main()在这个代码示例中,我们使用了一个列表wrong来跟踪用户答错的问题,并在测验结束时打印出这些问题。...同时,我们还使用了del语句来删除已回答的问题,以确保在下次循环中不会重复出现这些问题。希望这个解决方法能够帮助您解决在Python中使用字典结构创建测验程序时遇到的问题。

    29210
    领券