Android中反射的简单应用
自己对反射的理解和应用还处于比较浅显的阶段,写这篇文章更多在于整理总结,也就是帮助自己进一步的理解和学习反射机制。
反射
反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。
java中类反射
反射是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性和方法。
简单总结这些定义,那就是反射可以让我们获得一个类的所有信息,包括私有属性和私有方法,对于我们这种小白,先知道这点就可以啦,那在java中如何使用发射呢。这里我们随便创建一个类来演示。比如说创建一个Book类:
public class Book implements Parcelable
{
private int id=1;
private String name="android";
private String author="wf";
private String getName()
{
return name;
}
}
更多Android中退出应用的实现
退出应用是项目开发中很基本的一个需求,这个功能很简单,也有很多实现的方式,这里把自己知道的退出方法做一个整理,跟大家交流分享一下。
更多Android-Studio:使用Gradle构建不同版本的APP(构建变体)
Android Studio(我使用的Studio版本是2.0)中有一个构建变体的功能,默认位于左下角
那这个功能是做什么用的呢,一般来说我们在做项目的时候,可能有这样的需求,一个项目中需要有不同版本,比如说免费版,收费版,周年庆版啦等等,这些版本大部分功能和模块是一样的只是部分不同,以前可能是通过svn或者git上建立分支来进行版本控制,但维护起来很麻烦。所以构建变体这个功能用官方的说法就是你可以在一个项目里面构建不同的版本,对,而且打包的时候可以一次性打包所有版本,是不是超级爽。英语好的同学可以看官方的教程Configure Build Variants。
更多WebView加载速度优化
在做混合应用的时候,有几个痛点,一个是无网络无法使用,还有一个是受网络环境影响的网页加载速度。今天就这两个问题,和大家交流一下自己的经验。
离线缓存
这个比较容易,开启webView的缓存功能就可以了。
WebSettings settings = webView.getSettings();
settings.setAppCacheEnabled(true);
settings.setDatabaseEnabled(true);
settings.setDomStorageEnabled(true);//开启DOM缓存,关闭的话H5自身的一些操作是无效的
settings.setCacheMode(WebSettings.LOAD_DEFAULT);
更多Android中的图片裁剪(三)之自定义裁剪工具
在上一篇文章中Android中的图片裁剪(二)之开源项目介绍了一些优秀的图片裁剪开源项目,在我们实现自己的裁剪功能的时候,也可以看下这些开源项目的源码,看看大牛们都是怎么实现的。
更多Android中的图片裁剪(二)之开源项目
在上一篇博客Android中的图片裁剪(一)中,简单介绍了一下使用系统自带的裁剪软件实现图片裁剪功能。可是有时候系统自带的裁剪软件不能满足项目需求的时候,只能用三方的或者自己写一个了。
更多Android中的图片裁剪(一)之系统裁剪工具
应用中图片裁剪的需求是很常见的,在android中裁剪的图片最简单的方法就是调用系统中的裁剪图片应用
Intent intent = new Intent();
intent.setAction("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
startActivityForResult(intent, Constants.REQUEST_CODE_RESIZE_IMAGE);
当然在调用系统的裁剪功能时,我们还可以附加一些其他的信息:
intent.putExtra("outputX", 300); //裁剪图片的宽
intent.putExtra("outputY", 300);
intent.putExtra("aspectX", 1); //裁剪方框宽的比例
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true); //是否保持比例
intent.putExtra("return-data", false); //是否返回bitmap
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); //保存图片到指定uri
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); //输出格式
上面的是一些常用的附加信息,如果你的outputX和outputY设置的比较大的话,返回的图片可能会导致OOM。最后在onActivityResult中接收图片就可以了
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode)
{
case CROP_IMAGE_SYS:
Bitmap bitmap = (Bitmap) data.getParcelableExtra("data");//拿到返回图片
/*try
{
//取的裁剪后保存到本地的图片
bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}*/
//TODO
break;
//...
当然因为android碎片化严重,不同厂商的系统也有所差异,所以系统的裁剪图片功能也可能有所不同,这也是坑,就像在我的项目中,发现有些手机基于内存考虑对图片缩略了很多,这样裁剪出来的图片分辨率就达不到项目要求,这时候就只能求助于第三方的开源项目或者自定义了,在第二篇文章中Android中的图片裁剪(二),我会说说如何自己实现裁剪图片的功能。
更多Android中webview与js交互(二)
在Android中webview与js的交互(一)中简单介绍了webview与js交互的基本使用方法,接下来,为了方便后期的维护扩展,在这里分享一下我自己的一些经验。
更多Android中webview与js的交互(一)
webview中调用js
webView.getSettings().setJavaScriptEnabled(true);//设置js脚本可用
webView.loadUrl("url");//加载页面
webView.loadUrl("javascript:test(a,b,c)");//调用js方法
更多