Android 开发技巧总结

1.项目中设置每个activity的启动模式(如果堆栈中存在此activity就会重用,并提到栈顶,不会创建新的activity) 

android:launchMode="singleTask"

2.如果界面中的布局被弹出的软键盘改变,则在对应的activity中加入如下代码即可。

android:windowSoftInputMode="adjustPan|stateHidden"

3.去掉ScrollView拉倒边缘时的效果:

scrollView.setOverScrollMode(View.OVER_SCROLL_NEVER);

去掉listview和viewpager拉倒边缘时的效果

android:overScrollMode="never"

4.去掉gridview的item点击效果

android:listSelector="@android:color/transparent"

或者在代码中实现:

gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));

5.在ScrollView放入完整显示的listview和gridview,在重写完默认的三个方法以后,再重写onMeasure()方法。重写listview和gridview

public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

{

int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);

super.onMeasure(widthMeasureSpec, expandSpec);

}

6.用Afinal向数据库中存取数据时,定义的类如果有id属性不要设置id的值,afinal默认的数据库中有id属性。

7.匹配数据时,认真看好参数,不要浪费不必要的时间。

8. onActivityResult()发生在onResume()之前。

9.获取gridview或listview的item项

因为在适配器中已经配置了如下内容

private List<SortModel> list;ride

public Object getItem(int position) {

return list.get(position);

}

获取每一项时的方法如下:

gridView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

// TODO Auto-generated method stub

SortModel model = (SortModel) arg0.getItemAtPosition(arg2);

}

});

10.如果以某个时间点判断第一次下载并保存到数据库中的某些内容是否需要更新的时候,一定要确保需要数据下载成功以后再将这个时间点进行保存,而且要放到每次启动一定会执行的地方去执行。

12.Alt+Shift+J javadoc的快捷生成方式,但是光标要放在类中。

13.如果布局中很多地方都长一样,可以抽取成一个style
14.如果嵌套太多,导致阅读性降低,可以用include 包含一个布局

  1. <!-- include标签内设置id属性后(android:id),其引用的布局layout内的id属性就不起作用了,怀疑是其引用的layout外层包裹了一层include标签
  2. 或者是覆盖了其内的属性id-->
  3. <!-- 如果没有include标签,所有布局代码都写在一个xml文件中,界面会显得很冗余,可读性很差。而且界面加载的时候是按照顺序加载的,前面的布局不能
  4. 调用其后面的布局id。而采用include后,一个include中可以引用其后的include中的布局id属性 -->
  5. <include android:id="@id/titleLayout" layout="@layout/app_title" />

15.如果在activity中 共性太多,可以抽取出一个父类,一般叫baseActivity
16.如果要做适配,根据当前手机屏幕的大小(高在前,宽在后)创建一个values 文件夹,同时在dimens 文件夹中配置好大小。
17.如果想在按下手机的后退键,无效,可以在继承activity类 中  重写 onKeyDown  然后返回将返回值设置为true。

18.如果一进入activity就弹出键盘的解决方法:

阻止一进入Activity,editText就获得焦点弹出输入法对话框,只需要在AndroidManifest.xml相应的activity标签中加入下面这句话即可实现。

android:windowSoftInputMode="stateHidden|adjustResize"

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);//默认不弹出软键盘

19.关于visibility的设置,invisivible是不可见但占据着位置,gone不仅不可见而且完全消失,不占据位置。

20.在eclipse中导入github的项目,基本就是samples和library。

1)先将samples和library导入到androidSDK的samples的列表下(如android-17中)

2)右键newèothers,然后选择如下

如果放到了android-17中就在对应的地方打钩。

然后找到相应的数据导入即可。

21.设置没有标题栏

requestWindowFeature(Window.FEATURE_NO_TITLE);

22.图标

hdpi 72*72

ldpi 32*32

mdpi 48*48

xhdpi 96*96

xxhdpi 144*144

23.写Edittext的时候,有的手机没有光标的问题的解决,这句话写上就行了。

android:textCursorDrawable="@null"

24. 去掉ImageView的叹号

android:contentDescription="@string/Image"

去掉LinearLayout的异常

android:baselineAligned="false"

25.progressbar可以设置通过返回键消失。

dialog = ProgressDialog.show(context, str1, str2, false, true);

最后一个boolean值设置为true即可。

取消的时候用dialog.cancel();

26.从网络加载数据的时候,显示到页面,一定要等数据加载成功以后再显示相应的控件。

27.如果定义了一个类,以后要用到这个类的属性的时候,即使初始化了没有值的情况下也会报空指针的,用之前一定要保证有值。

People people = new People();

这样写people就不为空。

People peoplea = new People();

peoplea.setName("123"); //如果设置了name属性,则下面不报错,否则会报空指针异常,因为没有给name赋值,peoplea.getName()默认的值为null;

if(peoplea.getName().equals("123")){

Log.e("", "没有报错,类为空!");

}else{

Log.e("", "没有报错,类不为空!"+peoplea.getAge());

}

类用的时候:

People people = null ;

if(people == null){ //people此时为null,null是不能与任何字符串进行equals判断的,否则会报空指针异常。

Log.e("", "没有报错,类为空!");

}

28.百度地图的安全码是eclipse的shal值,获取key值的时候的操作

获取方法:Window èPreferencesèAndroidèBuild

然后在后面+;+包名,即可申请成功。

29.在fragment中用afinal框架的时候,在失败的时候弹出的toast不要用getActivity()有时候会报空指针。

30.程序中只要有需要耗时的操作,就加一个可以取消的dialog。

31.类未赋值的时候就是null,如:private String str;

赋值了就不是null了,private String str = "";

此时就是长度为0的字符串。

Android 开发技巧总结

时间: 2024-10-13 16:27:47

Android 开发技巧总结的相关文章

Android 开发技巧总结(三)

1.在界面中按返回键判断某个控件的可见性,如果可见,则用动画让其消失,应用并不退出. Onkeydown方法中: if(keyCode == 4){ if(slidingMenu.getVisibility() == View.VISIBLE){ //退出的动画 AnimationSet animationSet = new AnimationSet(true); TranslateAnimation animation = new TranslateAnimation(0,-280, 0, 0

50个Android开发技巧(10 为TextView加入样式)

首先来看一个控件的例子: (原文地址:http://blog.csdn.net/vector_yi/article/details/24428085) 手机上类似这种场景你一定已经见过非常多次了,但有没有考虑过它是如何实现的? 或许你会觉得这是一个略微复杂的自己定义的View,但,没错,这实际上仅仅是一个原生的TextView而已. TextView是一个简单而奇妙的Widget,你能够利用它以不同风格不同格式来展现文字. 举两个简单的样例: 1.在TextView中加入一个超链接 事实上非常e

Android开发技巧——自定义控件之自定义属性

Android开发技巧--自定义控件之自定义属性 掌握自定义控件是很重要的,因为通过自定义控件,能够:解决UI问题,优化布局性能,简化布局代码. 上一篇讲了如何通过xml把几个控件组织起来,并继承某个ViewGroup子类,把它们封装起来使用.这是我们接触到的最简单的一种自定制控件了.但许多时候,我们还需要在布局文件中使用它们的时候,能通过属性传入一些值,来影响最终的显示结果. 我们在做项目中经常会遇到的一个情况:一张图片加一个文本的组合.比如充值账户成功之后显示的一个界面,上面是一个表示成功的

50个Android开发技巧(24 处理ListView数据为空的情况)

在移动平台上为用户展示数据的一个经常用法是将数据填充进一个List内,而此时须要注意的一点就是: 原文地址:(http://blog.csdn.net/vector_yi/article/details/24936163) 怎样处理须要填充的数据为空的情况? ListView及其它继承自AdapterView的类都有一个简便的处理这样的情况的方法:setEmptyView(View). 当ListView的Adapter为空或者Adapter的isEmpty()方法返回true的时候,它将会把设

Android开发技巧——大图裁剪

本篇内容是接上篇<Android开发技巧--定制仿微信图片裁剪控件> 的,先简单介绍对上篇所封装的裁剪控件的使用,再详细说明如何使用它进行大图裁剪,包括对旋转图片的裁剪. 裁剪控件的简单使用 XML代码 使用如普通控件一样,首先在布局文件里包含该控件: <com.githang.clipimage.ClipImageView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+i

Android开发技巧之viewstub用法详解及实现延迟加载

这一篇是接着上面的include标签的例子来讲的,地址http://blog.csdn.net/jason0539/article/details/26131831 上一篇的布局中间就用了viewstub这个控件,现在来说一下其作用和用法 " ViewStub 是一个不可见的,大小为0的View,最佳用途就是实现View的延迟加载,避免资源浪费,在需要的时候才加载View " 需要注意的是,加载view之后,viewstub本身就会被新加载进来的view替换掉 上代码了,看完就理解了

Android 开发技巧总结(二)

1.首选项的存取数据 写一个类,里面放入存取方法,然后在外面进行调用 public class PrefsUtils { private static final String PREFS_NAME="com.yomoto.util.OtherPrefs"; //这里放入的名字存入的地址是:data/data/项目包名/shared_prefs/PREFS_NAME //得到首选项中的数据 public static String getValue(Context context,St

Android开发技巧——实现可复用的ActionSheet菜单

在上一篇<Android开发技巧--使用Dialog实现仿QQ的ActionSheet菜单>中,讲了这种菜单的实现过程,接下来将把它改成一个可复用的控件库. 本文原创,转载请注明出处: http://blog.csdn.net/maosidiaoxian/article/details/46324941 对于要实现的可复用的控件库,我需要它具备以下两点: 可添加远程依赖(不考虑Eclipse中的使用) 可灵活配置 分离库的实现代码 对于第一点,需要做的就是在Android Studio中新建一

Android开发技巧之使用weight属性实现控件的按比例分配空间

从今天开始,把看书时候的知识点整理成博客, 这个比较简单,估计有经验的都用过,weight属性 在做Android布局的时候,经常遇到需要几个控件按比例分配空间的情况 比如下图效果 在底部设置两个button,占据底部宽度一部分的同时,保持1:3的比例, 当然了,这么难看的布局用处不大,仅是用来说明weight的用法 布局代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" x