Android开发时积累

序列化

序列化是将对象的状态信息转换为可以存储或传输的形式的过程,序列化最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。
对比:
  • Serializable是java序列化的方式,存取的过程有频繁的IO,性能较差,但是实现简单。
  • Parcelable是android序列化的方式,采用共享内存的方式实现用户空间和内核空间的交换,性能很好,但是实现方式比较复杂。
  • Serializable可以持久化存储,Parcelable是存储在内存中的,不能持久化存储。

​​​​​​​

存储方式

进程和线程

进程是操作系统进行资源分配的最小单位,其中资源包括:CPU、内存空间、磁盘10等,同一进程中的多条线程共享该进程中的全部系统资源,而进程和进程之间是相互独立的。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身,用户进程就是所有由你启动的进程。

线程是CPU调度的最小单位,必须依赖进程而存在

并发和并行

并发:指应用能够交替执行不同的任务,比如单CPU核心下执行多线程并非是同时执行多个任务,如果你开两个线程执行,就是在你几乎不可能察觉到的速度不断去切换这两个任务,已达到"同时执行效果",其实并不是的,只是计算机的速度太快,我们无法察觉到而已.

并行:指应用能够同时执行不同的任务,例:吃饭的时候可以边吃饭边打电话,这两件事情可以同时执行

两者区别:一个是交替执行,一个是同时执行.

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁。

ThreadLocal和Synchonized

ThreadLocal和Synchonized都用于解决多线程并发訪问。可是ThreadLocal与synchronized有本质的差别。synchronized是利用锁的机制,使变量或代码块在某一时该仅仅能被一个线程訪问。而ThreadLocal为每个线程都提供了变量的副本,使得每个线程在某一时间訪问到的并非同一个对象,这样就隔离了多个线程对数据的数据共享。

CAS(Compare And Swap)原子性

假定有两个操作A和B(A和B可能都很复杂),如果从执行A的线程来看,当另一个线程执行B时,要么将B全部执行完,要么完全不执行B,那么A和B对彼此来说是原子的。

CAS实现原子操作的三大问题

ABA问题:如果一个值原来是A,变成了B,又变成了A,那么使用CAS进行检查时会发现它的值没有发生变化,但是实际上却变化了。解决办法:就是使用版本号。在变量前面追加上版本号,每次变量更新的时候把版本号加1,那么A→B→A就会变成1A→2B→3A。

循环时间长开销大:自旋CAS如果长时间不成功,会给CPU带来非常大的执行开销。

只能保证一个共享变量的原子操作:当对一个共享变量执行操作时,我们可以使用循环CAS的方式来保证原子操作,但是对多个共享变量操作时,循环CAS就无法保证操作的原子性,解决办法:用锁或把多个共享变量合并成一个共享变量来操作。比如,有两个共享变量i=2,j=a,合并一下ij=2a,然后用CAS来操作ij。

AQS:队列同步器AbstractQueuedSynchronizer(以下简称同步器或AQS),是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。

volatile变量自身具有下列特性:

可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。

原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。

“==”和equals()区别

// “==“比较的是内存中存放的位置,值相等不一定返回true,

// equals()比较的是字符序列,值相等返回true

//值相等hashCode就相等

String str1 = "a" + "b" + "c";
String str2 = "abc";
String str3 = new String("abc");
Log.d("打印1", (str1 == str2) + "");//true
Log.d("打印2", (str1 == str3) + "");//false
Log.d("打印3", (str3 == str2) + "");//false
Log.d("打印4", str1.equals(str3) + "");//true
Log.d("打印5", str1.equals(str2) + "");//true
Log.d("打印6", str3.equals(str2) + "");//true
Log.d("打印7", str1.hashCode() + " " + str2.hashCode() + " " + str3.hashCode());//打印7: 96354 96354 96354

内存泄露和内存溢出(OutOfMemory)

查看另一篇博客:内存溢出和内存泄漏的介绍_ailinghao的博客-CSDN博客

===========================内存优化相关start================================ 

图片内存大小
一般的,计算一张图片占用的内存大小公式: 分辨率 * 每个像素点的大小。
每个像素点的大小:在 Android 中一般我们会以 RGB_565 或者 ARGB_8888 格式加载位图,其中 RGB_565 表示:R 占用 5 位数据, G 使用 6 位表示, B 也是 5 位,则一个像素点为: 16 位两字节。( ARGB_8888 同理)
比如 100x100 分辨的图片,以 RGB_565 加载进入内存,则其内存大小为: 100x100x2 = 20000 字节。

Bitmap压缩

Bitmap 压缩的两种方式:1.改变其宽高,2.通过减少其单个像素占用的内存
BitmapFactory.Options
1.inPreferredConfig     设置图片解码后的像素格式,(建议使用 ARGB_8888)
  • ALPHA_8:表示8Alpha位图,即透明度占8个位,一个像素点占用1个字节,它没有颜色,只有透明度。
  • ARGB_4444:表示16ARGB位图,即A=4,R=4,G=4,B=4,一个像素点占4+4+4+4=16位,2个字节。
  • ARGB_8888:表示32ARGB位图,即A=8,R=8,G=8,B=8,一个像素点占8+8+8+8=32位,4个字节。
  • RGB_565 :表示16RGB位图,R=5,G=6,B=5,它没有透明度,一个像素点占5+6+5=16位,2个字
2.inSampleSize     设置图片的采样率进行图片的缩放显示。比如值为2,则加载图片的宽高是原来的 1/2,整个图片所占内存的大小就是原图的 1/4
 
质量压缩:
 private void compressQuality() {
        Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.test);
        mSrcSize = bm.getByteCount() + "byte";
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        bm.compress(Bitmap.CompressFormat.JPEG, 100, bos);
        byte[] bytes = bos.toByteArray();
        mSrcBitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
    }
 
质量压缩不会减少图片的像素,它是在保持像素的前提下改变图片的位深及透明度,来达到压缩图片的目的,图片的长,宽,像素都不会改变,那么bitmap 所占内存大小是不会变的。我们可以看到有个参数:quality ,可以调节你压缩的比例,但是还要注意一点就是,质量压缩堆 png 格式这种图片没有作用,因为png 是无损压缩。
三级缓存的原理就是当 App 需要引用缓存时,首先到内存缓存中读取,读取不到再到本地缓存中读取,还获取不到就到网络异步读取,读取成功之后再缓存到内存和本地中。

===========================内存优化相关end================================= 

Context

Context 内存泄漏问题 :1.静态资源导致的内存泄漏 2.单例模式导致内存泄漏
1.Context 运行上下文环境 ,从代码角度看 Application, Service Activity 都是 Context
2.所有 Context 都是在应用的主线程 ActivityThread 中创建的,由于 Application, Service Activity 的祖先都是 Context 抽象类,所以在创建它们的同时也会为每一个类创建一个ContextImpl 类, ContextImpl 是Context 的之类,真正实现 Context 功能方法的类。因此 Application, Service Activity 都关联着一个 ContextImpl 对象。
3.尽量少用 Context 对象去获取静态变量,静态方法,以及单例对象。以免导致内存泄漏。
在创建与 UI 相关的地方,比如创建一个 Dialog ,或者在代码中创建一个TextView ,都用 Activity Context 去创建。然而在引用静态资源,创建静态方法,单例模式等情况下,使用生命周期更长的Application的Context 才不会导致内存泄漏。

工具下载https://github.com/inferjay/AndroidDevTools

《Java编程思想》 第5版 https://github.com/lingcoder/onJava8/

怎样将自己的电脑变成一个服务器(本地服务器)https://jingyan.baidu.com/article/af9f5a2d79f49a43150a4540.html

屏幕适配https://www.jianshu.com/p/f770ef8410a0

远程测试平台:华为https://deveco.huawei.com/remotetest/devices/    360 http://opentest.360.cn/

APP上架到各大应用市场技巧 https://www.jianshu.com/p/b0242614150b   https://jingyan.baidu.com/article/eae078277bd3641fec5485d6.htmlz
在线制作图表库 https://www.tubiaoxiu.com/src/index.html#/app/charting_resource
力扣(学习算法的网站)https://leetcode-cn.com/
Android记录贴:使用ZXing来实现二维码扫描 https://blog.csdn.net/qq_34261214/article/details/80428722
快速导入源代码到word 软件著作权源代码需要https://blog.csdn.net/u010042660/article/details/78217440
Android RecyclerView 实现item点击水波纹动画效果https://blog.csdn.net/wjj1996825/article/details/80778711
插件库 http://www.jq22.com
fragment重叠的完美解决方案https://blog.csdn.net/yuzhiqiang_1993/article/details/75014591   https://blog.csdn.net/qq_34490018/article/details/80205967
视频接入https://open.hikvision.com/download/5c67f1e2f05948198c909700?type=10
对RecyclerView的封装https://github.com/GitLqr/LQRRecyclerViewLibrary
CardView 简介和使用https://blog.csdn.net/shawnxiafei/article/details/81568537
二维码相关的库https://github.com/bingoogolapple/BGAQRCode-Android
微信底部导航栏的动画https://mp.weixin.qq.com/s/usebBOJWItLSd_3LNp0I3w
android 4.4以上沉浸式状态栏和沉浸式导航栏管理库https://github.com/gyf-dev/ImmersionBar
Android OKHttp使用详解https://www.jianshu.com/p/2663ce3da0db
网络请求工具类之OkHttp3封装(支持缓存、日志、拦截器、断点下载、上传等)https://blog.csdn.net/zsf442553199/article/details/51720241
检查json数据格式是否正确的网站 https://www.json.cn/
Android 开源框架Glide的使用 https://www.cnblogs.com/jiangzhishan/archive/2018/08/06/9428634.html
https://github.com/bumptech/glide

在线制作图表库 https://www.tubiaoxiu.com/src/index.html#/app/charting_resource
推荐Android15个常用的图表库,https://blog.csdn.net/u014133119/article/details/80923327
MPAndroidChart 的简单应用https://blog.csdn.net/ww897532167/article/details/77334345

Unsupported Modules Detected: Compilation is not supported for following modules: skiing. Unfortunately you can't have non-Gradle Java modules and Android-Gradle modules in one project.解决:关闭Android Studio ,去项目根目录删除.idea文件,把项目路径修改重新导入,重启AS搞定

百度地图AppKey申请http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key

推荐几款实用的Android Studio 插件http://www.jianshu.com/p/6f5f818afe4b
Android Studio自动提取控件Style样式    http://blog.csdn.net/shibin1990_/article/details/51685042
Android Studio 代码混淆 https://my.oschina.net/kooeasy/blog/479083?p=1    http://blog.csdn.net/hudashi/article/details/9016805  https://segmentfault.com/a/1190000004461614

Android Studio调试功能使用总结【转】 http://www.cnblogs.com/firstcsharp/p/4333264.html


json 布局尺寸等的学习  http://www.bejson.com/ui/phonesize/

git学习http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137396287703354d8c6c01c904c7d9ff056ae23da865a000

生成.so文件http://mamicode.com/info-detail-1255851.html  或者http://blog.sina.com.cn/s/blog_ad64b8200102vnxl.html
Android studio使用so文件 https://blog.csdn.net/luojie140/article/details/59094876
AndroidJNI 通过C++调用JAVA  http://www.cnblogs.com/likwo/archive/2012/05/21/2512400.html
使用Android Studio 进行NDK开发和调试  http://www.jianshu.com/p/2690c9964110
关于安卓平台JNI编程的一些心得  http://blog.csdn.net/lish100/article/details/47016445

异常查找http://www.myexception.cn/database/1877322.html

模拟器:TotalControl 

开源项目集合Android Open Source Projects

这是一份关于 Java 、Kotlin 、 Android 的学习笔记 GitHub - leavesC/AndroidGuide: 🎁🎁🎁 这是一份给 Android Developer 的进阶不完整指南,喜欢写又长又臭的文章,希望对你有所帮助 🤣🤣

安卓学习网站  玩Android - wanandroid.com - 每日推荐优质文章

一个个人代码库:包含自定义控件、工具、测试、设计模式的示例库。特别是 SuperTextView可以快速实现圆角背景,设置渐变色背景,给控件和文字描边,为控件增加状态图,添加按压时文字或背景变色效果,通过 Adjuster 模块快速插入操作到控件绘制过程中,展示图片,甚至可以直接从网络上下载图片展示...基本上涵盖了 Android 日常开发中会用到的绝大部分效果https://github.com/chenBingX/CoorChiceLibOne

Android:一个线程玩转商品列表所有item的倒计时器,并对Adapter进行单控件刷新优化Android:一个线程玩转商品列表所有item的倒计时器,并对Adapter进行单控件刷新优化 - 简书

Android远程图片获取和本地缓存 http://blog.csdn.net/hbzh2008/article/details/9038551
android端读取本地图片出现OutOfMemoryException  http://blog.sina.com.cn/s/blog_73e890f401016nmw.html
 android bitmap内存那些事    http://blog.csdn.net/duantihi/article/details/50492056
Android中图片占用内存的计算  http://blog.csdn.net/hudashi/article/details/7856519


Android图片压缩(质量压缩和尺寸压缩)http://www.cnblogs.com/huangjianboke/p/5569978.html




Android中ImageView.ScaleType属性值 http://blog.csdn.net/lirui0822/article/details/38423423    http://blog.csdn.net/hhbgk/article/details/8101676


setImageResource和setImageDrawable区别http://jingyan.baidu.com/article/6525d4b1332117ac7d2e9433.html


pulltorefresh实现下拉刷新和上拉加载跟多更多http://blog.csdn.net/zhongkejingwang/article/details/38868463




Android 开源项目分类汇总 https://github.com/Trinea/android-open-project    https://github.com/wasabeef/awesome-android-ui


程序员客栈https://www.proginn.com/




android ListView 几个重要属性 http://blog.csdn.net/avenleft/article/details/7334060     http://blog.csdn.net/tmj2014/article/details/7758787
Android ListView默认选中某一项 http://blog.csdn.net/imhxl/article/details/51161999
android listview addHeaderView和addFooterView的注意事项 http://892848153.iteye.com/blog/1923680
Android 解决在ListView历史复用中Edittext数据显示混乱 https://blog.csdn.net/fan7983377/article/details/51516155


《Android 开发工程师面试指南》http://www.diycode.cc/wiki/androidinterview


录音功能http://www.linuxidc.com/Linux/2014-12/110230.htm       http://www.soso.io/article/103778.html


Android中assets目录和raw目录的区别和使用情况 http://blog.csdn.net/fingding/article/details/46791755


EditText的属性  http://www.cnblogs.com/xilinch/archive/2012/06/25/2560946.html      http://blog.csdn.net/lastdream/article/details/24365633
Android开发之EditText属性详解 http://www.cnblogs.com/weixing/p/3257058.html


Android中常用的音频编解码器常量MediaRecorder.AudioEncoder http://www.shangxueba.com/jingyan/1846448.html        http://www.2cto.com/kf/201404/294090.html


使用AndioRecord类录音 http://www.cnblogs.com/mythou/p/3241925.html   和常见错误http://blog.csdn.net/wyyl1/article/details/45719099






29个android开发常用的类、方法及接口    http://www.cnblogs.com/gaobig/p/5010006.html


Android ViewPager和Fragment实现顶部导航界面滑动效果、标签下的tab位置 http://blog.csdn.net/asdf717/article/details/52087167


Android开发实现连续跳转几个界面后在最后一个界面完美跳回最初的界面 http://blog.csdn.net/u011895534/article/details/47616979


startActivityForResult和setResult详解http://www.cnblogs.com/lijunamneg/archive/2013/02/05/2892616.html


Android M 新的运行时权限开发者需要知道的一切,android开发者http://www.android100.org/html/201509/01/178112.html


android 6.0 权限管理的学习资料和使用例子 http://blog.csdn.net/yangqingqo/article/details/48371123


 Android中的canvas介绍  http://blog.csdn.net/linghu_java/article/details/8939952




Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释http://www.cnblogs.com/xiaoQLu/archive/2012/07/17/2595294.html




Android APK反编译就这么简单 详解(附图) http://blog.csdn.net/yelbosh/article/details/45250773


 Android之drawable state各个属性详解 http://blog.csdn.net/leasystu/article/details/7250885


 Android中 setText()和append()方法区别在哪里?https://zhidao.baidu.com/question/1987757746064089707.html


JNI ERROR (app bug): local reference table overflow (max=512) http://blog.csdn.net/claudiii/article/details/37877303     http://blog.csdn.net/xpz445094213/article/details/46633889


android 图文混排 显示 与 图文混排输入 http://blog.csdn.net/banzhuancaidao/article/details/18701517




Android开发——告诉你Adapter应该写在Activity里面还是外面 http://blog.csdn.net/seu_calvin/article/details/52693157




[Android] ListView中getView的原理+如何在ListView中放置多个item http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html       http://mzh3344258.blog.51cto.com/1823534/889879


Android智慧北京之轮播图与下拉、上拉刷新 http://blog.csdn.net/an13531829360/article/details/52202375


android Banner控件的优雅实现 http://www.jianshu.com/p/a5655934f622


轮播图 http://download.csdn.net/detail/jimtrency/9633078     https://github.com/alibaba/UltraViewPager/blob/master/README-ch.md


 关于ViewPager的点击事件的处理  http://blog.csdn.net/luanxuye/article/details/51377411




 Android中通知的使用-----Notification详解 http://blog.csdn.net/qinjuning/article/details/6915482         http://blog.csdn.net/QQXIAOZHIJIANG/article/details/51704759   
                                          http://uule.iteye.com/blog/1706092  http://www.cnblogs.com/travellife/p/Android-Notification-xiang-jie.html




AndroidManifest.xml文件详解(receiver) http://blog.csdn.net/think_soft/article/details/7583047


 Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等 http://blog.csdn.net/jdsjlzx/article/details/44160603/






深度了解Android 7.0 ,你准备好了吗? http://wetest.qq.com/lab/view/288.html?from=adsout_qqtips_past2_288&sessionUserType=BFT.PARAMS.211332.TASKID&ADUIN=756803884&ADSESSION=1487917806&ADTAG=CLIENT.QQ.5497_.0&ADPUBNO=26621




安卓中为了获取context的方法和区别(getContext,getActivity,this,mainActivity.this等) http://blog.csdn.net/wyl_1994/article/details/51605662


Android判断文件类型(视频、音频、图片等)http://www.tuicool.com/articles/fYRZzy


 Android 开发技巧集合 http://blog.csdn.net/xiechengfa/article/details/38965165


支付宝开发 https://openhome.alipay.com/platform/home.htm         http://www.open-open.com/lib/view/open1460935920454.html    


android app 快速接入支付宝流程(android studio)http://blog.csdn.net/qq_33078541/article/details/50578445


支付宝技术在线客服(发送三次技术两个字):  https://cschannel.alipay.com/newPortal.htm?scene=mt_zczx&token=&pointId=&enterurl=https%3A%2F%2Fdoc.open.alipay.com%2Fdocs%2Fdoc.htm%3Fspm%3Da219a.7629140.0.0.vbo0eI%26treeId%3D193%26articleId%3D105327%26docType%3D1


Android支付宝SDK开发笔记 http://www.cnblogs.com/Mark-Liu/p/4465471.html9


AndroidApk混淆编译时,报告java.io.IOException: The same input jar[xxx/xxx.jar]is specified twice. http://blog.csdn.net/iwanttohitren/article/details/52702415


Gradle build报错:Please correct the above warnings first解决方案 http://blog.csdn.net/xx326664162/article/details/52387583?locationNum=3&fps=1


Fragment系列之Transactions.commit和Activity的状态 http://blog.csdn.net/basanyeyu/article/details/50510518


fragment简单有用的一些细节 http://blog.csdn.net/u013377714/article/details/51204780


java.lang.IllegalStateException:Fragment XXXFragment{409864b0} not attached to Activity http://blog.csdn.net/gaojiaxingde/article/details/37908335




 Android实现下载图片并保存到SD卡中  http://blog.csdn.net/ameyume/article/details/6528205


Android中的windowSoftInputMode属性详解 http://www.jb51.net/article/56043.htm
android中的软键盘的显示与隐藏 http://www.cnblogs.com/zhwl/archive/2012/07/06/2579073.html


 Intent传递List和Object和List<Object>(附源码) http://blog.csdn.net/wirelessqa/article/details/8589200




 Android PopupWindow怎么合理控制弹出位置(showAtLocation) http://www.cnblogs.com/popfisher/p/5608436.html


好例子网    和http://www.javaapk.com/


 


学习网站  http://yiibai.com/    http://www.jikedaohang.com/ios.html


android开发网  android.sjsjw.com


 Android小记:Animation的Interpolator使用方法 http://blog.csdn.net/lyx4228716/article/details/50971996


  Error:(1, 0) Cause: com/android/build/gradle/LibraryPlugin : Unsupported major.minor version 52.0 http://blog.csdn.net/rodulf/article/details/52976353 (在最外面的build.gradle)


深入了解Android蓝牙Bluetooth——《基础篇》https://blog.csdn.net/androidstarjack/article/details/60468468

视频播放器 GitHub - jianjunxiao/NiceVieoPlayer: IjkPlayer/MediaPlayer+TextureView,支持列表,完美切换全屏、小窗口的Android视频播放器

Android视频播放器开发—— 探究MediaPlayer  Android视频播放器开发—— 探究MediaPlayer_只为知音的博客-CSDN博客




总结:
 成员变量不需要手动初始化(不需要设置初始值),系统默认会设置初始值
 局部变量需要设置初始值(一个方法里面的变量)


1.startActivity( )仅仅是跳转到目标页面
startActivityForResult(Intent intent, Int requestCode)不仅可以跳转到目标页面,还可以在目标页面退出时返回到parent页面可以给parent传值
setResut(int resultCode, Intent intent)当当前界面finish之后才把数据传给parent界面,他要在finish之前写
onActivityResult(int requestCode, int resultCode, Intent intent)


      mPassWord.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);//显示密码
    mPassWord.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);//隐藏密码
                Selection.setSelection(mPassWord.getText(), mPassWord.getText().length()); // 输入框光标一直在输入文本后面








6.0权限适配:


  1.检查权限ContextCompat.checkSelfPermission
  2.申请权限   ActivityCompat.requestPermissions
  3.处理拒绝权限


   空格字符
\t 制表符
\r 回车符
\n 换行符
\f 换页符




Android Support Library包的区别


Android Support v4:这个包是为了照顾1.6及更高版本而设计的,这个包是使用最广泛的。


Android Support v7:这个包是为了考虑照顾2.1及以上版本而设计的,但不包含更低,故如果不考虑1.6,我们可以采用再加上这个包,另外注意,v7是要依赖v4这个包的,即,两个得同时被包含。


Android Support v13:这个包的设计是为了android 3.2及更高版本的,一般我们都不常用,平板开发中能用到。






当点击listview的条目失效时在条目的根布局中添加 android:descendantFocusability="blocksDescendants"属性




//


 ViewPage来源于android -support.v4


    什么是viewPage?
    ViewPage 类似于ListView 用于显示多个View集合. 支持页面左右滑动.


    如何使用viewPage以及需要注意点?
    ViewPage 需要Adapter:
    PagerAdapter 有四个重要方法:
    (1) void destroyItem(ViewGroup container, int position, Object object): 销毁
    (2)Object instantiateItem(ViewGroup container, int position) : 添加View
    (3) int getCount() : 获得View总是
    (4) boolean isViewFromObject(View view, Object obj) : View比较


    监听器: setOnPageChangeListener :页面发生改变
    (1) void onPageSelected(int position) :View进行切换 :position 新的页面位置
    (2) void onPageScrolled(int arg0, float arg1, int arg2) :页面正在滚动的时候[滑动偏移信息],回调
    (3) void onPageScrollStateChanged(int arg0) :页面状态发生变化的时候,回调


ListView 因为使用相同的View,所以采用复用。
而ViewPage ,是基于View ,子类有许多不同,所以要注销.


public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
View view= imageVisws.get(position % images.length);
container.removeView(view); // 重复加入会引起异常
container.addView(view);
return view;


导致异常:java.lang.IllegalStateException The specified child already has a parent. You must call removeView()
原因: 被加入的View 有父类, 所以添加到另外一个集合中之前,必须清除父类.
}





2.获得某个控件的宽高:
   
    View.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
    View.getMeasuredWidth(), View.getMeasuredHeight()


  获取手机屏幕的宽高:
   /**
     * 获取屏幕高度(px)
     */
    public static int getScreenHeight(Context context) {
        return context.getResources().getDisplayMetrics().heightPixels;
    }
    /**
     * 获取屏幕宽度(px)
     */
    public static int getScreenWidth(Context context) {
        return context.getResources().getDisplayMetrics().widthPixels;
    }
    /**
* 得到设备的密度
*/
public static float getScreenDensity(Context context) {
return context.getResources().getDisplayMetrics().density;
}


/**
* 把密度转换为像素
*/
public static int dip2px(Context context, float px) {
final float scale = getScreenDensity(context);
return (int) (px * scale + 0.5);
}


3.代码中设置透明度:configWindowAlpha(0.5f)
 private void configWindowAlpha(float alpha) {
        WindowManager.LayoutParams lp = getWindow().getAttributes();
        lp.alpha = alpha;
        getWindow().setAttributes(lp);
    }

///接口回调start//

1、在需要传递数据的地方(类)定义一个接口,接口里面需要定义监听的方法以及参数

2、定义一个的接口类型的变量存储数据。

3、定义一个公共的方法,让外部去调用,并且传递接口类型的参数,给其定义的接口类型的数据初始化(就是初始化2中接口变量)

/**
 * 定义一个接口
 */
public interface  OnListener{
  void onListener(String code,String msg);
}
/**
 *定义一个变量储存数据
 */
private OnListener listener; 
/**
 *提供公共的方法,并且初始化接口类型的数据
 */
public void setListener(OnListener listener){
  this.listener = listener;
}

 4、在合适的位置调用接口里面的方法,传递数据。(比如点击事件的地方)

/**
 * 在合适的位置给其调用接口,给其赋值
 */
 @Override
 public void onClick(View v) {
      if (listener!=null) {
          listener.onListener(rtncode,rtnmsg);
      }
}

5、在需要获取数据的地方,创建对象调方法。

allPersonAdapter.setListener(new OnListener() {
                    @Override
                    public void onListener(String code,String msg) {
                        
                    
                    }
                });

///接口回调end//

这是一些比较全面而且开发中经常用到的一些网址:

Android开发随记   Android开发随记 - 掘金

android零碎知识收集大全:这是一些常用方法的封装工具类,包含好多知识,比如:添加水印,身份证号验证等。

RX学习内容:这是RX操作符比较全面的文章,方便大家学习。

android面试相关:这是android面试相关的,很全面哦!!

干货集中营:这里面包含好多干货哦!!!是不是很饥渴,释放你的野性吧!!哈哈~~

七天学会NodeJS:有喜欢研究各类技术滴小伙伴研究一下吧,带你飞哦~~~

这是翔哥整理的android学习网站:网站知识点整理比较全面,内容结构有条理!!!

好多特效的网站:盗用爱奇艺会员滴一句话:满足你滴挑剔品味!!

android源码服务专家:Javaapk,我想小伙伴们都知道,我就不再说明了。

这是泡在网上的日子大牛整理的例子网站:我想说,你想要的特效在这里,别犹豫了,点开看看吧!

极客学院滴IT技术图文教程库:这里面不仅仅只有android,好多技术都有,赶快来学习吧!!

ECMAScript 6入门 : 说实话,这是啥?我也不知道。。。–>开源的JavaScript语言教程

对stackoverflow上Java相关、投票数TOP100的问答进行翻译 : 喜欢翻译的可以参与一下。

recyclerview多布局解决方案 : 还在为多布局感到烦恼?还在为adapter处理逻辑繁杂感到头疼?还在为需求变更,找代码重写感到无奈?看看这个吧,完全解耦,让你的代码耦合性降低!!!

全栈攻城狮 : 想不想在移动,前端,后台,一领风骚,葵花宝典拿走,不谢!!

比较全面的github经典效果总结 :我看了一部分,好多是star比较多的框架,但是有利有弊,好多也是作者不更新了,好几年前的,不过可以参考!!!

Android面试与笔试相关问题:

(1)Android面试多进程编程相关问题

(2)Android View事件机制相关问题

(3)Android View绘制相关问题

(4)Android RemoteView相关问题

(5)Android 动画相关问题

(6)Android Window相关问题

(7)Android 线程与消息相关问题

(8)16年鹅厂,KFC,娘娘等面试总结

   (9)阿里巴巴面经记 | 掘金技术征文阿里巴巴面经记 | 掘金技术征文 - 掘金

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值