注解在android中的使用】的更多相关文章

注解在android程序中的使用 何为注解: 在Java其中,注解又叫做"元数据",它为我们在源码中加入信息提供了一种形式化的方法.让我们能在以后的某个时间方便的使用这些数据.更确切的说,注解在一定的程度上将数据与元代码进行了绑定,并非将数据保存在外部文件里.当然.这里仅仅介绍Android开发相关的技术.至于注解我会在Java学习总结篇中进行具体的研究和总结.那么.接下来我们一个实例来介绍注解在android开发中的巧妙应用. 实例描写叙述: 在这里.我们使用注解替换掉android…
转自:http://www.2cto.com/kf/201405/302998.html 这篇文章主要讲解注解实现findViewById的功能,首先我们来熟悉一下在java中怎么定义一个注解和解析一个注解 注解的概念是在jdk5.0中提出来的,在java.lang的包中已经定义了三个注解:Override,Deprecated,SuppressWarningsOverride相信大家非常熟悉,就是表明这个方法是改写了父类的方法Deprecated表示在新版本的 jdk中已经不建议使用这个方法或…
Enums often require more than twice as much memory as static constants. You should strictly avoid using enums on Android. 很多开发规范都是不建议在Android中使用枚举的,在Android系统中使用枚举的开销是使用常量的2倍.一般地,在一个文件中定义常量 public class FileType { public static final int TYPE_MUSIC =…
android 中的一些资源注解,让编译器帮你检查代码 写方便的时候可以用注解来声明一些参数,以明确的指示参数的类型,让代码更安全.我们看到,在android源代码里大量使用了注解.我整理了一些注解如下: @NonNull  告诉编译器,这个参数是非空的,编译器会帮你做出检查. 示例: @NonNull public static Snackbar make(@NonNull View view, @StringRes int resId, @Duration int duration) {  …
预备知识: Java注解基础 Java反射原理 Java动态代理 一.布局文件的注解 我们在Android开发的时候,总是会写到setContentView方法,为了避免每次都写重复的代码,我们需要使用注解来代替我们做这个事情,只需要在类Activity上声明一个ContentView注解和对应的布局文件就可以了. @ContentView(R.layout.activity_main) public class MainActivity extends AppCompatActivity {…
反射 Java反射(Reflection)定义 Java反射机制是指在运行状态中 对于任意一个类,都能知道这个类的所有属性和方法:对于任何一个对象,都能够调用它的任何一个方法和属性: 这样动态获取新的以及动态调用对象方法的功能就叫做反射. 比如像下面: //获取类 Class c = Class.forName("java.lang.String"); // 获取所有的属性 Field[] fields = c.getDeclaredFields(); StringBuffer sb…
之前关于如何实现屏幕页面切换,写过一篇博文<Android中使用ViewFlipper实现屏幕切换>,相比ViewFlipper,ViewPager更适用复杂的视图切换,而且Viewpager有自己的adapter,这也让其适应复杂对象,实现数据的动态加载. ViewPager是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.而viewpager就是其中之一,利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等. 下面我们就展示下Vie…
Android中网络请求框架Retrofit的使用注意事项 1.Retrofit是基于OkHttp网络请求框架的二次封装而已,懂Okhttp的小伙伴,那么Retrofit也就基本都会. 2.Retrofit采用注解配置请求的方式: 以@GET(get请求)和@POST(post请求)两种方式 @Query,表示请求上一个请求参数 @QueryMap,表示请求上多个请求参数 3.Retrofit采用框架初始化请求方式:有一个call,表示异步请求线程. 具体的代码详见如下: 第一,写一个对应对象的…
Android中的Touch事件处理 主要内容 Activity或View类的onTouchEvent()回调函数会接收到touch事件. 一个完整的手势是从ACTION_DOWN开始,到ACTION_UP结束. 简单的情况下,我们只需要在onTouchEvent()中写个switch case语句,处理各种事件(Touch Down. Touch Move. Touch Up等),但是比较复杂的动作就需要更多的处理了. ViewGroup作为一个parent是可以截获传向它的child的tou…
上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [ViewInject] (上). 本篇博客将带大家实现View的事件的注入. 1.目标效果 上篇博客,我们的事件的代码是这么写的: 光有View的注入能行么,我们写View的目的,很多是用来交互的,得可以点击神马的吧.摒弃传统的神马,setOnClickListener,然后实现匿名类或者别的方式神马的,我…
定义: 我们可以在Android的framework中的ViewGroup类里找到定义的类: public static class LayoutParams{...} 此类有如下注释: LayoutParams are used by views to tell their parents how they want to be laid out. View对象使用LayoutParams对象来告知其上层控件自己需要多少空间. The base LayoutParams class just…
一.Android中WebView的漏洞分析最近在开发过程中遇到一个问题,就是WebView使用的时候,还是需要解决之前系统(4.2之前)导致的一个漏洞,虽然现在这个系统版本用户很少了,但是也不能忽视,关于这个漏洞,这里就不多做解释了,可能有的同学早就了解了,本来想写一篇文章详细介绍一下,但是网上的知识太多了,而且都很详细,就没弄了,这里大致简单明了的说几句:第一.漏洞产生的原因这个漏洞导致的原因主要是因为Android中WebView中的JS访问本地方法的方式存在缺陷,我们做过交互的都知道,A…
原文网址:http://android-performance.com/android/2014/02/17/android-manage-memory.html 本文内容翻译自:http://developer.android.com/training/articles/memory.html 随机存取存储器(RAM)再任何软件开发环境中都是宝贵的资源,但是在移动操作系统中,内存资源更为宝贵,使用时也会收到限制.虽然Android的Dalvik虚拟机有运行时的垃圾回收机制,但是这不意味着你的A…
 WIFI就是一种无线联网技术,常见的是使用无线路由器.那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网.如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为“热点”.        在Android中对Wifi操作,android本身提供了一些有用的包,在android.net.wifi包下面,主要包括以下几个类和接口:   1.ScanResult    主要用来描述已经检测出的接入点,包括接入点的地址,接入点的名称,身份认证,频率,信号强度等信息.其实…
上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [ViewInject] (上). 本篇博客将带大家实现View的事件的注入. 1.目标效果 上篇博客,我们的事件的代码是这么写的: package com.zhy.zhy_xutils_test; import android.app.Activity; import android.os.Bundle;…
一.前言 之前已经写了一个爆破签名校验的工具kstools,很多同学也在使用,但是也反馈了不少问题,之前一篇文章也介绍了,关于爆破之后第三方登录问题修复,这篇我们在综合说明一下一些后遗症问题,关于kstools工具说明以及工具的原理,可以看这篇文章说明:Android中自动爆破签名工具kstools说明. 二.样本分析 下面开始进入正题吧,关于有些同学反馈,使用该kstools爆破某app之后,出现无限制重启问题,关于这个问题,我没见过,很好奇就是尝试了这个样本案例: 看到了,的确是这样的,无限…
Android中的WebView 中加载的URL 默认是在手机浏览器中加载的,我们可以覆盖这种默认的动作,让网页在WebView中打开.通过设置WebView的WebViewClent 达到这个效果. WebView中加载的网页中的JS事件可用和Native 代码交互.js 如何调用原生中的方法呢? 1.设置WebView中的JavaScript可用 2.设置WebView的JavascriptInterface  即原生中与js的接口 源码: 在 Activity中声明了一个 JavaScri…
Android中高低API版本兼容使用@TargetApi或者@SuppressLint("NewApi") 例如:AndroidManifest.xml中,我们配置了sdk版本的最低为9,目标sdk为19 <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="19" /> 当我们使用了大于sdk版本为9的API时候,编译器就会提示警告.例如: import and…
一. Java反射机制 Reflection 是Java被视为动态(或准动态)语言的一个关键性质.这个机制同意程序在执行时透过Reflection APIs取得不论什么一个已知名称的class的内部信息,包含其modifiers(诸如public, static 等等).superclass(比如Object).实现之interfaces(比如Serializable).也包含fields和methods的全部信息,并可于执行时改变fields内容或调用methods(包含被声明为private…
Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! Android中,Activity和Fragment之间传递对象,可以通过将对象序列化并存入Bundle或者Intent中进行传递,也可以将对象转化为JSON字符串,进行传递. 序列化对象可以使用Java的Serializable的接口.Parcelable接口.转化成JSON字符串,可以使用Gson等库. 1.Serializable Model public class Author implement…
在Android中我们能够通过Thread+Handler实现多线程通信.一种经典的使用场景是:在新线程中进行耗时操作.当任务完毕后通过Handler向主线程发送Message.这样主线程的Handler在收到该Message之后就能够进行更新UI的操作.上述场景中须要分别在Thread和Handler中编写代码逻辑,为了使得代码更加统一,我们能够使用AsyncTask类. AsyncTask是Android提供的一个助手类,它对Thread和Handler进行了封装,方便我们使用. Andro…
在编程开发中,内存的占用是我们经常要面对的现实,通常的内存调优的方向就是尽量减少内存的占用.这其中避免创建不必要的对象是一项重要的方面. Android设备不像PC那样有着足够大的内存,而且单个App占用的内存实际上是比较小的.所以避免创建不必要的对象对于Android开发尤为重要. 本文会介绍一些常见的避免创建对象的场景和方法,其中有些属于微优化,有的属于编码技巧,当然也有确实能够起到显著效果的方法. 使用单例 单例是我们常用的设计模式,使用这种模式,我们可以只提供一个对象供全局调用.因此单例…
更多Android高级架构进阶视频免费学习请点击:[https://space.bilibili.com/474380680] 在Android中我们可以通过Thread+Handler实现多线程通信,一种经典的使用场景是:在新线程中进行耗时操作,当任务完成后通过Handler向主线程发送Message,这样主线程的Handler在收到该Message之后就可以进行更新UI的操作.上述场景中需要分别在Thread和Handler中编写代码逻辑,为了使得代码更加统一,我们可以使用AsyncTask…
Afinal 是一个android的sqlite orm 和 ioc 框架. Afinal 是一个android的sqlite orm 和 ioc 框架.同时封装了android中的http框架,使其更加简单易用: 使用finalBitmap,无需考虑bitmap在android中加载的时候oom的问题和快速滑动的时候图片加载位置错位等问题. Afinal的宗旨是简洁,快速.约定大于配置的方式.尽量一行代码完成所有事情. 目前Afinal主要有四大模块: FinalDB模块:android中的o…
前言 今天说Java模块内容:反射. 反射介绍 正常情况下,我们知晓我们要操作的类和对象是什么,可以直接操作这些对象中的变量和方法,比如一个User类: User user=new User(); user.setName("Bob"); 但是有的场景,我们无法正常去操作: 只知道类路径,无法直接实例化的对象. 无法直接操作某个对象的变量和方法,比如私有方法,私有变量. 需要hook系统逻辑,比如修改某个实例的参数. 等等情况. 所以我们就需要一种机制能让我们去操作任意的类和对象. 这…
LinearLayout : 线性布局 在一般情况下,当有很多控件需要在一个界面列出来时,我们就可以使用线性布局(LinearLayout)了,  线性布局是按照垂直方向(vertical)或水平方向(horizontal)的顺序依次排序子元素,每一个子元素都位于前一个元素之后,下面我们就简单的了解一下吧 在XML布局文件中会遇到如下一些单位 px:是屏幕的像素点   dp:一个基于density的抽象单位,屏幕的物理尺寸   sp:同dp相似,但会根据用户的字体大小进行缩放 XML代码如下:改…
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来接收来自系统和应用中的广播.在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能:当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作:当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户…
之前的博文<Android中使用ExpandableListView实现好友分组>我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的仿微信APP来对ExpandableListView做一个扩展介绍,实现效果如下(通讯里使用ExpandableListView实现): 相关知识点博文链接: Android中使用ExpandableListView实现好友分组 Android中Fragment和ViewPager那点事儿 Android中List…
昨天的(今天凌晨)的博文<Android中Fragment和ViewPager那点事儿>中,我们通过使用Fragment和ViewPager模仿实现了微信的布局框架.今天我们来通过使用ListView实现其中联系人一栏的基本视图,效果如下: 要实现上图的效果,我们要用到两个知识点: 1.这里我们使用自定义适配实现图文列表(当然也可以用SimpleAdapter) 通过继承BaseAdapter(抽象类)自定义适配器可以实现更灵活更复杂的列表. 自定义适配器ListView的优化: (1)使用固…
在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragment与Activity之间的交互(两种实现方式)>中我们介绍了ViewPager以及Fragment各自的使用场景以及不同的实现方式. 那如果将他们两结合起来,会不会擦出点火花呢,答案是肯定的.之前在介绍ViewPager时,我们实现了多个ImageView的切换,并配合更新导航原点的状态.那我们现在…