首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android中ImageView控件的ScaleType属性使用详解

在我们平时的开发过程中,可以说图片展示是每个App必备的,所以我们会用到ImageView图片控件,对于每个Android开发者来说,这已经非常熟悉了,那有童鞋就会问了:这还有什么好讲的呢?...之前我也并没有在意这个属性的使用,以为只会在面试的时候才需要用到,事实是我错了,在最近的开发过程中,使用了大量的图片展示商品的图片,而且不同的模块,图片的展示还需要不一样,那么这个时候ScaleType...[tk23tz7rn3.png] (2).当原图的size大于ImageView的size时,就按照比例缩小原图的宽高,居中显示在ImageView中....[yjdfejanl4.png] 4.android:scaleType=“matrix” 不改变原图的大小,从ImageView的左上角开始绘制,超出部分做剪切处理。...:scaleType=“fit_xy” 把图片按照指定的大小在ImageView中显示,拉伸显示图片,不保持原比例,填满ImageView

1.8K20

Android中的线程

Android 中线程的使用 线程 Android官网文档->https://developer.android.com/guide/components/processes-and-threads.html...Android UI是非线程安全的,所以关于UI的操作只能在UI线程操作,所以Android单线程模式必须遵守两条规则 不能阻塞UI线程 UI操作要在UI线程,不要在 UI 线程之外访问 Android...遵循上述的两条规则,不能再UI线程之外的线程访问UI,但是网络访问结果是在工作线程,要将结果填充到UI中怎么办呢,Android提供了几种方法在工作线程中访问UI Activity.runOnUiThread...Java中常规的通信方式这里我就不说了,看一下Android的消息机制 Java常规的通信方式传送门->http://ifeve.com/thread-signaling Android中的消息机制可以用于线程间通信也可用于在各个组件间通信...;一旦有消息就唤醒线程取出来; 从MessageQueue中取出的消息,会调用本身target持有的handler实例来处理这个消息; 综上所述,线程间通信handler就可以实现; 主线程给工作线程发消息

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

    Android JNI 中的线程操作

    第三个参数为该线程启动程序的函数指针,也就是线程启动时要执行的那个方法,类似于 Java Runnable 中的 run 方法,它的函数签名格式如下: void* start_routine(void*..."); // 切记要有返回值 return NULL; } 要注意线程启动函数是要有返回值的,没有返回值就直接崩溃了。...pthread_create 创建的线程是一个 C++ 中的线程,虚拟机并不能识别它们,为了和 Java 空间交互,需要先把 POSIX 线程附着到 Java 虚拟机上,然后就可以获得当前线程的 JNIEnv...Java 虚拟机上后,还需要将该线程从 Java 虚拟机上分离,通过 DetachCurrentThread 方法,这两个方法是要同时使用的,否则会带来 BUG 。...等待线程返回结果 前面提到在线程运行函数中必须要有返回值,最开始只是返回了一个空指针 NULL ,并且在某个方法里面开启了新线程,新线程运行后,该方法也就立即返回退出,执行完了。

    1.2K20

    Android NDK中的UI线程

    概述 在Android中,UI线程是一个很重要的概念。我们对UI的更新和一些系统行为,都必须在UI线程(主线程)中进行调用。...在Linux中是没有主线程这一概念的。 那么,如果我们在子线程调用了一个native方法,在C++的代码中,我们想要切换到主线程调用某个方法时,该如何切换线程呢?...通过初始中的这样两个方法,我们就构建了一条通往主线程的通道。 发往主线程 在初始化的方法中,我们构筑了一条消息通道。接下来,我们就需要将消息发送至主线程。...简单来讲,当我们在自己创建的子线程想要通过JVM获取Class时,Android会为我们启动系统的ClassLoader而不是我们App的ClassLoader。...这样,我们只需要在子线程中,以一定的编码格式向主线程发送消息,即可完成在native中切换主线程的能力。 --- 如有问题,欢迎指正。

    2.6K40

    温故而知新:WinFormSilverlight多线程编程中如何更新UI控件的值

    单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!"...: 线程间操作无效: 从不是创建控件“textBox1”的线程访问它。...究其原因,winform中的UI控件不是线程安全的,如果可以随意在任何线程中改变其值,你创建一个线程,我创建一个线程,大家都来抢着更改"TextBox1"的值,没有任何秩序的话,天下大乱......,允许各路线程随便乱搞,当然最终TextBox1的值到底是啥难以预料,只有天知道,不过这也是最省力的办法 2.利用委托调用--最常见的办法(仅WinForm有效) using System; using...(Winform/Silverlight通用) BackgroundWorker会在主线程之外,另开一个后台线程,我们可以把一些处理放在后台线程中处理,完成之后,后台线程会把结果传递给主线程,同时结束自己

    1.8K50

    源码分析Android中的线程和线程池

    - AsyncTask封装了线程池和Handler,它主要方便开发者在子线程中更新UI。 - HandlerThread是一个具有消息循环的线程,在它的内部可以使用Handler。...AsyncTask的工作原理 AsyncTask是一种轻量级的异步任务类,他可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程上更新UI。...,而线程池THREAD_POOL_EXECUTOR用于真正地执行任务,InternalHandler用于将执行环境从线程池切换到主线程。...方法中,会执行AsyncTask的doInBackground方法,接着讲返回值传递给postResult方法,代码如下: private Result postResult(Result result...Android中的线程池 线程池的好处: 1. 重用线程池中的线程,避免因为线程的创建和销毁所带类的性能开销 2.

    35520

    Android 11 中的存储机制更新

    在 Android 11 中,我们会通过下述的几点来继续优化分区存储 (Scoped Storage) 的开发者体验。...在 Android 10 中,应用在对每一个文件请求编辑或删除时都必须得到用户的确认。而在 Android 11 中,应用可以一次请求修改或者删除多个媒体文件。...因此,我们对其进行了更新,限制了它对某些路径的可见性。 在 Android 11 中,将不再允许用户授权访问 Downloads 的根目录、每个可用 SD 卡的根目录以及其它应用的目录。...应用仍然可以通过 Storage Access Framework API 或者文件选择器来帮助用户从共享存储中选取个别文件。.../video/av771… 或点击这里查看 Android 开发者文档:《Android 11 中的存储更新》 我们非常重视您的反馈,您可以通过 issues tracker 向我们反馈 issue 或新特性需求

    3.1K11

    安卓开发_浅谈AsyncTask

    一、先介绍一下AsyncTask:   在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给用户带来不好的用户体验。...但是在子线程中无法去操作主线程(UI 线程),在子线程中操作UI线程会出现错误。因此android提供了一个类Handler来在子线程中来更新UI线程,用发消息的机制更新UI界面,呈现给用户。...这样就解决了子线程更新UI的问题。但是费时的任务操作总会启动一些匿名的子线程,太多的子线程给系统带来巨大的负担,随之带来一些性能问题。...这个AsyncTask生来就是处理一些后台的比较耗时的任务,给用户带来良好用户体验的,从编程的语法上显得优雅了许多,不再需要子线程和Handler就可以完成异步操作并且刷新用户界面。...Progress:后台任务执行中返回进度值的类型,后台任务执行的百分比   Result:后台执行任务完成后返回结果的类型,比如String,Integer等。

    1.7K70

    iOS Android 移动设备中的 Touch Icons

    上次转载了一篇《将你的网站打造成一个iOS Web App》,但偶然发现这篇文章的内容有些是错误的——准确来说也不是错误,只是不适合自半年前来的情况了(也可以说是iOS7 之后的时间)——话说现在的的移动设备真是日新月异...好了,结合Jeff 查阅的资料,下面来详细来说说iOS / Android 移动设备中的 touch icons。 关于 “Touch icons” favicons 知道是什么吧?...浏览器的tab 前面的那个小图标,放入某个网站到收藏夹的时候也会看到,这个可以说是pc 互联网的产物了。而Touch icons 则是移动互联网的产物,用于手机、平板等移动设备上。...,Chrome v31+ for Android 以上的版本支持这个;但遗憾的是,苹果的设备不支持这个。...没有precomposed 代码,一些包括圆角,阴影,反光的特效便会自动添加到生成的本地app 的logo 中。是自iOS 2.0 开始的,但如今随着iOS7 的出现,已经变得可有可无了。

    2.2K60

    Android Q 中的安全性更新

    我们早在今年二月就推出了 Adiantum 加密模式,让所有 Android 设备——从智能手表到联网医疗器械——即便在缺少特定硬件的情况下依旧能够实现数据加密。...这有助于确保下一代设备比之前的设备更加安全,让亿万新用户从使用 Android 系统的第一天起就免受安全隐患的威胁。...在 Android Q 中,我们将这些策略实践至多个关键安全领域的研发工作中,例如: 媒体、蓝牙以及系统内核。...我们在《Android 平台安全增强项详览》一文中提供了详实的介绍,其中的部分更新重点包括: 供软件编码器使用的受限沙箱; 增加排错程序 (sanitizer) 在生产环境中的使用: 当某组件处理不受信任的内容时...下一步 在 Android Q 之后,我们计划为移动应用添加数字身份证件 (Electronic ID) 支持,从而允许用户把手机当做身份证件 (如驾驶证) 来使用。

    75850

    全方位解析-Android中的线程池

    Android中的线程池 复用Java中的Executor接口,具体实现类为ThreadPoolExecutor,它有以下几个参数: 参数 说明 注释 corePoolSize 线程池中核心线程数量...SHUTDOWN 关闭线程池,不在执行新的任务,但会执行完线程池正在运行的任务,和添加到队列中的任务,对应shutDown()方法 STOP 立即关闭线程池,打断正在运行的任务,且不再处理等待队列中已添加的任务...等于上面我们画的图: 在这里插入图片描述 结论:阅读源码可以适当看下类头说明,尤其是Android源码的类头。可以帮我们更好的理解源码 从线程池入口进入,理解前面提到ctl是什么?...(ctlOf(RUNNING, 0)); 初始状态为RUNNING,线程数为0 ctlOf(int rs, int wc) 用来获取int中的值,用来调用下面两个方法 : private static...更重要的是。通过源码得知。当线程池中,核心线程数未到最大值时(测试例子中是5),是不会加入到队列的,因此也就不会排序。当第二次执行任务,线程池就会先加入队列。

    1.1K30

    从源码出发浅析 Android TV 的焦点移动原理 (上篇)

    相对于手机上用手指点击屏幕产生的Click事件, 在使用Android TV的过程中,遥控器是一个主流的操作工具,通过点击遥控器的方向键来控制焦点的移动。...android:focusable="true" android:focusableInTouchMode="true"/> 然后,就是控制焦点的移动了。...遇到的问题: 尽管有了官方文档中提到的基础用法,但是在进行Android TV开发的过程中,还是经常会遇到一些焦点方面的问题或者疑问,如 “明明指定了焦点id,焦点却跑丢了” “onKeyDown里居然截获不到按键事件...本文的分析都是基于View树的。 在processKeyEvent中,首先走了mView的dispatchKeyEvent,也就是从DecorView开始进行KeyEvent的分发。...接《从源码出发浅析Android TV的焦点移动原理(下篇)》

    7.8K10

    从源码出发浅析 Android TV 的焦点移动原理(下篇)

    接从源码出发浅析 Android TV 的焦点移动原理 (上篇) 2.2 findNextFocus 如果开发者没有指定nextFocusId,则用findNextFocus找指定方向上最近的视图 看一下这里的用法...,转换到了root坐标系中。...小结 经过对源码的分析,系统本身寻找下一个焦点视图的过程是: 首先寻找用户指定了id的视图,从当前焦点视图的节点开始遍历,直到找到匹配该id的视图。...比如ScrollView,它会在dispatchKeyEvent的时候,自己去处理,用来进行内部的焦点移动或者整体滑动。...这也就是为什么onKeyDown里居然截获不到按键事件的原因。 本文从源码的角度分析了焦点的移动原理,如果大家有兴趣可以一起多多交流。

    3.6K10

    【Android 异步操作】线程池 ( Worker 简介 | 线程池中的工作流程 runWorker | 从线程池任务队列中获取任务 getTask )

    文章目录 一、线程池中的 Worker ( 工作者 ) 二、线程池中的工作流程 runWorker 三、线程池任务队列中获取任务 getTask 在博客 【Android 异步操作】线程池 ( 线程池...= null // 该逻辑中从线程池任务队列中获取任务 , 然后执行该任务 // 此处一直循环读取线程池任务队列中的任务并执行 while (task !...getTask ---- getTask 从 线程池 任务队列中 获取任务 , 该方法执行 阻塞 或 定时等待 任务 , 具体执行哪个需要根据当前的配置情况 ; 这里通过 线程数 判断该线程是 核心线程..., 还是 非核心线程 ; 非核心线程 : 判定条件 : 如果当前执行的线程 大于 核心线程数 , 就是非核心线程 获取方法 : 非核心线程 调用 poll 方法从任务队列中取任务 线程回收 : 如果超过...大于 核心线程数 , 就是非核心线程 // 调用 poll 方法从任务队列中取任务, 如果超过 keepAliveTime 时间还取不到任务 ,

    79500
    领券