以下内容仅为个人初学Android小结及生活,不太适合其他人看。
1、 让图片子元素水平 垂直居中
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center|center_horizontal|center_vertical" >
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/ic_launcher" />
</LinearLayout>
2、对于部分老版本系统,非button控件,若使用onClick方法,需要同时设置以下两个才能点击,否则就用其他两种点击事件方法
android:clickable=”true”
android:onClick=”closebtn”
3、
<activity
android:name="org.activity"
android:launchMode="singleTask"
android:screenOrientation="nosensor"
android:theme="@style/NoTitle" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
4、权限访问修饰符
public,protected,default,private,这四种级别的修饰符都可以用来修饰类、方法和字段。
包外 子类 包内 类内
public yes yes yes yes
protected no yes yes yes
default no no yes yes
private no no no yes
5、ASO(App Store Optimization)应用商店优化
6、酷传 一键发布到各安卓市场
7、使用说明的图片, 更新后首次登录展示图,展示大版本更新内容 或者广告的
8、
int a=1;
if(a==1){System.out.println("1");}
if(a==2){System.out.println("2");}
if(a==3){System.out.println("3");}
if(a==1){System.out.println("1");}
else if(a==2){System.out.println("2");}
else if(a==3){System.out.println("3");}
else if(a==4){System.out.println("4");}
多个if 不管你前面ture与否后面的都执行
else if 如果前面的有一个成立 那么后面的都不执行
9、Hotfix是针对某一个具体的系统漏洞或安全问题而发布的专门解决该漏洞或安全问题的小程序,通常称为修补程序。
10、改包名时要把各种文件读取/存储 下载目录改过来,比如自动登录时检测的
11、设计师网站dribbble 需要邀请才能上传与评论,否则注册账号只能查看内容
12、RGB分别占两个位,十六进制0123~DEF,一共16*16-1=256-1=255 0~255一共256个, 组成最后的#000000
如0 255 255 对应#00FFFF
13、合成声音,合成视频。合成图片,图标处理。
14、RelativeLayout下
android:layout_alignParentTop=”true” //贴近顶部
android:layout_alignParentBottom=”true” //贴近底部
15、UI只做一个src小图,background用色块画一下就好,参考支付宝的
16、软硬件结合,学单片机的东西
17、上传APP前要验证:
a、修改manifest中的版本号数据
b、加同一个签名,应用加固
c、修改服务器上的version文件
d、上传后自己手机测试一遍
18、发布前提:通过单元测试;通过功能测试;通过安全测试;
安全测试 目前常做的测试类别
- 用户隐私 检查是否在本地保存用户密码,无论加密与否 检查敏感的隐私信息,如聊天记录、关系链、银行账号等是否进行加密
检查是否将系统文件、配置文件明文保存在外部设备上 部分需要存储到外部设备的信息,需要每次使用前都判断信息是否被篡改 - 文件权限
检查App所在的目录,其权限必须为不允许其他组成员读写 - 网络通讯
检查敏感信息在网络传输中是否做了加密处理,重要数据要采用TLS或者SSL - 运行时解释保护
对于嵌有解释器的软件,检查是否存在XSS、SQL注入漏洞
使用webiew的App,检查是否存在URL欺骗漏洞 - Android组件权限保护
禁止App内部组件被任意第三方程序调用。
若需要供外部调用的组件,应检查对调用者是否做了签名限制 - 升级
检查是否对升级包的完整性、合法性进行了校验,避免升级包被劫持 - 3rd库
如果使用了第三方库,需要跟进第三方库的更新
APP端的安全问题,一般是反编译和本地存储漏洞。
更多的侧重在服务端API的设计,例如http请求默认是明文的,如果安全验证和加密机制很烂,通过网络嗅探扫描,很容易被猜到和模拟请求,也可能被注入。
当然,如果是web app ,则和web应用类似,存在跨站脚本等等
19、Error:Failed to complete Gradle execution. Cause: unknown
AndroidStudio若编译失败,看下build.gradle
修改
dependencies {
classpath ‘com.android.tools.build:gradle:1.3.0’
}
或改为其他gradle版本试试
20、
//最简单的spinner
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/array1"
/>
</LinearLayout>
//android:entries="@array/array1"表示Spinner的数据集合是从资源数组array1中获取的,array1数组资源定义在values/arrays.xml中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="array1">
<item>java</item>
<item>swift </item>
<item>javascript</item>
<item>html</item>
<item>c++</item>
</string-array>
</resources>
21、git rm -rf –cached 删除缓存目录,解决gitignore无效的问题。 先创建touch .gitignore commit提交.gitignore, utf8 无bom添加目录到gitignore
22、GsonFormat
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
23、若AndroidStudio上的logcat时间不对,其实这是你虚拟机上的时间,去改虚拟机上的就行了
24、
//规范点击事件
one = (Spinner) findViewById(R.id.one);
two = (Spinner) findViewById(R.id.two);
one.setOnItemSelectedListener(this);
two.setOnItemSelectedListener(this);
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (parent.getId()){
case R.id.spin_one:
Toast.makeText(mContext,"您的是:" + parent.getItemAtPosition(position).toString(),
Toast.LENGTH_SHORT).show();
break;
case R.id.spin_two:
TextView txt_name = (TextView) view.findViewById(R.id.txt_name);
Toast.makeText(mContext,"您选择的是:" + txt_name.getText().toString(),
Toast.LENGTH_SHORT).show();
break;
}
}
25、SYN(synchronous):TCP/IP建立连接时使用的握手信号 同步
ACK(Acknowledgement):确认字符,确认发来的数据已经接受无误 确认
26、Http的几种请求方式
实际开发中我们用得较多的方式是Get和Post,但是实际开发可能还会用到其他请求方式,比如PUT,
Get:请求获取Request-URI所标识的资源
POST:在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应信息报头
PUT:请求服务器存储一个资源,并用Request-URI作为其标识
DELETE:请求服务器删除Request-URI所标识的资源
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT:保留将来使用
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项
27、当我们打开浏览器,在地址栏中输入URL,然后我们就看到了网页。 原理是怎样的呢?
实际上我们输入URL后,我们的浏览器给Web服务器发送了一个Request, Web服务器接到Request后进行处理,生成相应的Response,然后发送给浏览器, 浏览器解析Response中的HTML,这样我们就看到了网页
28、程序员的一生时间90%是用在编程上,而剩余的10%是活在世界上。
29、Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally。JB的在线帮助中对这几个关键字是这样解释的:
Throws: Lists the exceptions a method could throw.
Throw: Transfers control of the method to the exception handler.
Try: Opening exception-handling statement.
Catch: Captures the exception.
Finally: Runs its code before terminating the program.
30、注意 page,x,y都要是double类型
page=Math.ceil(x/y); 向上取商,如101/10=11
page=Math.floor(x/y);向下取商,如101/10=10
31、txtShow.setBackground(”#000”);
32、public class MyView extends Activity {
String url;
ImageView imageView; //这里先声明,而不要赋值,否则会奔溃
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imageView=(ImageView)findViewById(R.id.imageView); //这里再赋值啊
url=”http://img1.3lian.com/img2011/w1/106/85/42.jpg”;
Picasso.with(MainActivity.this).load(url).into(imageView);
}
}
33、
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
TextView typetext = (TextView)arg1.findViewById(R.id.logitem_opentype);
取出listView对应位置arg1的 相应id的值
34、int 转化成String:
int i=10;
String str=Integer.toString(i);
double 转化成String:
double d=10.0;
String str=Double.toString(d);
String 转化成double:
String str=”123456”;
double d=Double.valueOf(str).doubleValue();
35、onTouchEvent case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_MOVE:
36、
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
//do something...
return true;
}
return super.onKeyDown(keyCode, event);
}
37、Tomcat和JBoss有什么区别?Spring、Struct、Hibernate
38、dreamweaver ,fireworks
39、请注意,JavaScript严格区分大小写,如果弄错了大小写,程序将报错或者运行不正常。
40、AJAX不是JavaScript的规范,它只是一个哥们“发明”的缩写:Asynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求。
41、SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
42、ie 主页被劫持,先在浏览器改一下看行不行。 若还不行,则需右键快捷方式属性,删除后面的删除就可以了hao.qquu8.com 然后把它生成的快捷图标删除就可以了。
可能还要删除原来的快捷方式,重建一个
43、java 大小写字符串转换
例:
String str = “aaaaaBBcccc”;
String Upstr = str.toUpperCase();
String Lowstr = str.toLowerCase();
Upstr 的值是 “AAAAABBCCCC”
Lowstr 的值是 “aaaaabbcccc”
44、『我从不畏惧一个知道一万种踢法的人,但是我害怕一个把一种踢法练习过一万次的对手。』
45、对于无法删除的文件,如Ubuntu残留在win10的文件,可右键选择火绒-解除占用,再粉碎操作