0%

1、android:textAllCaps=”true”设置text内容大写

2、button会自动设置text内容大写

3、Unfortunately,Just Java(the app name) has stopped.常见出现错误的原因
比如:按钮onclick对应的函数不存在
调试:Android studio下方的Android DDMS查看日志

4、 开启 Android Studio 中的“自动导入”(Auto Import)

Windows 系统用户,请依次转到“文件 (File)”>“设置 (Settings)”>“编辑器 (Editor)”>“常规 (General)”>“自动导入 (Auto Import)”
Mac 系统用户,请依次转到 Android Studio >“偏好设置 (Preferences)”>“编辑器 (Editor)”>“常规 (General)”>“自动导入 (Auto Import)”
选中以下所有选项:

  • Show import popup
  • Optimize imports on the fly
  • Add unambiguous imports on the fly
  • Insert imports on paste → All

5、debug调试
.java文件添加断点,点击debug按钮,打开下方debug面板,step over下一步,播放符号恢复运行,停止符号停止调试

6、全局变量:也叫成员变量,是指在类中定义的变量;它在整个类中都有效

全局变量又可分为:类变量和实例变量

(1).类变量:又叫静态变量 用static修饰 它可以直接用类名调用 也可以用对象调用 而且所有对象的同一个类变量都是共享同

一块内存空间的

(2).实例变量:不用static修饰 它只能通过对象调用 而且所有对象的同一个实例变量是共享不同的内存空间的

局部变量:是指那些在方法体中定义的变量以及方法的参数 它只在定义它的方法内有效

7、String S要大写(因为它是一个对象),初始化值,需要转义字符\,比如:String s1=”价格是"5"美元”;

8、字符串之间的链接使用+号,例如: String s1=“$”+100;

9、根据Android编码规范,需要在每个操作符的前后都添加空格

10、遇到bug及时请教他人很有必要,可以减少一定的时间,当然自己也要具备修复bug的本领

编程语言(Programming language)
Java
事件驱动编程(Event-driven programming)
Activity
注释(Comments)
应用包名(Package name)
导入语句(Import statements)
类名(Class name)
onCreate()
onClick
执行(Execute)
方法(Method)
调用(Calling)
表达式(Expressions)

1、layout_alignParentTop 父视图上方
layout_alignParentBottom 父视图下方
layout_alignParentLeft 父视图左方
layout_alignParentRight 父视图右方
layout_centerVertical 父视图中间

2、layout_toRightOf 在什么右边
layout_below 在什么下面

3、android:src=”@drawable/Helloworld”(H大写命名错误,只能a-z,0-9)
所以应该改成android:src=”@drawable/helloworld”

4、android:id=”@+id/Helloworld _text_view”

5、android:fontFamily=”casual” 设置字体

6、android:textColor=”@android:color/white” Android标准颜色(或采用十六进制 Material Design 配色 )

7、android:layout_below=”@id/happy_text_view” 定义该View在 happy_text_view的下面

8、自制生日贺卡

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
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<ImageView
android:src="@drawable/birthday"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"/>

<TextView
android:id="@+id/happy_text_view"
android:text="Happy Birthday Chen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="32sp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_margin="20dp"
android:fontFamily="casual"
android:textColor="@android:color/white"/>

<TextView
android:text="- 2017.4.23"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="26sp"
android:layout_below="@id/happy_text_view"
android:layout_alignParentRight="true"
android:layout_margin="5dp"
android:fontFamily="casual"
android:textColor="@android:color/white"/>

<TextView
android:text="From Curtis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="26sp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_margin="5dp"
android:fontFamily="casual"
android:textColor="@android:color/white"/>

</RelativeLayout>

happybirthday

一、运行app时发生错误

Android Studio版本2.3.1

1
Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.

1、原因

因为2.0之后的android studio开始支持instant run(即时运行),通俗的说它可以让你改了代码后,点击即时运行,很快的就可以呈现出我们修改后的代码效果。然后他需要sdk和gradle的支持,而你本地刚好这些条件不符合,所以它才提示。

2、解决办法

(1):开启及时运行,依次点击:Tools–>Android–>点击Enable ADB Integration,将其所对应项前面的对勾勾选上。
Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
(2):依次点击,Setting->Build,Execution,Deployment->Instant Run。将所有项前面的对勾勾选上。
Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
(3):修改build.gradle(Project那个),将gradle版本更改至2.0.0以上版本。旧版本project gradle不支持的Instant Run版本。

1
classpath 'com.android.tools.build:gradle:2.1.3'

3、补充一下ADB

ADB是android sdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如G1手机). 它的主要功能有: * 运行设备的shell(命令行) * 管理模拟器或设备的端口映射 * 计算机和设备之间上传/下载文件 * 将本地apk软件安装至模拟器或android设备 ADB是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是android设备。
<div class="alert alert-info" role="alert">所以之前出的这个错误就是代表我们的Android studio没有允许adb的运行,解决方法也提示出来了,设置成Enable就好了

1、新建系统变量JAVA_HOME:

1
E:\Android\Java\jdk1.8.0_131(变量值填写jdk的安装目录)

2、新建系统变量CLASSPATH:

1
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

3、修改系统变量path值:

在变量值最后输入

1
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)

1、LinearLayout 将子视图排成垂直的一排
RelativeLayout 子视图和父视图相对排列,子视图之间相对排列
2、
xmlns:android="http://schemas.android.com/apk/res/android"(xml命名空间申明)(xml namespace)
3、android:layout_weight=”1” 表示权重为1
Android-1B-layout

Android-1B-layout2
4、padding内边距
layout_margin外边距

1、dp:像素无关密度(density-independent pixels),应用于长和宽

2、建议所有的可接触目标,比如按钮,长和宽至少是48dps

3、wrap_content根据内容自动调整,比如 width="wrap_content"

4、sp:比例无关像素(scale -independent pixels )只适用于字体textSize。
Material Design 文档 ,small,medium,large。比如:android:textAppearance="?android:textAppearanceLarge"

5、 Material Design 文档:Sizing by increments
Material Design 文档:typography-typeface
Material Design 文档 - 配色:Color palette

6、@符号表示在Android app里面引用一个资源,比如:android:src="@drawable/cake"( drawable 是这个资源的类型)( drawable是类似图形的东西,能在Android里面显示在屏幕上 ,cake是这个图片的名字,不需要添加扩展名)

7、 scaleType 告诉设备在ImageView的边框里放大或者缩小图片,比如:android:scaleType="center", 通常使用值centerCrop。

首先,看看自己的CentOS版本
cat /etc/issue

接下来查看内核版本,命令是:
uname -a

可以看到我们当前的内核是2.6.32-642.6.2.el6.x86_64

对比锐速支持的内核列表,地址:https://github.com/0oVicero0/serverSpeeder_kernel/blob/master/SystemList.md

我们可以看到,我们的内核并不在支持范围内,那么要降级成什么内核呢?

现在我们需要去http://ftp.scientificlinux.org/linux/scientific/6.X/XX/updates/security/

这个链接寻找能够匹配同时又兼容锐速的内核。说明一下上面地址中,6.X代表你的系统版本。后面的XX代表系统位数,32位就是i386,64位就是X86_64

我看完了6.8的内核,锐速都不支持,6.7的内核锐速支持的,那边却没有,直到6.6的2.6.32-504.3.3.el6.x86_64内核,终于与锐速匹配了。

于是,咱们先换内核吧,先打命令下载:

1
wget http://ftp.scientificlinux.org/linux/scientific/6.6/x86_64/updates/security/kernel-2.6.32-504.3.3.el6.x86_64.rpm

11
然后执行安装:
rpm -ivh kernel-2.6.32-504.3.3.el6.x86_64.rpm --force

22
安装完成后需要打命令重启
reboot

重启完成后,可以再用前面的命令查看一下内核,确认是否版本已经改了。
33
然后然后安装锐速

抽签

X星球要派出一个5人组成的观察团前往W星。
其中:
A国最多可以派出4人。
B国最多可以派出2人。
C国最多可以派出2人。
….

那么最终派往W星的观察团会有多少种国别的不同组合呢?

下面的程序解决了这个问题。
数组a[] 中既是每个国家可以派出的最多的名额。
程序执行结果为:
DEFFF
CEFFF
CDFFF
CDEFF
CCFFF
CCEFF
CCDFF
CCDEF
BEFFF
BDFFF
BDEFF
BCFFF
BCEFF
BCDFF
BCDEF
….
(以下省略,总共101行)

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
#include <stdio.h>
#define N 6
#define M 5
#define BUF 1024

void f(int a[], int k, int m, char b[])
{
int i,j;

if(k==N){
b[M] = 0;
if(m==0) printf("%s\n",b);
return;
}

for(i=0; i<=a[k]; i++){
for(j=0; j<i; j++) b[M-m+j] = k+'A';
______________________; //填空位置
}
}
int main()
{
int a[N] = {4,2,2,1,1,3};
char b[BUF];
f(a,0,M,b);
return 0;
}

仔细阅读代码,填写划线部分缺少的内容。

注意:不要填写任何已有内容或说明性文字。

思路

一共选M个人,m经过选择记录剩下可选人数,M-m为已经选择的人数,M-m+j为新加入的人在b数组中的下标。这题在填空之后可以利用总共101行这个条件进行验证。

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
#include <stdio.h>
#define N 6
#define M 5
#define BUF 1024

void f(int a[], int k, int m, char b[])
{
int i,j;

if(k==N){
b[M] = 0;
if(m==0) printf("%s\n",b);
return;
}

for(i=0; i<=a[k]; i++){
for(j=0; j<i; j++) b[M-m+j] = k+'A';
f(a,k+1,m-i,b); //填空位置
}
}
int main()
{
int a[N] = {4,2,2,1,1,3};
char b[BUF];
f(a,0,M,b);
return 0;
}

答案:f(a,k+1,m-i,b);

快速排序

排序在各种场合经常被用到。
快速排序是十分常用的高效率的算法。

其思想是:先选一个“标尺”,
用它把整个队列过一遍筛子,
以保证:其左边的元素都不大于它,其右边的元素都不小于它。

这样,排序问题就被分割为两个子区间。
再分别对子区间排序就可以了。

下面的代码是一种实现,请分析并填写划线部分缺少的代码。

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
#include <stdio.h>

void swap(int a[], int i, int j)
{
int t = a[i];
a[i] = a[j];
a[j] = t;
}

int partition(int a[], int p, int r)
{
int i = p;
int j = r + 1;
int x = a[p];
while(1){
while(i<r && a[++i]<x);
while(a[--j]>x);
if(i>=j) break;
swap(a,i,j);
}
______________________;
return j;
}

void quicksort(int a[], int p, int r)
{
if(p<r){
int q = partition(a,p,r);
quicksort(a,p,q-1);
quicksort(a,q+1,r);
}
}

int main()
{
int i;
int a[] = {5,13,6,24,2,8,19,27,6,12,1,17};
int N = 12;

quicksort(a, 0, N-1);

for(i=0; i<N; i++) printf("%d ", a[i]);
printf("\n");

return 0;
}

思路

快速排序

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
#include <stdio.h>

void swap(int a[], int i, int j)
{
int t = a[i];
a[i] = a[j];
a[j] = t;
}

int partition(int a[], int p, int r)
{
int i = p;
int j = r + 1;
int x = a[p];
while(1){
while(i<r && a[++i]<x);
while(a[--j]>x);
if(i>=j) break;
swap(a,i,j);
}
swap(a,p,j);
return j;
}

void quicksort(int a[], int p, int r)
{
if(p<r){
int q = partition(a,p,r);
quicksort(a,p,q-1);
quicksort(a,q+1,r);
}
}

int main()
{
int i;
int a[] = {5,13,6,24,2,8,19,27,6,12,1,17};
int N = 12;

quicksort(a, 0, N-1);

for(i=0; i<N; i++) printf("%d ", a[i]);
printf("\n");

return 0;
}

答案:swap(a,p,j)