android5.0_android5.0webview内核 - CSDN
精华内容
参与话题
  • Android 5.0新特性

    千次阅读 2017-02-16 17:01:26
    Android 5.0新特性 一、用户体验方面: 首先,在感官界面设计上,我们彻底迎来了Android系统的扁平化时代,新的系统不仅使用了新的配色,此外,谷歌全面改善了原来乏味的通知中心,让原生系统也拥有了像第三方...

    Android 5.0新特性


    一、用户体验方面:

    首先,在感官界面设计上,我们彻底迎来了Android系统的扁平化时代,新的系统不仅使用了新的配色,此外,谷歌全面改善了原来乏味的通知中心,让原生系统也拥有了像第三方插件那样强大的功能。另外,多任务系统也加入了更多的卡片式风格,同时还有大量的其它新特性,包括64位编译器(ART模式)和增强电池续航能力

    1、Material Design (发音: [mə'tɪrɪəl] [dɪ'zaɪn])

    Material Design翻译过来就是材料设计,是google对于android设备显示界面的主要更新,也可以说是一种新的设计语言。它使android UI更加扁平化,同时, Android L的界面会拥有类似物理表面和边缘的视觉效果——这一切很大程度上得益于Android L动态阴影的加入以及动画的加强。

    2、全新的通知中心设计

    谷歌在Android Lollipop中加入了全新风格的通知系统。改进后的通知系统会优先显示对用户来说比较重要的信息,而将不太紧急的内容隐藏起来。用户只需要向下滑动就可以查看全部的通知内容。

    新的通知系统另外一个很酷的新功能是在锁屏界面也可以直接查看通知消息了。不仅如此,用户还可以直接在锁屏的情况下就行回复或进入应用。另外,如果在操作手机的过程中有电话进入,也不会进行全画面切换,而是同样以弹出通知的方式告知用户。

    3、支持64位ART虚拟机

    Android Runtime简称ART,我们在android4.4的时候就有ART模式,但是国内大部分厂商都把这一模式给“阉割”了,依然使用的是Dalvik虚拟机。但是到了android L之后,我们的android系统默认的就是ART模式,它和Dalvik虚拟机的的区别:

    Dalvik虚拟机是要依靠一个编译器来实现与应用程序的沟通。应程序每次运行时,都需要将程序内的代码即使转变为机器码才能运行,这无形中多附加了一道手续,这就造成了耗电相对较快、占用内存大、即使是旗舰机用久了也会卡顿严重的现象。

         相比较而言ART模式就很好的解决了这个问题,通过在安装应用程序时,自动对程序进行代码预读取编译,让程序直接编译成机器语言,免去了Dalvik模式要时时转换代码,实现高效率、省电、占用更低的系统内存、手机运行流畅。但凡事总有正反两面,ART在解决了该问题的同时,同时也有如:会占用略高一些的存储空间、安装程序时要相比普通Dalvik模式要长一些时间来实现预编译。 

    ART处理应用程序执行的方式完全不同于Dalvik,运行起来更有效率、耗电更少、占的内存也更低。

    对64位处理器的支持也让ART虚拟机如鱼得水,开发者可以针对64位架构核心开发应用程序。同时Android L支持更大的寄存器,支持新的指令集,提升了内存寻址空间,未来Android智能手机将支持4GB以上的内存。

    并且ART模式中,google优化了gc,将他的暂停此时由2次编程了1次,并且在gc回收垃圾的时候可以多核并发处理。

    4、全新的“最近应用程序”

    除了界面风格设计的改变之外,新的最近应用界面还借鉴了Chrome浏览器的理念,采用单独的标签展示方式。更重要的是,谷歌已经向开发者开放了API,所以第三方开发人员可以利用这个改进为特定的应用增加全新的功能。

     

    二、开发者:

    1、抽屉布局(DrawerLayout)

          该对象在我们的support.v4包中,以后大家在做侧滑菜单的时候可以使用这个布局,在布局中可以设置左右两个侧滑菜单,同时,它还可以结合ActionBarDrawerToggle(带动画的一个按钮)使用:

    使用DrawerLayout:

       

    ActionBarDrawerToggle:随着侧滑菜单的画出有一个旋转的动画,同时,点击它侧滑菜单也会出来,使用它必须要有:

    这句代码让它在ActionBar上显示出来。

    2、涟漪动画、揭示动画、转场动画

    涟漪动画(Touch feedback):也叫“触摸反馈”

    当用户与用户界面进行交互时,Material Design中的触摸反馈在触摸点上提供了一种瞬时视觉确认。按钮的默认触摸反馈动画使用新的RippleDrawable类,它使用涟漪(波纹)效应在不同状态间转换。

    在大多数情况下,你应该在你的布局XML文件中使用如下的方法去指定视图的背景:

    ?android:attr/selectableItemBackground (有界波纹)

    ?android:attr/selectableItemBackgroundBorderless (无界波纹)

    注意:selectableItemBackgroundBorderless是API级别21上的新属性。

    效果如下:(自己点进去看效果)

    https://img-my.csdn.net/uploads/201412/07/1417881700_6000.gif-thumb.jpg

     

    在我们的布局里面这样设置:

    或者,你可以定义一个RippleDrawable作为波纹元素的XML资源:

    rippledrawable.xml

    <?xml version="1.0" encoding="utf-8"?>
    <ripple 
    xmlns:android="http://schemas.android.com/apk/res/android"
            
    android:color="@color/accent_dark">
        <item>
            <shape 
    android:shape="oval">
                <solid 
    android:color="@color/accent_dark"></solid>
            </shape>
        </item>
    </ripple>

    揭示动画(Circular Reveal):也叫“循环显示”

    首先我们要弄清楚,Circular Reveal是一个Android L新增的动画效果。

    使用方法:

    应用 ViewAnimationUtils.createCircularReveal() 方法可以去创建一个RevealAnimator动画。

    ViewAnimationUtils.createCircularReveal源码如下:

    public static Animator createCircularReveal(View view, int centerX, int centerY, float startRadius, float endRadius) {
        return new RevealAnimator(view, centerX, centerY, startRadius, endRadius);
    }

    源码非常简单,就是通过createCircularReveal方法根据5个参数来创建一个RevealAnimator动画对象。

    这五个参数分别是:

    view 操作的视图

    centerX 动画开始的中心点X

    centerY 动画开始的中心点Y

    startRadius 动画开始半径

    startRadius 动画结束半径

    根据下面的效果图和代码可以很容易的了解这几个参数的作用:

    http://img0.tuicool.com/yeQrQz.gif

    具体使用细节如下(操作方块):

    final View rect = this.findViewById(R.id.rect);
    rect.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Animator animator =   ViewAnimationUtils.createCircularReveal(
                    rect,
                    0,
                    0,
                    0,
                    (float) Math.hypot(rect.getWidth(), rect.getHeight()));
            animator.setInterpolator(new AccelerateInterpolator());
            animator.setDuration(2000);
            animator.start();
        }
    });

    总结:

    RevealAnimator 和之前的动画使用没什么区别,同样可以设置监听器和加速器来实现各种各样的特效。

     

    转场动画(Activity Transition):也叫“Activity过渡“

    转场动画大多使用于两个界面(Activity)之间的跳转,他们之间就可以有这样的一个动画。主要有三种效果的动画:Explode(爆炸式)、Fade(淡入淡出)、Slide(平滑式)。

    使用这些动画,你必须在进入和退出activity都要求使用这些内容转场特效,并且在两个Activity的setOncontent()里面有:

    getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);

    并且必须在setContentView()加载布局之前设置。

    使用getWindow().setExitTransition( Transition ) 和getWindow().setEnterTransition( Transition ) 方法告诉activity当打开和关闭时如何执行,Transition代表的就是Explode(爆炸式)、Fade(淡入淡出)、Slide(平滑式)中的一种,例外还有4个方法需要知道:

    getWindow().setEnterTransition(transition);

    getWindow().setExitTransition(transition);

    getWindow().setReturnTransition(transition);

    getWindow().setReenterTransition(transition);

    为了帮助大家理解,我们做这样的假设:

    A和B分别是两个Activity,我们从A Activity跳转到B Activity。

    Activity transition API围绕退出(exit),进入(enter),返回(return)和再次进入(reenter)四种transition。按照上面对A和B的约定,我这样描述这一过程。

    Activity A的退出变换(exit transition)决定了在A调用B的时候,A中的View是如何播放动画的。

    Activity B的进入变换(enter transition)决定了在A调用B的时候,B中的View是如何播放动画的。

    Activity B的返回变换(return transition)决定了在B返回A的时候,B中的View是如何播放动画的。

    Activity A的再次进入变换(reenter transition)决定了在B返回A的时候,A中的View是如何播放动画的。

    按照上面的规则,我们:

    在第一个Activity中:

    @Override
    public void onClick(View v) {
        Transition transition=null;
        Intent intent=null;
        switch (v.getId()){
            case R.id.explodeButton://爆炸式过渡
                transition = new Explode();
                intent = new Intent(this, ExplodeActivity.class);
                break;
            case R.id.fadeButton://淡入淡出过渡
                transition = new Fade();
                intent = new Intent(this, FadeActivity.class);
                break;
            case R.id.slideButton://平滑的过渡
                transition = new Slide();
                intent = new Intent(this, SlidActivity.class);
                break;
        }
        transition.setDuration(1000);
        getWindow().setEnterTransition(transition);
        getWindow().setExitTransition(transition);
        getWindow().setReturnTransition(transition);
        getWindow().setReenterTransition(transition);
     
    
    //界面跳转,官方文档规定的。
        startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
    }

    在第二个Activity中:

    public class ExplodeActivity extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
                  getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
            Transition transition = new Explode();
            transition.setDuration(1000);
            getWindow().setEnterTransition(transition);
            getWindow().setExitTransition(transition);
            getWindow().setReturnTransition(transition);
            getWindow().setReenterTransition(transition);
    
            setContentView(R.layout.activity_explode);
        }
    }

     

    3、RecyclerView

    RecyclerView出现已经有一段时间了,相信大家肯定不陌生了,大家可以通过导入support-v7对其进行使用。首先我们要明白一点,RecyclerView可以用来代替我们的ListView和GridView,同时对ViewHodler进行了更好的封装,它自动重用我们的convertView。所以使用更加简单。

    Recycler高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现令人瞠目的效果:

    你想要控制其显示的方式,请通过布局管理器LayoutManager

    你想要控制Item间的间隔(可绘制),请通过ItemDecoration

    你想要控制Item增删的动画,请通过ItemAnimator

    下面是使用recyclerView最简单的一个布局:

    在我们的Activity里面获得到它,使用方法跟我们的ListView一样:

    下面是适配器adapter里面的内容(添加了条目点击事件哦):

    private RecyclerView.Adapter adapter new RecyclerView.Adapter() {
        
    @Override
        
    public int getItemCount() {//条目数量
            
    return iconsV.size();
        
    }
        
    @Override 
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {   //创建ViewHolder的方法,这里就需要你创建一个ViewHolder了

    //加载布局条目
            View view = View.inflate(MainActivity.
    this, R.layout.item, null);
            return new 
    MyViewHolder(view);//创建ViewHolder并返回
        }

        
    @Override
        
    public void onBindViewHolder(RecyclerView.ViewHolder holder, intposition) {//绑定ViewHolder的方法
            MyViewHolder mMyViewHolder= (MyViewHolder) holder;

    ;//设置条目里面的图片
            
    mMyViewHolder.iv.setImageResource(iconsV.get(position)) 
            mMyViewHolder.itemView.setTag(mMyViewHolder);

    //给条目添加点击事件
            
    mMyViewHolder.itemView.setOnClickListener(MyOnclickListener);
        
    }
        
    private View.OnClickListener MyOnclickListener=new View.OnClickListener(){
            
    @Override
            
    public void onClick(View v) {

    //拿到对应条目的holder
                MyViewHolder mMyViewHolder = (MyViewHolder) v.getTag()
    ;
                int 
    position = mMyViewHolder.getAdapterPosition();
                
    iconsV.remove(position);

    //刷新已经移除的条目,RecyclerView不需要整体刷新
                adapter.notifyItemRemoved(position);
            
    }
        }
    ;

    //创建一个ViewHolder
        class 
    MyViewHolder extends RecyclerView.ViewHolder {
            
    private ImageView iv;
            public 
    MyViewHolder(View itemView) {
                
    super(itemView);
                
    iv = (ImageView) itemView.findViewById(R.id.iv);
                
    itemView.setTag(this);
            
    }
        }
    }
    ;

     

    5、CardView

    通过图片,我们知道CardView继承至FrameLayout类,可以在一个卡片布局中一致性的显示内容,卡片可以包含圆角和阴影。CardView是一个Layout,可以布局其他View。

    使用它需要我们在xml中定义:

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <android.support.v7.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            card_view:cardCornerRadius="6dp"
            card_view:cardElevation="6dp"
            card_view:contentPadding="5dp"
            android:layout_marginBottom="10dp"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
                <ImageView
                    android:id="@+id/iv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:src="@mipmap/ic_launcher"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:text="图片标题"/>
            </LinearLayout>
        </android.support.v7.widget.CardView>
    </FrameLayout>

    注意1:我们一定要有xmlns:card_view=http://schemas.android.com/apk/res-auto命名空间

    注意2:我们需要在CardView的外层套一个FramLayout,这样显示效果更明显,更加;但是当在加载View条目的时候没有加载FramLayout的宽高,这样也没关系。我们只需要在CardView里面添加就行了。

    下面我们列举CardView的一些常用属性:(红色为最常用的)

    card_view:cardElevation 卡片的高度(阴影)

    card_view:cardMaxElevation 阴影最大高度

    card_view:cardBackgroundColor 卡片的背景色

    card_view:cardCornerRadius 卡片的圆角大小

    card_view:contentPadding 卡片内容于边距的间隔

    card_view:contentPaddingBottom

    card_view:contentPaddingTop

    card_view:contentPaddingLeft

    card_view:contentPaddingRight

    card_view:contentPaddingStart

    card_view:contentPaddingEnd

    card_view:cardUseCompatPadding 设置内边距,V21+的版本和之前的版本仍旧具有一样的计算方式

    card_view:cardPreventConrerOverlap 在V20和之前的版本中添加内边距,这个属性为了防止内容和边角的重叠

     

    1. 简介

       0.1 Material Design

       0.4 查看视频

       0.5 打开AndroidStudio和模拟器,展示5.0效果

        0.5.1 由于手机性能提升,5.0上原生API的控件,谷歌增加了很多动画

        0.5.2 可以变更标题栏和ActionBar的颜色

        0.5.3 其他的控件和动画展示

        0.5.4 Material完整效果在5.0以上版本原生提供,Support包的兼容性无法做到完全一样


    2. 自定义状态栏、标题栏、导航栏的颜色

       1.1 参考图片说明和源码,修改新建项目的values-v21/styles.xml

       1.2 查看动态切换主题的代码,代码不重要,学生应该掌握查找代码的方法


    3. 阴影

       2.1 z = elevation(海拔) + translationZ(属性动画里Z轴的位移)

       2.2 阴影范围越大,颜色越淡,表示海拔越高

       2.3 海拔高的控件显示在界面上层

       2.4 材料设计认为控件都是有实体质感的,可以拉伸折叠收缩,但是不能有“穿墙”的行为

       2.3 当子控件已经比父控件大,则阴影不会显示


    4. 圆形图片轮廓的显示方式

       3.1 xml设置

        outlineProvider:none|background|bounds|paddedBounds

       3.2 代码设置

        view.setOutlineProvider(new ViewOutlineProvider(){

        public void getOutLine(view,outine){

        outline.setOval(0,0,view.getWidth(),view.getHeight());

        }

        });

       3.3 注意:阴影不会超出父view范围


    5. 图片选择器 tint属性

       4.1 直接从文档展示

       4.2 创建Bitmap的Drawable文件,指定src、tintmode和tine可以生成新的图片


    6. 图片颜色抽取 Palette

       5.1 直接从文档展示

       5.2 引入support下的palette包

        Palette.from(drawable.getBitmap()).generate(new Palette.PaletteAsyncListener() {

             @Override

             public void onGenerated(Palette palette) {

                 int color = palette.getLightVibrantColor(Color.RED);

                 Log.d(TAG, "onGenerated: color="+color);

                 iv.setBackgroundColor(color);

             }

         });


    7. 矢量图

       6.0 矢量图和栅格图区别

       6.1 直接从文档展示

        6.1.1 创建vector的drawable

        6.1.2 指定宽高、以及viewport宽高

        6.1.3 指定绘制的path属性

        name、fillcolor、pathdata

       6.2 可以创建矢量图的网站

        http://editor.method.ac/


    8. 矢量图动画

       7.0 从源码查看

       7.1 创建animated-vector的drawable

       7.2 指定animator-vector的默认图片

       7.3 指定animator-vector的动画资源animator-1

        <target name="vector" animator="@animator/animator-1" />

       7.4 创建animator/animator-1.xml

       7.5 animator-1为一个set,包含了多个objectAnimator

       7.6 objectAnimator应该指定:

        duration="2000",propertyName="pathData",valueType="pathType",valueFrom="图形数据",valueTo="图形数据"


    9. 按压时的波纹效果

       8.1 background="?android:attr/selectableItemBackgroud"

       8.2 自定义波纹动画

        Animator anim = ViewAnimationUtils.createCircularReveal(view, centerX, centerY,startRadius,endRadius);

        // 在指定view的指定位置,以startRadius为起始半径,endRadius为最终半径,绘制水波纹动画

        anim.start();


    10. SwipeRefreshLayout

        9.0 展示效果:下拉刷新列表

        9.1 增加到布局文件

        9.2 find到view对象,并修改下拉颜色变化

        9.3 设置下拉监听


    11. RecycleView

        10.1 展示效果:可以垂直/水平显示的列表/瀑布流,功能强大,用于替代ListView

        10.2 增加到布局文件

        10.3 find到view对象,并设置Adapter

        10.4 设置布局管理器

        10.5 点击事件处理


    12. CardView

        11.1 展示效果:具备阴影的控件,也就是具备z轴海拔的控件

        11.2 该View继承自FrameLayout,直接作为父布局包裹子控件即可


    12.v7包的ToolBar

    12.1 用于替代ActionBar,继承自ViewGroup可以任意包裹子布局,灵活性更高

    12.2 使用时必须设置背景色

    12.3 设置主题,隐藏ActionBar

    parent="Theme.AppCompat.NoActionBar"

    12.4 主界面继承自AactionBarActivity,onCreate方法执行时设置ToolBar作为ActionBar

    setSupportActionBar(toolbar);


    13. v4包的drawerToggle

        13.1 展示效果:抽屉效果,可以关联toolbar

        13.2 在布局文件添加DrawerLayout,包裹两个帧布局

        13.3 创建DrawerToggle对象

         drawToggle = new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.open,R.string.close);// 构造方法里关联了drawLayout和toolbar

        13.4 设置监听

         drawerLayout.setDrawerListener(drawerToggle);

        13.5 开启功能

        ```java

        drawerToggle.sysncState();

        ```


    展开全文
  • Android 5.0 - 5.1特性

    千次阅读 2015-08-10 11:27:39
    Android 5.0-5.1更新的内容 1、静音模式回归 (安卓5.0的一个大Bug) 2、系统稳定性综合改进 3、改进内存管理 4、改进电池管理 5、修复应用突然关闭(FC)的问题 6、修复Wi-Fi流量过度消耗的问题 7...

    Android 5.0-5.1更新的内容

    1、静音模式回归 (安卓5.0的一个大Bug)

    2、系统稳定性综合改进

    3、改进内存管理

    4、改进电池管理

    5、修复应用突然关闭(FC)的问题

    6、修复Wi-Fi流量过度消耗的问题

    7、修复无线连接的问题

    8、修复Okay Google语音指令的问题

    9、修复通知的问题

    10、修复特定设备的声音问题 (Nexus 10变哑巴)

    11、其他改进和改变

    12、Material Design配色调整 (也可能会在未来更高版本中才会实现)

    更加便捷的  Wi-Fi 设置

    在安卓 5.1 中,Wi-Fi 快捷按钮下面的文字旁边增添了一个明显的下拉三角。点击后,会直接在通知中心罗列出 Wi-Fi 热点列表,用户无需进入设置菜单选择相应的连接目标。

    更加便捷的蓝牙设置

    与Wi-Fi相似,点击添加的三角符号,用户即可看到蓝牙设备列表,点击配对即可。

    锁屏功能得到改善

    在 Android 5.1 中,当你的设备成锁屏状态时,下拉通知栏,然后在通知栏外向上扫滑,手机即可解锁。当然,如果你在通知栏内操作,手机依然为锁屏状态。

    隐藏反色/Wi-Fi 热点开关

    通知栏中的反色按钮和 Wi-Fi 热点开关可隐藏。操作很简单,点击并长按开关,然后选择“隐藏”即可。

    更加友好的屏幕固定

    Android Lollipop 系统引入了一个屏幕固定功能,不过这一功能不够完善,在新版系统中,它变得更加容易操作。打开一个想要固定(钉住)的应用,然后在应用切换处点击 Pin 图标即可。

    更好的信息通知方式

    在 Android 5.1 中,有信息通知时,用户可以向上滑动,不查看信息,但信息依然保留在通知栏中。在此之前,用户只能选择向左或者向右扫滑,不让信息出现在通知栏中。


    Android 5.0 十大特性:

    首先,在感官界面设计上,我们彻底迎来了 Android 系统的扁平化时代,新的系统不仅使用了新的配色,同时看起来也很时尚。未来我们相信包括三星的 TouchWiz 或 LG 的 Optimus 自定义 UI 都会遵循 Lollipop 的新风格。此外,谷歌全面改善了原来乏味的通知中心,让原生系统也拥有了像第三方插件那样强大的功能。另外,多任务系统也加入了更多的卡片式风格,同时还有大量的其它新特性,包括 64 位编译器和增强电池续航能力能。目前,除了 Nexus 设备之外,包括摩托罗拉、HTC 等都表示旗下的智能手机大部分都支持升级到 Android Lollipop,相信不就的将来我们将迎来一阵升级的热潮。下面让我们一起来看看 Android 5.0 Lollipop 新增的十个最主要变化。

    1、全新 Material Design 设计风格

    Android Lollipop 全新的设计语言是受到了多种因素影响,是一种大胆的平面化创新。换句话说,谷歌希望能够让 Material Design 给用户带来纸张化的体验。新的视觉语言,在基本元素的处理上,借鉴了传统的印刷设计,字体版式、网格系统、空间、比例、配色、图像使用等这些基础的平面设计规范。

    另外,Material Design 还推崇实体隐喻理念,利用实体的表面与边缘的质感打造出视觉线索,让用户感受到真实。熟悉的触感让用户可以快速的理解、认知。在设计中可以灵活的运用物质,在符合物理规律的基础上,打造出不同的使用体验。最后是是有意义而且更合理的动态效果,为了吸引用户的注意力,以及维持整个系统的连续性体验。

    2、支持多种设备

    现在无论是智能手机、平板电脑、笔记本电脑、智能电视、汽车、智能手表甚至是各种家用电子产品,谷歌的 Android 系统已经可以在所有设备的屏幕上出现。而这一概念与微软不谋而合,之前微软也宣布将会把 Windows 10 打造成跨设备跨平台的统一系统,帮助自己走出困境。

    3、全新的通知中心设计

    谷歌在 Android Lollipop 中加入了全新风格的通知系统。改进后的通知系统会优先显示对用户来说比较重要的信息,而将不太紧急的内容隐藏起来。用户只需要向下滑动就可以查看全部的通知内容。

    新的通知系统另外一个很酷的新功能是在锁屏界面也可以直接查看通知消息了。不仅如此,用户还可以直接在锁屏的情况下就行回复或进入应用。另外,如果在操作手机的过程中有电话进入,也不会进行全画面切换,而是同样以弹出通知的方式告知用户。

    4、支持 64 位 ART 虚拟机

    新系统不仅在视觉效果上带来了巨大的变化,Android Lollipop 还在内部的性能上进行了飞跃。首先,新系统放弃了之前一直使用的 Dalvik 虚拟机,改用了 ART 模式,实现了真正的跨平台编译,在 ARM、X86、MIPS 等,无处不在。

    ART 虚拟机编译器在内存占用及应用程序加载时间上进行了大幅提升,谷歌承诺所有性能都会比原来提升一倍。另外,对 64 位的支持也让 ART 虚拟机如鱼得水,开发者可以针对像 ARM Cortex-A57 这样的 64 位架构核心开发应用程序。Android Lollipop 支持更大的寄存器,支持新的指令集,提升了内存寻址空间,未来 Android 智能手机将支持 4GB 以上的内存。

    5、Project Volta 电池续航改进计划

    Project Volta 计划增加了新工具可以让开发者能够更容易的找出为何自己的应用程序会对电量产生比较大的影响,同时确保在执行某型任务时将手机电量的影响降至最低。首先,Battery Historian 可以列出手机电量消耗的详细情况,帮助开发者识别电量消耗的原因或者是哪个硬件或任务对电池寿命的影响比较大;而 Job Scheduler API 则可以让开发者更容易的选择合适的时机触发电量消耗比较高的任务,避免在低电量或未完成充电时更新应用程序。

    上面是针对开发者的改进,而在用户层面上,Android Lollipop 增加了 Battery Saver 模式,这与三星和 HTC 上的超级省电模式有些类似。在低电量的时候系统会自动降低屏幕亮度、限制自动更换背景等功能。

      6、全新的“最近应用程序”

    除了界面风格设计的改变之外,新的最近应用界面还借鉴了 Chrome 浏览器的理念,采用单独的标签展示方式。更重要的是,谷歌已经向开发者开放了 API,所以第三方开发人员可以利用这个改进为特定的应用增加全新的功能。

    7、改进安全性

    现在个人识别解锁还是一个比较新鲜的智能概念,当用户的蓝牙耳机连接到手机或平板电脑时,设备可以基于当前的位置或用户的声音自动解锁。比如当特定的智能手表出现在 Android 设备的附近,那么就会直接绕过锁屏界面进行操作。而 Android Lollipop 也增加了这种针对特定特任识别解锁的模式。换句话说,当设备没有检测到附近有可用的信任设备时,就会启动安全模式防止未授权访问。

    另外,Android Lollipop 还默认开启了系统数据加密功能,并且通过 SELinux 执行应用程序,这就意味着对于恶意软件来说,新系统变得更加安全。

    8、不同数据独立保存

    谷歌表示 Android Lollipop 将拥有一个全新的特性,让用户通过一台设备就可以搞定所有的工作和生活娱乐活动。该特性首先将各种数据独立保存,并且让所有新数据的生成都有依据。

    我们已经看到谷歌已经与三星加强了合作,包括三星的 Knox 安全系统同样可以像 Android Lollipop 一样将重要数据和其它数据分开保存。另外谷歌还允许向三星以外的 Android 设备提供支持。

    9、改进搜索

    谷歌将新系统的搜索功能重点放在了“重新发现”上,因此这意味着 Google Search 将会更好的意识到用户正在做什么。比如系统会根据用户当前的位置自动过滤无关的搜索结果。

    另外,当用户在进行应用搜索时,可以直接展示相似或部分提示,并且进入特定的应用程序而无需将内容全部输入。

    10、新的 API 支持,蓝牙 4.1、USB Audio、多人分享等其它特性

    Android Lollipop 还增加了多个新的 API 支持、蓝牙 4.1、USB Audio 外接音响及多人分享等功能。其中多人分享功能可以在用户手机丢失的情况下,使用其它 Lollipop 设备登录账户,从云端下载联系人、日历等资料,并且不影响其它设备的内容。



    展开全文
  • Android 5.0 源码下载

    2020-06-11 23:30:07
    Android 5.0 源码
  • 深入解析Android5.0系统

    2020-04-16 23:30:05
    资源名称:深入解析Android 5.0系统内容简介:《深入解析Android 5.0系统》详细剖析了最新Android 5.0 系统主要框架的原理和具体实现。本书共24章,覆盖了Android 5.0 系统中、下层重要的模块,对于每个模块都详细...
  • Android 5.0 SDK 下载地址

    千次阅读 2015-08-12 15:06:21
    android 5.0等版本SDK和ADT等工具下载地址

    android 5.0等版本SDK和ADT等工具下载地址:

    Android Dev Tools官网地址: www.androiddevtools.cn

    展开全文
  • Android 5.0 6.0 7.0和8.0都增加了什么

    千次阅读 2018-07-10 08:50:06
    原味地址:https://blog.csdn.net/lixuce1234/article/details/79020418随着安卓8.0的出现,越来越多的人开始要进行8.0系统的适配了,很多人都知道安卓最近几个版本的新特性这里大概说一下:5.0的时候出现了Design...

    原味地址:https://blog.csdn.net/lixuce1234/article/details/79020418

    随着安卓8.0的出现,越来越多的人开始要进行8.0系统的适配了,很多人都知道安卓最近几个版本的新特性这里大概说一下:

    1. 5.0的时候出现了Design风格
    2. 6.0出现的危险权限需要申请
    3. 7.0出现的目录访问被限制
    4. 今天要介绍的8.0通知栏的机制
    在前一段时间用一个8.0的模拟器测试的时候,发送notifation(通知)的时候遇到了一个错误,如下图:

    打印下来的错误信息:
    No Channel found for pkg=com.lixuc.demo, channelId=null, id=1, tag=null, opPkg=com.lixuc.demo, callingUid=10081, userId=0, incomingUserId=0, notificationUid=10081, notification=Notification(channel=null pri=0 contentView=null vibrate=default sound=null defaults=0x2 flags=0x10 color=0xff98903b vis=PRIVATE)

    跟进NotificationManager的notify方法,调用了NotificationManagerService的enqueueNotificationWithTag将通知入队,最后在NotificationManagerService的enqueueNotificationInternal方法中发现了error log的踪迹,截取代码片如下图:这里写图片描述

    见图可知,是由于此条通知没有查找到应用中对应的NotificationChannel的原因,而无法弹出来。那NotificationChannel是个什么鬼,查阅官文得知,这是Android O新增的通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道。用户界面将通知渠道称之为通知类别。

    先贴出我猜到坑的错误代码:



    这里的NotificationCompat及NotificationManagerCompat来自官方提供的兼容库: 
    com.android.support:appcompat-v7:26.1.0 
    想着最新的Compat库兼容应该做得是最好的,然后错就错在这句代码: 
    NotificationCompat.Builder(context, Integer.toString(notificationId)); 
    一眼看到Builder构造函数的第二个参数,传的是id,就直接把notificationId传进去了,其实细看传的是channelId,我这里把channelId和notificationId概念搞混了。channelId传null,或者只有一个参数的Builder的构造方法,都不会出现错误,修正代码如下:

    1. NotificationCompat.Builder builder = new NotificationCompat.Builder(context, null);
    2. //或者
    3. NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
    • 1
    • 2
    • 3
    • 4

    原理就是:NotificationChannel是Android O新增的特性,为了兼容老代码,如果channelId为null的话,Android O会把通知归到“Other Channel”上。 
    PS:将targetSdkVersion提到26以上的话,就必须设置channel了,不能为null。


    下面来说一下我的解决方法

    首先创建channel信息:

    如果你需要发送属于某个自定义渠道的通知,你需要在发送通知前创建自定义通知渠道,示例如下:

    1. NotificationChannel channel = new NotificationChannel("1",
    2. "Channel1", NotificationManager.IMPORTANCE_DEFAULT);
    3. channel.enableLights(true); //是否在桌面icon右上角展示小红点
    4. channel.setLightColor(Color.RED); //小红点颜色
    5. channel.setShowBadge(true); //是否在久按桌面图标时显示此渠道的通知
    然后创建通知后,向自定义渠道发送通知

    1. int notificationId = 0x1234;
    2. Notification.Builder builder = new Notification.Builder(context,"1"); //与之前创建的channelId对应
    3. //icon title text必须包含,不然影响桌面图标小红点的展示
    4. builder.setSmallIcon(android.R.drawable.stat_notify_chat)
    5. .setContentTitle("xxx")
    6. .setContentText("xxx")
    7. .setNumber(3); //久按桌面图标时允许的此条通知的数量
    8. notificationManager.notify(notificationId, builder.build());
    删除掉某个渠道:
    1. NotificationChannel mChannel = mNotificationManager.getNotificationChannel(id);
    2. mNotificationManager.deleteNotificationChannel(mChannel);

    如果你的应用里面有通知的话,恰巧你的targetSdkVersion是26以上的情况下,你就需要进行以上的操作了


    展开全文
  • 一、5.0新特性 二、6.0新特性 三、7.0新特性 四、8.0新特性 五、9.0新特性 六、 一步步跟着案例进行版本升级踩坑——DownloadManager 1、适配6.0 动态权限 2、适配Android 7.0 解析包时出现问题 3、适配...
  • Android5.0及以上版本新特性

    千次阅读 2018-10-20 20:39:16
    Android5.0 1.采用全新Material Design设计风格。 Material Design,扁平化的设计理念。新的视觉语言,在基本元素的处理上,借鉴了传统的印刷设计,字体版式、网格系统、空间、比例、配色、图像使用等这些基础的平面...
  • 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...
  • Android由来: Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l’Isle-Adam)在1886年发表的科幻小说《未来夏娃》(L’ève future)中。他将外表像人的机器起名为AndroidAndroid的Logo是由伊琳娜...
  • 关于 Android 5.0 无法安装应用问题

    千次阅读 2015-11-11 16:32:42
    遇到一个Android5.0 手机上无法同时安装应用正式版签名版 和测试版(与正式版包名不同)。搜了一下,发现原来是Android 5.0的新特性,将debug版也用与正式版一样的签名进行签名就可以在手机上同时装正式版和测试版了...
  • Android5.0及Material Design

    2019-01-26 11:40:35
    Android5.0是在2014年10月16日发布的。 1、Android 1.0 一切的开始 2008年10月发布的。第一款安卓手机是htc的G1,它是一款全键盘的手机。没有虚拟键盘的。 2、Android 1.5 增加虚拟键盘。 3、Android 3.0 这个版本...
  • Android5.0可用tcpdump

    热门讨论 2020-07-21 09:59:43
    这个tcpdump版本是可以在Android 5.0设备上使用的。
  • 自从Android推出5.0后 各大应用市场都陆续发送邮件 通知各个开发者要兼容5.0系统。当然,这是技术的更新,但同时也带来了一部分问题,废话不多说,直接进入主题:  其实Android 5.0 安装应用失败 最主要应该是该...
  • Android5.0+蓝牙开发封装

    千次阅读 2019-03-12 14:39:07
    LG Android5.0+蓝牙开发封装API 标签: Android5.0+ 低功耗蓝牙开发 封装 1. 简述 该包封装了低功耗蓝牙开发的所有API,在android中使得开发者有更多的时间去考虑自己的逻辑而不再通讯蓝牙开发中 2. 如何快速...
  • Activity的转场动画很早就有,但是太过于单调,样式也不好看,于是Google在Android5.0之后,又推出的新的转场动画,效果还是非常炫的,今天我们一起来看一下。 Android5.0之后Activity的出入场动画总体上来说可以...
  • ActionBar的功能比较弱,并且显示出来的控件也不漂亮,大部分人都喜欢自定义一个组件来代替ActionBar,也就使得界面不统一、杂乱,在Android5.0 时谷歌推出Toolbar,在 material design 也对之做了名称的定义:App ...
  • Android5.0的Palette(调色板)、视图阴影、着色和裁剪介绍  随着Android5.0的发布,google带来了Material Design,俗称:材料设计。并带来了一些新的东西,这里就一一介绍这些新的设计元素。 1、Palette(调色板...
  • Android 5.0上线有一个段时间了,估计小伙伴们都看到了Android5.0界面上相比前面几个版本有了很大的突破,给人一种非常酷炫,平滑的跳转,生动的界面切换,全新的感觉,Android用户终于可以感叹,Google升级了这么多...
  • APP在Android5.0上运行时闪退

    千次阅读 2015-10-21 16:52:39
    开发的Android App在Android5.0上运行出现闪退情况,于是进行了一番定位分析,找到了问题的原因:由于Android5.0支持64位处理器arm v8架构,在我们的程序中libs下如果存在arm64-v8a文件夹,程序在Android5.0上运行时...
1 2 3 4 5 ... 20
收藏数 64,745
精华内容 25,898
关键字:

android5.0