代码积累
编程习惯
- 项目中完成一个模块后自己要点一下,走完一个流程
- 有改变的地方一定要和上级以及同组沟通
- 需要新的类时,要继承基类,实现自己的方法.
- 在实现一个功能或者效果前,要沟通,确定效果后,在开始,避免一次次的修改返工
- 新增的内容写备注,修改的bug也要备注自己的修改方法以及思路
- 再提交前.一定要自己运行一下 不要提交有问题的版本
1. 设置margin
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(10, 20, 30, 40);
imageView.setLayoutParams(lp);
2. shap使用
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/exam_button_color"></solid>
<stroke android:color="@color/exam_button_color"></stroke>
<corners android:radius="5dp"></corners>
</shape>
//--------------------------华丽丽的分隔线--------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle" | "oval" | "line" | "ring"] > --- 默认为rectangle
<corners -- shape=“rectangle”时使用,
android:radius="integer" -- 半径,会被下边的属性覆盖,默认为1dp,
android:topLeftRadius="integer"
android:topRightRadius="integer"
android:bottomLeftRadius="integer"
android:bottomRightRadius="integer" />
<gradient -- 渐变
android:angle="integer"
android:centerX="integer"
android:centerY="integer"
android:centerColor="integer"
android:endColor="color"
android:gradientRadius="integer"
android:startColor="color"
android:type=["linear" | "radial" | "sweep"]
android:useLevel=["true" | "false"] />
<padding
android:left="integer"
android:top="integer"
android:right="integer"
android:bottom="integer" />
<size-- 指定大小,一般用在imageview配合scaleType属性使用。大小一般会适配滴
android:width="integer"
android:height="integer" />
<solid-- 填充颜色,可是是十六进制颜色。(比如想设置半透明效果,直接使用十六就只就OK)
android:color="color" />
<stroke-- 指定边框,border,dashWidth和dashGap有一个为0dp则为
android:width="integer"
android:color="color"
android:dashWidth="integer"-- 虚线宽度
android:dashGap="integer" />-- 虚线间隔宽度
</shape>
左边圆角,右面直角的效果
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle"> <solid android:color="#FF0000" /> <corners android:radius="30dp"/> </shape> </item> <item android:left="30dp" > <shape android:shape="rectangle"> <solid android:color="#FF0000" /> </shape> </item> </layer-list>
3. selector使用
`<?xml version="1.0" encoding="utf-8" ?>
//默认时的背景图片–>
// 没有焦点时的背景图片 –>
android studio 使用
sp,dp 和 px
- apk的资源包中,当屏幕density=240时使用hdpi标签的资源
- 当屏幕density=160时,使用mdpi标签的资源
- 当屏幕density=120时,使用ldpi标签的资源。
- 在每英寸160点的显示器上,1dp = 1px。
下面是几种不同单位的相互转换.
public static int dip2px(Context context, float dipValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(dipValue * scale + 0.5f);
}
public static int px2dip(Context context, float pxValue){
final float scale = context.getResource().getDisplayMetrics().density;
return (int)(pxValue / scale + 0.5f);
}
下面说下如何获取分辨率:
在一个Activity的onCreate方法中,写入如下代码:
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
JSON
- [] jsonArray
- {}jsonObject
- json的解析
- JSONTokener
- JsonReader
JsonReader reader = new JsonReader(new StringReader(jsonData));
时间显示控件
- android:datePickerMode=”spinner”//可显示数字界面
- 在activity里添加theme android:theme=”@style/horizontal_slide”//显示可滑动的 日期选择
Android Studio 误删除了项目文件.iml
- Android Studio 误删除了项目文件.iml 导致项目中看不到项目的src 和其他drawable文件
- 解决方法如下
Build -> Ant Build -> OK 即可生成2个文件,.properties .xml 然后运行项目即可自动还原原来的文件
startActivityForResult();
- onActivityResult(); 这个回调方法,能接收从这个页面启动页面的返回值(setResult()),如果,他启动的界面被关掉,后重启,再返回的话就不能接收到返回的Intent了
EidtText 属性
- android:digits=”1234567890.+-/% ()”设置允许输入哪些字符。如“1234567890.+-/% ()”
隐藏软键盘
void hideSoftKeyboard() {
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (ChooseSysUserActivity.this.getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) {
if (ChooseSysUserActivity.this.getCurrentFocus() != null)
inputMethodManager.hideSoftInputFromWindow(ChooseSysUserActivity.this.getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
SVN中的branches tag 以及trunk
- trunk 主干,一般来说就是开发的主要呆的地方
- tag 在经过了一段时间的开发后,项目到达了一个里程碑阶段,你可能想记录这一阶段的代码的状态,那么你就需要给代码打上标签。
- branches 当多个人合作,可能有这样的情况出现:John突然有个想法,跟原先的设计不太一致,可能是功能的添加或者日志格式的改进等等,总而言之,这个想法可能需要花一段时间来完成,而这个过程中,John的一些操作可能会影响Sally的工作,John从现有的状态单独出一个project的话,又不能及时得到Sally对已有代码做的修正,而且独立出来的话,John的尝试成功时,跟原来的合并也存在困难。这时最好的实践方法是使用branches。John建立一个自己的branch,然后在里面实验,必要的时候从Sally的trunk里取得更新,或者将自己的阶段成果汇集到trunk中。
合并代码
- 与某一个版本里面的代码比较不同,将代码合并在一起