安卓Android 6.0新特性有哪些

 更新时间:2016年10月2日 16:23  点击:1739
安卓Android 6.0新特性有哪些呢,对于做开发的多少要了解一些关于不同版本之间的一些特性了,下面我们来看看。

全新的Android M相比目前的Android Lollipop(5.0)有六项重大的改进:
1.App Permissions(软件权限管理):在Android M里,应用许可提示可以自定义了。它允许对应用的权限进行高度管理,比如应用能否使用位置、相机、麦克风、通讯录等,这些都可以开放给开发者和用户。
2.Chrome Custom Tabs(网页体验提升):新版的M对于Chrome的网页浏览体验进行了提升,它对登陆网站、存储密码、自动补全资料、多线程浏览网页的安全性进行了一些列的优化。
3.App Links(APP关联):Android M加强了软件间的关联,谷歌在现场展示了 一个例子,比如你的手机邮箱里收到一封邮件,内文里有以个Twitter链接,用户点击该链接可以直接跳转到Twitter应用,而不再是网页。
4.Android Pay(安卓支付):终于来了!Android支付统一标准。新的M系统中集成了Android Pay。其特性在于简洁、安全、可选性。Android Pay是一个开放性平台,使用户就可以选择谷歌的服务或者使用银行的APP来使用它,Android Pay支持4.4以后系统设备,在发布会上谷歌宣布Android Pay已经与美国三大运营商700多家商店达成合作。支付功能可以使用指纹来进行支付,这意味着今年基于安卓M的Nexus产品肯定会有指纹识别了。
5.Fingerprint Support(指纹支持):Android M增加了对指纹的识别API,谷歌开始在M里自建官方的指纹识别支持,力求Android统一方案,目前所有的Android产品指纹识别都是使用非谷歌认证的技术和接口。
6.Power & Change(电量管理 ):新的电源管理模块将更为智能,比如Android平板长时间不移动时,M系统将自动关闭一些App。同时Android M设备将支持USB Type-C接口,新的电源管理将更好的支持Type-C接口。
 
其它:
1. 支持4K显示
虽然目前搭载Android 6.0的手机如Nexus 6P、5X并未搭载原生4K分辨率屏幕,但实际上Android 6.0本身已经支持4K显示,会通过一定优化形式使4K内容更加清晰。这一功能已经作为一项API向开发人员开放,旨在优化Android 6.0的4K显示性能。相信在之后,也会有越多越多的Android 6.0手机配备原生4K分辨率屏幕。
2. 启动验证
Android 6.0在开机时会自动运行验证代码,检测设备和操作系统是否被篡改,这是一项新增的安全功能。
3. 直接分享
谷歌在Android 6.0中引入了一个新的直接分享功能,能够快速分享第三方应用程序中的内容,开发人员可充分利用它实现更便捷的应用体验。

下面来看一篇关于Android.mk文件写法及错误提示原因分析,这个看是写错了还是逻辑错误吧,具体的来参考这篇教程。

//根据文档中的提示创建的Android.mk中的文本

 代码如下 复制代码

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := crypt //这里是库名
LOCAL_SRC_FILES := crypt.c //这里是库源码文件名

include $(BUILD_SHARED_LIBRARY)

当我写错了这个android.mk文件的时候报了一个"LOCAL_MODULE_FILENAME must not contain a file extension"的错误:

错误提示如下图所示:

[Jni]Android.mk文件写法及错误提示

[Jni]Android.mk文件写法及错误提示
TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。

在开发Android程序的时候,当我们引入一个TextView控件时,它的效果是这样的,默认横着显示。如左图,那么如何做到右图中的效果呢。你可能会说使用多个TextView,其实完全没有必要浪费那个精力。

 
横着竖着


 

只需要一个属性:

android:ems="1"

使用这个属性的前提是:

android:layout_width="wrap_content"

整体就是:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:ems="1"
    android:text="字体竖着显示"
    android:textColor="#000000"
    android:textSize="34sp" />

下面我们来看一篇关于Andriod中TextView加载Html标签和加载带图片的标签的例子,希望这个例子能够为各位朋友带来帮助。

一、加载Html代码

String html="<a href=\"http://www.111cn.net \"> 百度</a>;";
textView.setMovementMethod(LinkMovementMethod.getInstance());//允许超链接点击跳转到浏览器
textView.setText(Html.fromHtml(html));

 
二、加载src标签

1、加载本地图片

String html="<img src=\"file:///system/media/Pre-loaded/Pictures/Picture_01_Greenery.jpg\" />";
textView.setText(Html.fromHtml(html, new Html.ImageGetter() {
    @Override
    public Drawable getDrawable(String source) {
        Drawable drawable = null;
        try {
            drawable = Drawable.createFromStream(new URL(source).openStream(), null);
            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return drawable;
    }
},null));

注意:file:/别忘了加

Html还有个三参数的fronHtml方法,三个参数分别是:String source(图片资源的路径),ImageGetter imageGetter(实现ImageGetter类的对象),TagHandler tagHandler(暂不知什么用,不过这里设为null就行了)

ImageGetter类是Html类的一个静态接口,有个方法getDrawable,返回值为Drawable,作用是取得图片的Drawable

drawable = Drawable.createFromStream(new URL(source).openStream(), null);

这句代码,有一点要说,不要用网上许多人用的:

drawable= Drawable.createFromPath(source);

可能会报FileNotFound错误。


2、加载网络图片

html代码和之前差不多,把路径换成网络图片的地址就行

比如:

String html="<img src=\"http://img0.bdstatic.com/img/image/shouye/xiaoxiao/%E5%AE%A0%E7%89%A9622.jpg\" />";
但是ImageGetter的getDrawable方法需要变化:

这里使用Piccsso框架加载网络图片,不会的同学可以去百度一下

private class MyImageGetter implements Html.ImageGetter {
    private URLDrawable urlDrawable = null;
 
    @Override
    public Drawable getDrawable(final String source) {
        urlDrawable = new URLDrawable();
        Picasso.with(context).load(source).into(new Target() {
            @Override
            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                urlDrawable.bitmap = bitmap;
                urlDrawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());
                textView.setText(textView.getText());//不加这句显示不出来图片,原因不详
            }
 
            @Override
            public void onBitmapFailed(Drawable errorDrawable) {
            }
 
            @Override
            public void onPrepareLoad(Drawable placeHolderDrawable) {
            }
        });
        return urlDrawable;
    }
}

URLDrawable类:

/**
 * Created by Administrator on 2016/6/28 0028.
 */
public class URLDrawable extends BitmapDrawable {
    public Bitmap bitmap;
 
    @Override
    public void draw(Canvas canvas) {
        super.draw(canvas);
        if (bitmap != null) {
            canvas.drawBitmap(bitmap, 0, 0, getPaint());
        }
    }
}

调用方法如下:

textView.setText(Html.fromHtml(html, new MyImageGetter(), null));

下面我们一起来看一篇关于Picasso的使用及内存优化的例子,希望这篇教程能够给各位深入理解到Picasso的使用及内存优化方法哦。

一、Picasso介绍

picasso是Square公司开源的一个Android第三方图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能。

二、Picasso基本用法

Picasso.with(mContext).load(imageUrl).into(imageView);

代码很简洁。这一行代码解决了一下问题:

1.自动将图像缓存在本地

2.通过图片压缩转换以减少内存消耗

3.自动处理了ImageView的回收,即自动取消不在视野范围内的ImageView视图资源的加载

三、Picasso其他用法

1)在Adapter中使用

@Override
public void getView(int position, View convertView, ViewGroup parent) {
  SquaredImageView view = (SquaredImageView) convertView;
  if (view == null) {
     view = new SquaredImageView(mContext);
  }
  String url = getItem(position);
  Picasso.with(mContext).load(url).into(view);
}

2)图片转换

1
Picasso.with(mContext).load(imageUrl).resize(200,200).centerCrop().into(imageView);
还可以自定义转换:

Transformation transformation = new Transformation() {
 
  @Override
  public Bitmap transform(Bitmap source) {
    int targetWidth = getWidth();
    double aspectRatio = (double) source.getHeight() / (double) source.getWidth();
    int targetHeight = (int) (targetWidth * aspectRatio);
    Bitmap result = Bitmap.createScaledBitmap(source, targetWidth, targetHeight, false);
    if (result != source) {
      //如果大小是相同的,相同的位图就会被返回
      source.recycle();
    }
    return result;
  }
 
  @Override
  public String key() {
    return "transformation" + " desiredWidth";
  }
};

定义好Transformation后,在Picasso设置transform

Picasso.with(mContext).load(imageUrl).transform(transformation).into(viewHolder.mImageView);

或者通过实现Transformation接口自定义

public class CropSquareTransformation implements Transformation {
  @Override
  public Bitmap transform(Bitmap source) {
    int size = Math.min(source.getWidth(), source.getHeight());
    int x = (source.getWidth() - size) / 2;
    int y = (source.getHeight() - size) / 2;
    Bitmap result = Bitmap.createBitmap(source, x, y, size, size);
    if (result != source) {
       source.recycle();
    }
    return result;
  }
  @Override
  public String key() {
    return "square()";
  }
}

然后将CropSquareTransformation的对象传递给transform方法即可。

3)图片未正常显示时默认的图片,通过placeholder()设置;图片显示错误时显示的默认图片,通过error()设置


Picasso.with(mContext)
       .load(url)
       .placeholder(R.mipmap.icon_loading)
       .error(R.mipmap.icon_loading)
       .into(imageView);

4)加载Resources, assets, files, content providers中的资源文件

Picasso.with(mContext).load(R.mipmap.icon).into(imageView);
Picasso.wiht(mContext).load(new File(...)).into(imageView);

四、内存优化

1)查看大图放弃memory cache

Picasso默认会使用设备的15%的内存作为内存图片缓存,且现有的api无法清空内存缓存。我们可以在查看大图时放弃使用内存缓存,图片从网络下载完成后会缓存到磁盘中,加载会从磁盘中加载,这样可以加速内存的回收。

Picasso.with(mContext)
       .load(imageUrl)
       .memoryPolicy(NO_CACHE, NO_STORE)
       .into(imageView);

其中memoryPolicy的NO_CACHE是指图片加载时放弃在内存缓存中查找,NO_STORE是指图片加载完不缓存在内存中。

2)列表页滑动优化

picasso可以对多个加载请求设置相同的tag,即

Object tag = new Object();

Picasso.with(mContext)
       .load(url)
       .resize(200,200)
       .centerCrop()
       .tag(tag)
       .into(imageView);

例如在RecyclerView滑动时监听,处理不同的表现:


mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener(){
  @Override
  public void onScrollStateChanged(RecyclerView recyclerView, int newState){
  if (newState == RecyclerView.SCROLL_STATE_IDLE){
     Picasso.with(mContext).resumeTag(tag);
  }else{
     Picasso.with(mContext).pauseTag(tag);
  }
});

[!--infotagslink--]

相关文章

  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • C# 10个常用特性汇总

    这篇文章主要介绍了C# 10个常用特性,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-09
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • Android 实现钉钉自动打卡功能

    这篇文章主要介绍了Android 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
  • Android 开发之布局细节对比:RTL模式

    下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02
  • Android中使用SDcard进行文件的读取方法

    首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!--...2016-09-20
  • Android开发之PhoneGap打包及错误解决办法

    下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20
  • 用Intel HAXM给Android模拟器Emulator加速

    Android 模拟器 Emulator 速度真心不给力,, 现在我们来介绍使用 Intel HAXM 技术为 Android 模拟器加速,使模拟器运行度与真机比肩。 周末试玩了一下在Eclipse中使...2016-09-20
  • Android判断当前屏幕是全屏还是非全屏

    在安卓开发时我碰到一个问题就是需要实现全屏,但又需要我们来判断出用户是使用了全屏或非全屏了,下面我分别找了两段代码,大家可参考。 先来看一个android屏幕全屏实...2016-09-20
  • Android开发中布局中的onClick简单完成多控件时的监听的利与弊

    本文章来为各位介绍一篇关于Android开发中布局中的onClick简单完成多控件时的监听的利与弊的例子,希望这个例子能够帮助到各位朋友. 首先在一个控件加上这么一句:and...2016-09-20
  • Ubuntu 系统下安装Android开发环境 Android Studio 1.0 步骤

    Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试,可以在Linux,Mac OS X,Window...2016-09-20