何靖的博客


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

学习计划之Android

发表于 2019-09-12

Android基础知识

相关知识点:

知识点 完成状态 参考
待处理 参考
Android四大组件之Activity 待处理 参考
Android四大组件之Service 待处理 参考
Android四大组件之BroadcastReceiver 待处理 参考
Android四大组件之ContentProvider 待处理 参考
Android之启动流程 待处理 参考
Android之View的绘制流程 待处理 参考
待处理 参考

Gradle之FTP文件下载

发表于 2019-09-10 | 分类于 gradle , Android

Gradle之FTP文件下载

1、背景

项目上需要使用本地web,所以我们直接将web直接放入assets资源文件夹下。但是随着开发进行web包越来越大;所以我们想着从版本库里面去掉web将其忽略掉,使用gradle命令下载web。由于web包是放在局域网服务器上的,服务器支持FTP文件协议,所以使用FTP插件下载文件。

2、FTP

FTP官网文档

Gradle官网文档
gradle配置

3、FTP工具

ftp-util.gradle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
configurations {
ftpAntTask
}

dependencies {
ftpAntTask("org.apache.ant:ant-commons-net:1.9.2") {
module("commons-net:commons-net:3.3")
}
}

void downloadFtpFiles(String serverIp, String userId, String password, String url, localDir) {
ant.taskdef(
name: 'ftp',
classname: 'org.apache.tools.ant.taskdefs.optional.net.FTP',
classpath: configurations.ftpAntTask.asPath
)

//指定ftp地址及账户信息
ant.ftp(action: 'get', server: serverIp, userid: userId, password: password, remotedir: url) {
// 删除老文件
delete(new File(localDir))

//指定下载文件位置
fileset(dir: new File(localDir)) {
include(name: "**")
}
}
}

//导出函数
ext {
downloadFtpFiles = this.&downloadFtpFiles
}

使用方式:

导入方式:将ftp-util.gradle文件放在根目录下然后使用一下代码导入groovy代码

1
apply from: "${project.rootProject.file('ftp-util.gradle')}"

下载任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
task downloadFiles() {
//清理缓存
dependsOn 'clean'
def dir = buildDir.getPath() + '/dir'
doLast {
//获取最新版本信息
ant {
println 'web-ftp:serverIp:' + serverIp
println 'web-ftp:userId:' + userId
println 'web-ftp:password:' + password
println 'web-ftp:dir:' + dir

println 'web-ftp:sync start'

def url = webUrl + '/latest'

//调用FTP插件下载文件函数
downloadFtpFiles(serverIp, userId, password, url, dir)
println 'web-ftp:sync end'
}
}
}

调用task方式

1
./gradlew downloadFiles

Android之Context概述

发表于 2019-09-06 | 分类于 Android

Context概述

官方注释信息:

1
2
3
4
5
6
7
8
9
10
11
/**
* Interface to global information about an application environment. This is
* an abstract class whose implementation is provided by
* the Android system. It
* allows access to application-specific resources and classes, as well as
* up-calls for application-level operations such as launching activities,
* broadcasting and receiving intents, etc.
*/
public abstract class Context {
...
}

与有关应用程序环境的全局信息的接口。这是一个抽象类,其实现由android系统提供。它允许访问特定于应用程序的资源和类,以及对应用程序级操作(如启动活动、广播和接收意图等)的向上调用。

关联:Android应用Context详解及源码解析

关联:Android Context完全解析,你所不知道的Context的各种细节

Android之ImageView宽高适配

发表于 2019-06-06 | 分类于 Android , view

Android ImageView图片宽度为控件宽度,高度按比例缩放

实现方式

在Java代码里面实现

首先,定义ImageView,在该ImageView中,我们需要设置属性android:adjustViewBounds=”true”,他的意思图片是否保持宽高比。切记的一点是该属性需要与maxWidth、MaxHeight一起使用,否则单独使用没有效果。

1
2
3
4
5
6
7
<ImageView
android:id="@+id/img_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:src="@drawable/load_default_img" />

刚刚说了,android:adjustViewBounds=”true”必须与MaxHeight一起使用才能有效,所以,我要设置该ImageView的最大高度MaxHeight:

1
2
3
4
5
6
7
8
int screenWidth = getScreenWidth(this); // 获取屏幕宽度a
ViewGroup.LayoutParams lp = testImage.getLayoutParams();
lp.width = screenWidth;
lp.height = LayoutParams.WRAP_CONTENT;
testImage.setLayoutParams(lp);

testImage.setMaxWidth(screenWidth);
testImage.setMaxHeight(screenWidth * 5); //这里其实可以根据需求而定,我这里测试为最大宽度的5倍

在Xml中实现

1
2
3
4
5
6
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:src="@drawable/ic_login_bg" />

参考:

1、Android 设置ImageView宽度固定,其高度按比例缩放适应

微信X5之WebView使用

发表于 2019-05-16

#微信X5之WebView使用

X5之WebView属性配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
   private WebViewClient client = new WebViewClient() {
/**
* 防止加载网页时调起系统浏览器
*/
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
};

public X5WebView(Context arg0) {
super(arg0);
setBackgroundColor(85621);
}

@SuppressLint("SetJavaScriptEnabled")
public X5WebView(Context arg0, AttributeSet arg1) {
super(arg0, arg1);
this.setWebViewClient(client);
// this.setWebChromeClient(chromeClient);
// WebStorage webStorage = WebStorage.getInstance();
initWebViewSettings();
this.getView().setClickable(true);
}

private void initWebViewSettings() {
WebSettings webSetting = this.getSettings();
webSetting.setJavaScriptEnabled(true);
webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
webSetting.setAllowFileAccess(true);
webSetting.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
webSetting.setSupportZoom(true);
webSetting.setBuiltInZoomControls(true);
webSetting.setUseWideViewPort(true);
webSetting.setSupportMultipleWindows(true);
// webSetting.setLoadWithOverviewMode(true);
webSetting.setAppCacheEnabled(true);
// webSetting.setDatabaseEnabled(true);
webSetting.setDomStorageEnabled(true);
webSetting.setGeolocationEnabled(true);
webSetting.setAppCacheMaxSize(Long.MAX_VALUE);
// webSetting.setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);
webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);
// webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH);
webSetting.setCacheMode(WebSettings.LOAD_NO_CACHE);

// this.getSettingsExtension().setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);//extension
// settings 的设计
}
12…4
何靖

何靖

18 日志
13 分类
28 标签
GitHub E-Mail CSDN
© 2021 何靖
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4