【0004】Android studio使用

【1】第一次使用Android Studio时你应该知道的一切配置

http://www.cnblogs.com/smyhvae/p/4390905.html

http://color-themes.com/?view=theme&id=563a1a7680b4acf11273ae94

【2】 在Android Studio中的同一个工程下复制一份module而不改变原来的demo?

首先第一步就是在你的module所在的目录复制一份,并粘贴

然后重命名成为你需要的名字,比如我根据我的需要,我把我的testservice改成了testservice_interface了

第二步,打开你的Android Studio -> Project,你就会看到你刚刚复制的module

第三步,找到在Project下的setting.gradle,打开,加上你的刚刚复制好的文件名

第四步,sync now,同步你的gradle,然后你刚复制的module名字字体就变黑体了

第五步,切换至Android视图,修改包名

最后,修改你的应用名称,你想改什么就什么呗,在manifest下label那,你会找得到的。

最最最后一步,也是非常重要一步,修改你的应用id,不然你这个app会覆盖掉你原来的app哦

你还会发现,其实应用的唯一标识是id,只要id不同,就是两个不同的app,也就是说你可以拥有两个名称一模一样的app安装在手机上,如果你喜欢的话

----------------------------------------------------------------------------------------------------------------------

【3】Android Studio中的同一个工程下复制一份module而不改变原来的demo?

首先第一步就是在你的module所在的目录复制一份,并粘贴

然后重命名成为你需要的名字,比如我根据我的需要,我把我的testservice改成了testservice_interface了

第二步,打开你的Android Studio -> Project,你就会看到你刚刚复制的module

第三步,修改包名

第四部,修改应用程序ID,在app目录下的build.gradle中,如果应用ID相同的话,怎么安装都是同一个应用程序

最后,修改你的应用名称,进入strings.xml下修改app name,这样AndroidManifest.xml里引用的appname就自动更改了。

------------------------------

【4】Android Studio导入第三方库的三种方法

今天在项目中使用一个图片选择器的第三方框架——GalleryFinal,想要导入源码,以便于修改,于是上网查找了一下方法,想到之前用到过其他导入第三方库的方法,现在做个小总结,以防忘记。

  • Android Studio导入第三方库的方法我个人知晓的有三种:
    • Gradle抓取
    • libs导入
    • 源码导入

Gradle抓取

Gradle抓取的方法最为简单,只需在Project->app文件夹下的build.gradle文件中添加依赖:


build.gradle文件夹所在位置

在builde.gradle文件中制定位置添加如下代码:


compile 'cn.finalteam:galleryfinal:1.4.8.7'

然后同步一下工程即可。

libs导入

将从网上下载对应的第三方库的jar包放入Project->app文件夹下的libs文件夹:


libs文件夹所在位置

然后在单击jar包右键,选择“Add as library...”可实现导入;或者在我们上述的build.gradle文件中添加依赖:


compile files('libs/galleryfinal.jar')

源码导入

选择Android Studio菜单栏File->New->import Module...,弹出窗口选择Module的路径:


 

找到下载好的第三方库,找到其中用的Module:


 

选择galleryfinal,点击OK。

同步一下工程,会出现这样的报错信息:


 

点击“Open File”,找到错误的地方:


导入库的build.gradle位置

 

将“project_version”修改为版本名称,如"1.0":


 

再次同步工程,又会出现报错信息:


 

原因是找不到bintray.gradle文件,查找了以下网上的解决方法是删除或注释掉第三方库的build.gradle文件中的:

apply from: "../bintray.gradle"

然后我们继续同步工程,会发现Android Studio一直停留在:


 

这是因为第三方库需要用到相应的jar文件或gradle文件或arr文件,如果觉得这个过程太慢,可以考虑以下方法:

这里强调一下当项目中引入第三方源码库数量比较多时,工程的编译时间会非常漫长,所以为了提高效率,在没有修改源码的需求前提下,不建议使用源码方式引入第三方库。

推荐:
一款优秀的本地图片选择框架GalleryFinal

作者:代码咖啡
链接:http://www.jianshu.com/p/b6c68c50ea19
來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

【4】Android Studio导入第三方类库、jar包和so库

第三方类库源码

将一网友的XMPP代码从ADT转到AS时,发现其使用了第三方类库,源码放在了lib下,直接在AS中Import project,第三方类库并没有自动导入进来,看来需要自己动手了。

项目的目录结构如下:

将第三方源码qqEmoji-lib拷到此目录,修改settings.gradle增加此lib:

include ':app',':qqEmoji-lib'

修改app下的build.gradle,在dependencies内加入:

dependencies {
    compile project(':qqEmoji-lib')
    ...

在qqEmoji-lib下新建build.gradle文件,内容参考如下:


apply plugin: 'android-library'

android {
    compileSdkVersion 19
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 18
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:19.1.0'
    //compile 'com.android.support:support-v4:19.1.0'
}

gradle的配置内容情参考最后第二个链接。

此时项目的结构见下图: 

此时编译,通过,导入成功!

第三方类库jar包

这就简单多了,直接将jar包拷贝到app/libs下,然后在app下的build.gradle中添加此jar的依赖。如下:

dependencies {
    compile 'com.android.support:support-v4:19.1.0'
    compile files('libs/libammsdk.jar')
    compile files('libs/universal-image-loader-1.8.6-with-sources.jar')
    compile files('libs/YoumiSdk_v5.00_2015-01-08.jar')
}

第三方so库

通常来说,我们调用第三方的so库是不需要额外工作的,只需将其放入指定目录,然后在java文件中load即可。 
比如我引用之前《第一个NDK程序》中编译出的libFirstLib.so,将其放到app/src/main/jniLibs/armeabi/下,在源码中引用:

    static {  
    System.loadLibrary("FirstLib"); 
    }  

即可。程序运行如下图: 

【5】Android Studio自动提取控件Style样式

【参考原文】http://blog.csdn.net/shibin1990_/article/details/51685042

如题,有时候看见一个布局写上几百行看上去会非常吃力麻烦,这时候抽取控件样式很有必要了, Android Studio提供了抽取Style样式的方式, 可能是藏的太深了, 很少人用


光标放在控件内: 右键 –>Refactor –> Extract –>Style… 
这里写图片描述


选择之后弹出对话框: 
这里写图片描述


如果你用的很多, 也可以为它设置快捷键: 
打开Android Studio设置页面, 在Keymap中搜索extract, Style就是了, 然后右键单击Style 为它添加快捷键 
这里写图片描述


弹出窗口, 直接按你想要设置的快捷键就OK了, 然后确认 
这里写图片描述


然后就快捷键, 愉快的玩耍了

【6】AndroidStudio中使用plantUML

https://blog.csdn.net/u013831257/article/details/50118461

作者微博:攻城师sloop

Unified Modeling Language (UML)又称统一建模语言或标准建模语言,用来描述 类(对象的)、对象、关联、职责、行为、接口、用例、包、顺序、协作,以及状态。是帮助自己理清众多类之间复杂关系的不二利器,也能帮助别人快速理解你的设计思路。

那么,我们怎么在AndroidStudio中创建自己的UML类图呢?接下来我就教大家如何用正确的姿势创建UML类图。

一.用正确的姿势安装panltUML插件

1.File->Settings->Plugins->Browse repositories

这里写图片描述

2.在搜索框输入plantUML

这里写图片描述

3.导入插件

(ps:由于我已经安装过了,所以没有Install plugin 按钮,未安装的都有这样一个按钮,如下,点击安装即可。)

这里写图片描述

如果以上步骤正确的完成,重启AndroidStudio 右键->new 的时候你会发现多了这么一堆东西,如果出现了这些说明plantUML已经正确的安装了。

这里写图片描述

当然了,所有事情都不会是一帆风顺的,当你迫不及待的想创建一个文件试试的时候你会发现下面的情况。

这里写图片描述

想必此时你的内心一定和我当时一样,一万头草泥马奔腾而过,这都是什么东西!!!

一切事情都是有原因的,而这个因为你还缺少一个必要的东西,就是大名鼎鼎的贝尔实验室开发的一个工具包:Graphviz。

二,用正确的姿势安装Graphviz

1.下载Graphviz

【下载地址戳这里】

这里写图片描述

2.安装

安装过程我就不详细讲解了,点击next后要记住安装的目录。之后下一步,直到完成就行。

这里写图片描述

三.用正确的姿势设置plantUML

1.点击右上角的设置按钮或进入File->Settings->Other Settings ->PlantUML

2.将文件路径填写为刚刚Graphviz的目录下bin目录中dot.exe文件。

(我的为:D:/Program/Graphviz/bin/dot.exe)

这里写图片描述

3.点击OK 刷新一下界面就能看到这个了。

这里写图片描述

讲到这里,就已经安装完成了,可以愉快的用代码来书写UML图了。

什么?你说你还不会书写的语法?没关系,其实我也不会,不过我有一个好的教程推荐给你,相信你看完就明白啦。

四.用正确的姿势学习使用UML

1.【PlantUML快速指南戳这里】

2.注意,这个教程中的语法和AndroidStudio中基本一致,区别就是开始和结束标志不同。




【7】Android Studio 中手把手教你设置switch/case代码块自动补齐

 

相信很多和我一样的小伙伴刚从Eclipse转到Android Studio的时候,一定被快捷键给搞得头晕了,像Eclipse中代码补齐的快捷键是Alt+/ ,但是在AS中却要自己设置,这还不是问题的关键,比如在Eclipse中,输入sw然后按住Alt+/的时候,switch/case代码块就自动补齐了,对于我等喜欢偷懒的人来说省去了很多麻烦,但是在AS中就算按住Ctrl+space快捷键也没法补齐代码块,是不是就不行了呢,下面我就献丑了,带大家一起来定制自己的switch/case代码块。

首先我们来看一下我们如何设置代码补全和提示的快捷键。

1.打开AS,如图所示settings --> keyMap --> comp

点击后面的快捷键黄色区域就可以设置自己的快捷键了(remove/add等设置),相信这个难不倒大家。

2.设置好了之后到代码编辑区编辑代码,输入sw,就会有相应的代码提示出现,如下图所示。

按回车键之后出现的情况如下所示

我们发现AS中并没有像Eclipse中那样为我们补齐剩余的代码,还是需要我们手动去敲,是不是真的就只能这样呢?谷歌当然不会这样了!

 

3.那到底该怎样去设置呢?我就不跟大家卖关子了,接着往下看!

还是进入settings -->  Editor --> Live Templates ,我们就可以看到AS默认的代码补齐按键为tab,但是相信我,就算你现在到代码编辑区去输入sw,然后按Tab键的话,也不可能出现你想要的结果。

4.好的,重点来了,请看仔细了。

 

 

        按照图中的步骤操作就可以了,设置完了之后记住先点击Apply,再点击Ok。不然修改不会生效

下面我在区代码编辑区输入我们自定义的swi快捷键,然后按住Tab键,你会发现自己定义的代码块出来了,是不是很神奇呢?

然后回车,就会发现原来没有的代码块都出来了

 

好了,switch/case代码块的自动补齐到这里就结束了,但是还没有完……

 

5.细心的小伙伴肯定会去钻研这Live Templates面板,你会发现很多常用的代码补齐快捷键。如图

其实我想AS的初衷是想让大家自己定制自己的代码块,能够熟练的掌握这个技巧,那么运用AS开发就会节省很多时间,如果有需要,大家还可以定制更多属于自己的代码块,希望能够帮到大家。

我也是个安卓菜鸟,希望能和大家一起进步!

 有兴趣的还可以看看这篇,补充的《 Android Studio中教你创建代码块---(续)》

【8】实现Android studio设置自动导包及自动导包快捷键

实现Android studio设置自动导包及自动导包快捷键

方式一:Android studio只有导单个包的快捷键:Alt+Enter。

方式二:设置自动导所有的包

    点击File→Setting,Setting→Editor→General→Auto Import,勾选Add unambiguous imports on the fly即可自动导包,点击apply→OK

 

 【10】【Studio】解决格式化时,注释部分没有缩进的问题

我个人喜欢注释也要缩进对齐。其实这个需要自己设置,打开studio的设置,依次找

Setting->Code Style->Java->Wrapping and Braces->Keep when reformatting->Comment at first column->取消勾选

图文结合更清晰

这里写图片描述

设置完后,再格式化一下代码(默认Ctrl+Alt+L),再看效果。

这里写图片描述

1)设置行宽,Preferences->Editor->Code Style, 右侧找到Right margin (columns),默认是100,建议设置为120。

2)设置格式化换行,Preferences->Editor->Code Style->Java,点击右侧标签Wrapping and Braces,勾选Line breaks和Ensure right margin is not exceeded。

【11】Android Studio 光标返回上一次浏览的位置

快捷键 Ctl+Alt+方向键左右

可是windows的这个快捷键被占用了,是切换屏幕的显示方向。导致用as等编译软件时相当的蛋疼。解决方法

用的windows10: 
windows键–>搜索msconfig(打开系统配置界面)–>服务–>找到 Inter HD Graphics Control Panel Service ,前面的对勾 取消掉。 
重启电脑。 OK,很嗨皮。


【12】https://www.jianshu.com/p/739c8414109d

Structure结构

上面有说, 可以通过 Alt + 7 快捷键 调出来。
个人觉得, 这个对于查看代码结构,还是很方便的。直接可以看到代码的大体结构。
我们以 android-23 的 View 类,为例

右侧2个箭头

 
Paste_Image.png

【箭头向下 指向横线】

选中后, 我们点击左侧,具体的类 或者 接口。 我们发现右侧会跟着移动

 
Paste_Image.png

取消选择以后,可以发现不会跟着移动

 
Paste_Image.png

【箭头向下 指向横线】,表示随着左侧点击,右侧自己查找类和方法

【横线指出 向下箭头】

选中后, 我们点击右侧, 具体代码位置。 发现也会到对应的位置。

 
Paste_Image.png

同理, 取消后,就不存在了

【横线指出 向下箭头】,表示随着右侧点击,左侧查找所在类和方法

或者总体自己理解
横线,表示代码。 一个是选择后,去找代码。 一个是从代码,去找位置


展开合并

 
Paste_Image.png

我们【点击Expand All,展开全部】


 
Paste_Image.png

可以发现,左侧全部展开了

【点击 Collapse All, 合拢全部】

 
Paste_Image.png

可以发现,左侧全部合拢了

这2个,表示左侧 全部合拢, 全部展开


匿名类

显示匿名类


 
Paste_Image.png

具体匿名类概念,这里就不描述了,属于基础,可以参考
http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html


显示继承

 
Paste_Image.png

选择之前,是这样的

 
Paste_Image.png

选择之后,可以发现,浅灰色的方法,都是继承自父类的(双击,可以进入父类查看)

 
Paste_Image.png

显示非公开

 
Paste_Image.png

点击前,我们可以看见左边有一些类

 
Paste_Image.png

点击后,我们可以发现, 一些private等的类,也可以看见了

 
Paste_Image.png

这里,我们可以看见 DeclaredOnClickListener 私有静态类
(都说反射效率低, 但是可以发现 很多底层的类, 都大量运用反射)

 
Paste_Image.png

取消点击后, 我们在左边就看不见对应的类了


显示属性

这里f , 就是 field的意思, 也就是 属性, 当然,我觉得理解成 字段 也挺好。

 
Paste_Image.png

点击前,我们只能看见 类,接口和方法
点击后,我们可以看见对应的属性

 
Paste_Image.png

按属性排列

这里P,是 Property。
自己 理解 Property属性, 和 Field的区别。
(Property是对外的, 通常是为了让外面知道,通常有setter或getter)
(Field 不存在对不对外, 类中需要存储, 都属于Field)
(自己参考:Properties and fields are the same, except a property is a settable/gettable field)

 
Paste_Image.png

 

我们拿android-23的View 的 setOnClickListener() 方法举例。
我们调整成, Autoscroll from Source
也就是,【横线指出 向下箭头】, 通过源码去移动左侧的标记

 
Paste_Image.png

当我们点击【P】的时候

 
Paste_Image.png

我们可以发现,左侧 把对应的方法
放置到了 属性 onClickLister: OnClickListener 下面
这样, 我们可以按 Property属性去了解作者的代码想法


按实现归类

 
Paste_Image.png

这个符合,自己看不太清楚, 感觉 像一个【I】,也就是 Interface的意思

 
Paste_Image.png

我们可以发现, View 实现 3个接口, 2个类的内部接口Callback, 一个公开接口AccessibilityEventSource
拿 KeyEvent的内部接口为例:

 
Paste_Image.png

onKeyDown 方法 是经常用的

我们在View中, 找到实现

 
Paste_Image.png

这个时候,左侧方法是单独排列的。
当我们点击 【I】的时候,

 
Paste_Image.png

我们可以发现,是按接口类型, 排列
这样, 当一个类实现多个接口的时候
可以清楚看出哪些方法是实现哪个接口


按字母顺序排序

按字母顺序排列, 这个比较好理解

 
Paste_Image.png

点击后,就按字母顺序排列


 
Paste_Image.png

按是否可见排列

要按可见度排序, 要先打开 show non-public【显示非公开】

 
Paste_Image.png

我们以装载 OnClickLister的 静态内部类 ListenerInfo 举例(没有修饰符,是不可见的)
这个时候,我们没点击 可见度排序 前
我们发现 ListenerInfo 是按 代码排序的, 比较靠前

 
Paste_Image.png

点击后:

 
Paste_Image.png

就按可见度排序,排到后面了


其他表示

访问权限

访问权限修饰符修饰成员变量和方法

  • public:表明该成员变量和方法是共有的,能在任何情况下被访问。
  • protected:必须在同一包中才能被访问。
  • friendly:在一个包中或者子类中才能被访问。(可以不写)
  • private: 只能在本类中访问。

我们看见在【m】后面(当然,类和接口后都有)

 
Paste_Image.png

有这4中,也就是分别代表上面的四种修饰符

  • public:


     
    Paste_Image.png
  • protected:


     
    Paste_Image.png
  • friendly:


     
    Paste_Image.png
  • private:


     
    Paste_Image.png

其他1

Field:字段属性

 
Paste_Image.png

 

Method:方法

 
Paste_Image.png

 

Class:类

 
Paste_Image.png

 

Interface:接口

 
Paste_Image.png

 

其他2

这里比较多, 就拿 方法m 来举例子:
final:

 
Paste_Image.png

 

static:

 
Paste_Image.png


作者:dodo_lihao
链接:https://www.jianshu.com/p/739c8414109d
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

[12]【Android】Android Studio版本更新后Gradle版本不匹配问题解决

前言

相信很多童鞋都遇到过这种情况:在升级Android Studio版本后(如升级2.3 Beta1版本至2.3 Beta3版本),我们会发现项目不能够顺利的构建,错误信息如下:

Error:(1, 0) The android gradle plugin version 2.3.0-beta1 is too old, please update to the latest version.
To override this check from the command line please set the ANDROID_DAILY_OVERRIDE environment variable to "xxxxxxx"
Upgrade plugin to version 2.3.0-beta3 and sync project
Open File
 
提示消息图.png

通过以上信息我们可以看出该问题是由于gradle plugin版本过低导致的,它要求我们升级插件版本到2.3.0-beta3。

什么是Gradle plugin?

看到这里,有的童鞋可能会问“什么是gradle plugin?”,实际上我们项目中的Gradle有两个,其中一个是本地的Gradle(Android Studio的构建工具--Gradle构建工具是任务驱动型的构建工具,并且可以通过各种Plugin插件扩展功能以适应各种构建任务),另外一个是Android Studio项目中的插件gradle plugin(对应项目的Gradle插件),我们可以在File->Project Structure->Project中看到Gradle与gradle plugin的版本信息,如下图:

 
projectInfo.png

解决办法

  • FQ后升级
    如果你具备FQ条件的话,FQ后直接点击Upgrade plugin to version 2.3.0-beta3 and sync project即可完成对该插件的升级。
  • 升级Gradle到最新版本
  • 访问https://services.gradle.org/distributions/ 来下载与之匹配的Gradle版本或者最新的Gradle工具包;
  • 解压到Android Studio的gradle目录下;
  • File->Setting->Build,Exection,Deployment->Gradle->Use local gradle distribution,修改Gradle home为AS安装目录下最新的gradle版本;
  • 修改对应Project的build.gradle中的com.android.tools.build:gradle:版本号为提示版本(如修改classpath 'com.android.tools.build:gradle:2.3.0-beta1'classpath 'com.android.tools.build:gradle:2.3.0-beta3');
  • 修改gradle-wrapper.properties中distributionUrl上的版本号与当前Gradle版本号一致(如修改distributionUrl=https\://services.gradle.org/distributions/gradle-3.2-all.zipdistributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip);
  • 重新同步。

【12】Android Studio出现Failed to open zip file问题的解决方法

【原文地址】https://www.cnblogs.com/Sharon2017/p/7810774.html

 【13】android 安装APK编译报错DELETE_FAILED_INTERNAL_ERROR Error while Installin

问题描述: Application will not run on device: INSTALL_CANCELED_BY_USER , DELETE_FAILED_INTERNAL_ERROR ?

这里写图片描述

点击确认后,运行没有成功,却在Run窗口行出现:INSTALL_CANCELED_BY_USER , DELETE_FAILED_INTERNAL_ERROR的报错问题

针对以上问题,几种解决方式(来源于网上):

  1. Build –> Clean Project.

  2. setting–> instant run –> 禁止开启

    这里写图片描述

  3. 在项目的根目录中运行命令行:gradlew clean。(可以以直接在android studio中Terminal窗口中运行该命令)

以上方法都走了一遍,结果却是无效的,犹如一万只草泥马飞奔而过。泪崩的继续找,最后锁定原因出现在手机上。

注意点:小米手机的奇葩坑,MIUI 8 开发调试要是出现: adb install失败 100%稳定复现 INSTALL_CANCELED_BY_USER。结果是小米的安全中心2.0.5版出现了问题。

解决方法: 现在小米手机上安装LBE安全大师,然后打开软件,选择软件管理–>软件卸载–>安全中心–>换成出厂设置的 
版本。(来源于小米论坛)。

最终运行结果:

这里写图片描述

PS: 最近期间,走完以上步骤,发现红米Note3又发癫,调试不了。 
若是上一步骤还是不行,USB调试不了,则需走一步:

安装LBE安全大师,然后打开软件,选择软件管理–>软件自动安装监控->允许自动安装

资源参考:

今天在编译程序时把项目安装到别的手机时总报错 DELETE_FAILED_INTERNAL_Error ErrorwhileInstallingAPK说:删除失败,安装失败,以前也遇到过这样的问题,看了网上别人的博客,大多是说:开发者选项--->USB调试未打开之类,我可以很明确的告诉你,虽然我是个新手,但这个我还是会注意的,经过再三确认我知道并不是这个原因。那就来说一下,到底是什么原因产生的把。总体来说:就是我以前这手机总装过这个APP 

今天在编译程序时 把项目安装到别的手机时总报错  

DELETE_FAILED_INTERNAL_Error 

Error while Installing APK

说:删除失败,安装失败, 以前也遇到过这样的问题,看了网上别人的博客, 大多是说:开发者选项--->USB调试未打开之类, 我可以很明确的告诉你,虽然我是个新手,但这个我还是会注意的, 经过再三确认 我知道 并不是这个原因。

那就来说一下,到底是什么原因 产生的把。总体来说:就是我以前这手机总装过这个APP  但是卸载的不干净, 重新装时,包名起了冲突,导致无法装上。

解决办法: 找到对应的包名,将其删除 。 如我的就在/data/local/tmp/com.bill99.kuaiqian 下 我把这个删除了就 重新  adb reboot  就成功 装上了

另外 在贴一些 网上 对此类问题的解决办法

 

第一步:先把原来已经存在的相同包名的APK删除,如:adb shell rm system/app/OutdoorMeter/OutdoorMeter.apk
第二步:将data/data/目录下该应用的包名的目录删除掉,如:adb shell rm -rf data/data/com.runbo.outdoormeter/
第三步:重启android手机  adb reboot
第四步:再重新安装该APK 

大多都差不多, 其实开始的是,可以先去检查一下 是否处于“”开发者模式“”,USB是否打开 再来进行 我说的这些操作。。。




























posted @ 2017-07-06 09:58  OzTaking  阅读(623)  评论(0)    收藏  举报