【安卓周记】笔记复习记录:No.1
【安卓】
1. 安装APK记得考虑兼容7.0,Uri不能直接从Uri.parse()中构建,要使用FileProvider构建Uri。
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_path" />
</provider>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<!-- /storage/emulated/0/Download/下的文件可以访问 -->
<external-path
name="beta_external_path"
path="Download/" />
<!--/storage/emulated/0/Android/data/下的文件可以访问 -->
<external-path
name="beta_external_files_path"
path="Android/data/" />
</paths>
public static void installAPK(Context context, String apkPath) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 7.0以上要这样把文件提供给外部应用程序
Uri uri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".fileprovider", new File(apkPath));
// 7.0以上不能像下面那样访问文件了(注释)
// intent.setDataAndType(Uri.parse("file://" + apkPath), "application/vnd.android.package-archive");
intent.setDataAndType(uri, "application/vnd.android.package-archive");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(intent);
}
2. FLAG_ACTIVITY_NEW_TASK与taskAffinity的配合使用(规则要谨记:直接将任务栈移到前台显示,任务栈状态不变)
/* 任务栈1: ActivityA > ActivityB 任务栈2: ActivityC > ActivityD 1. 如果ActivityB启动了ActivityC,任务栈2直接回到前台显示,显示的是ActivityD。 2. 如果ActivityB启动了ActivityE(ActivityE的taskAffinity属于任务栈2),任务栈2回到前台,ActivityE创建并显示。 */
【前端】
1. table-cell的使用,table-cell内有浮动元素和普通inline-block元素在垂直居中的特点(是整体居中不是每个元素居中,参考下面代码在浏览器显示效果)。
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
.root {
background-color: gray;
height: 80px;
width: 200px;
display: table-cell;
vertical-align: middle;
font-size: 0px;
}
.left {
float: left;
height: 30px;
width: 50px;
background-color: red;
position: relative;
font-size: medium;
}
.left-text {
width: 20px;
height: 20px;
background-color: pink;
position: absolute;
transform: translate(-50%, -50%);
top: 50%;
left: 50%;
line-height: 20px;
text-align: center;
}
.right {
display: inline-block;
height: 40px;
width: 40px;
line-height: 40px;
text-align: center;
background-color: green;
font-size: medium;
}
</style>
</head>
<body>
<div id="root" class="root">
<div id="left" class="left">
<div class="left-text">
a
</div>
</div>
<div class="right">
b
</div>
</div>
</body>
</html>
2. Vue实例、ref的使用:一个组件就是一个Vue实例,一个应用由一个根Vue组成,每个Vue实例构建的时候接收一个配置参数,在Vue模板中ref可以引用到DOM元素或者Vue组件实例。
<template>
<div>
<!-- vue中通过this.$refs.left访问DOM元素 -->
<div ref="left">
</div>
<!-- vue中通过this.$refs.right访问Vue实例,可以调用它的方法 -->
<vue-button ref="right">
</vue-button>
</div>
</template>
3. v-on:使用要注意三个不同点,v-on:click里面的$event参数是DOM元素,v-on:eventName的自定义事件中$event参数是子组件触发事件传递过来的数据,记得v-on中没有this(暂时没去了解为什么)。
<template>
<div class="root">
<!-- 1:div单击的时候直接调用Vue实例的方法 -->
<div v-on:click="clear"></div>
<!-- 2:效果与1一样 -->
<div v-on:click="clear($event)"></div>
<!-- 3:$event是子组件传递的参数 -->
<vue-select v-on:changeData="change($event)"></vue-select>
<!-- 4:效果与3一样-->
<vue-select v-on:changeData="change"></vue-select>
</div>
</template>
methods: {
clear(e){
alert(e.target.innerText)
},
change(v){
alert(v)
}
}
4. JQuery是个老古董了,以后用到的机会不多:
(1) 了解一下$()返回的是JQuery对象,实际上他是个类数组(因为有length属性),通过eq(index)会创建一个新的jQuery对象表示该位置的元素进行操作,如果不通过eq()方法指定操作元素就是就是所有元素都进行操作。
(2) 看看一段官方对eq()的说明:Given a jQuery object that represents a set of DOM elements, the .eq() method constructs a new jQuery object from one element within that set.
【其他】
1. 接下来重点还是放回安卓上,在了解一个开源项目,里面包含了音视频相关的知识,要抽时间学习一下和总结技术。
2. 然后就是还要维护自己的类库和博客,最近才开始想要花时间去维护博客和Github,时间如何平衡这个还是要规划好。
3. 多学习Web前端基础,自然语言处理开始抓时间去了解基础,看看是否能接合原有已经理解的知识,例如正则表达式之类的。
【安卓周记】笔记复习记录:No.1的更多相关文章
- 【安卓周记】笔记复习记录:No.2
[安卓] 1. Activity横竖屏切换生命周期变化,分三种情况: 1. 没有配置android:configChanges:每次横竖屏切换都会重新走一遍生命周期 2. 配置android:conf ...
- 安卓开发笔记——自定义广告轮播Banner(实现无限循环)
关于广告轮播,大家肯定不会陌生,它在现手机市场各大APP出现的频率极高,它的优点在于"不占屏",可以仅用小小的固定空位来展示几个甚至几十个广告条,而且动态效果很好,具有很好的用户& ...
- 安卓第六天笔记--ListView
安卓第六天笔记--ListView 1.AdapteView AdapteView 继承ViewGroup它的本质是容器 AdapterView派生了3个子类: AbsListView AbsSpin ...
- 安卓开发笔记——丰富多彩的TextView
随手笔记,记录一些东西~ 记得之前写过一篇文章<安卓开发笔记——个性化TextView(新浪微博)>:http://www.cnblogs.com/lichenwei/p/4411607. ...
- 安卓开发笔记——深入Activity
在上一篇文章<安卓开发笔记——重识Activity >中,我们了解了Activity生命周期的执行顺序和一些基本的数据保存操作,但如果只知道这些是对于我们的开发需求来说是远远不够的,今天我 ...
- 安卓开发笔记——关于开源项目SlidingMenu的使用介绍(仿QQ5.0侧滑菜单)
记得去年年末的时候写过这个侧滑效果,当时是利用自定义HorizontalScrollView来实现的,效果如下: 有兴趣的朋友可以看看这篇文件<安卓开发笔记——自定义HorizontalScro ...
- 安卓开发笔记——打造万能适配器(Adapter)
为什么要打造万能适配器? 在安卓开发中,用到ListView和GridView的地方实在是太多了,系统默认给我们提供的适配器(ArrayAdapter,SimpleAdapter)经常不能满足我们的需 ...
- 安卓开发笔记——关于Handler的一些总结(上)
接上篇文章<安卓开发笔记——关于AsyncTask的使用>,今天来讲下在安卓开发里"重中之重"的另一个异步操作类Handler. 今天打算先讲下关于Handler的一些 ...
- 安卓BindService笔记
1 前言 最近学习到了安卓的service,记录一下自己对BindService的理解,学习教程以及部分代码来自菜鸟教程的android教程:菜鸟教程安卓端BindService链接 2 正文 先贴一 ...
随机推荐
- 关于工作中.net转java遇到的一个远程调用传递重复参的问题。
工作中遇到一个很奇怪的传参问题.之前.net使用的是一个List列表,列表中有几个重复的参数.列表中使用的model类是KeyValue. 我使用java模仿其写法,传递List和KeyValue.对 ...
- Java中XML的四种解析方式(二)
三.JDOM解析 特征: 1.仅使用具体类,而不使用接口. 2.API大量使用了Collections类. import org.jdom2.Attribute; import org.jdom2.D ...
- Python进阶:对象复制与比较,分深浅,见真假
"==" 与 is python 为 10 开辟内存空间, a与b同时指向这块内存,即a与b的值相等,a与b的id也相等.因此 a==b 与 a is b 都返回True: a = ...
- C++11<functional>深度剖析:背景、原理、接口与实现
自C++11以来,C++标准每3年修订一次.C++14/17都可以说是更完整的C++11:即将到来的C++20也已经特性完整了. C++11已经有好几年了,它的年龄比我接触C++的时间要长10倍不止吧 ...
- unittest之makeSuite\testload\discover及测试报告teseReport
转载:http://www.cnblogs.com/sunny0/p/7771089.html 测试套件suite除了使用addTest以外,还有使用操作起来更更简便的makeSuite\testlo ...
- nginx修改响应头(可屏蔽后端服务器的信息:IIS,PHP等)
修改nginx反向代理请求的Header 需要使用到proxy_set_header和add_header指令.其中: proxy_set_header 来自内置模块ngx_http_proxy_mo ...
- C# 使用Berkeley DB
Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间.简称BDB Berkeley DB是嵌入式键值数据库库,为应用程序提供可扩展的高性能数据管理服务. Berkeley DB ...
- 节日营销!这样搞-App运营日常
节日送礼需求日益增长,当儿女们有了购买需求的时候,商家如何突出重围,成为孝子们的首选?如何做好节日营销?几个经验分享一下: 1.抓住节日特色 结合节日风格特色,营造节日气氛,如母亲节这种节日,主要体现 ...
- 如何使用JavaScript开发AR(增强现实)移动应用 (一)
本文封面配图是去年Jerry看的一部电影<异形:契约>的剧照. 所谓AR(Augmented Reality), 即增强现实,是一种将通过计算机渲染出的虚拟图像与真实世界巧妙融合的手段,背 ...
- null和空的区别
python中None和Null的区别 首先了解python对象的概念 python中,万物皆对象,所有的操作都是针对对象的. 那什么是对象?5是一个int对象,‘oblong’是一个str对象,异常 ...