Android 开发过程中小知识点汇总
来源:互联网 发布:51单片机毕业设计题库 编辑:程序博客网 时间:2024/05/29 18:12
本文出自:http://blog.csdn.net/dt235201314/article/details/72630103 (持续更新)
一丶慨述
很容易发现开发中有时候会百度,谷歌,有时候相同的小知识点搜了几遍,本文用于记录开发中的小知识点
二丶正文
1.限制EditText显示输入字符串位数
edt_reportSalesAmount.addTextChangedListener(new TextWatcher() { private CharSequence temp; private int selectionStart; private int selectionEnd; @Override public void onTextChanged(CharSequence s, int start, int before, int count) { temp = s; } public void beforeTextChanged(CharSequence s, int start, int count,int after) { } public void afterTextChanged(Editable s) { selectionStart = edt_reportSalesAmount.getSelectionStart(); selectionEnd = edt_reportSalesAmount.getSelectionEnd(); if (temp.length() > 10) { Toast.makeText(getActivity(), getString(R.string.ediTextToast), Toast.LENGTH_SHORT).show(); s.delete(selectionStart - 1, selectionEnd); int tempSelection = selectionEnd; edt_reportSalesAmount.setText(s); edt_reportSalesAmount.setSelection(tempSelection); } }});
2.viewPage + fragment 点击fragment1里按钮,延迟添砖到fragment
Activity做延迟跳转方法
public void toHistoryReportDataFragment(){ new Handler().postDelayed(new Runnable() { @Override public void run() { mViewPager.setCurrentItem(1); } }, 1000);}
在fragment1的P层,检测到数据上报成功,在P层调用Activity的方法
final ReportNumberActivity mainActivity = (ReportNumberActivity) reportDataFragment.getActivity();mainActivity.toHistoryReportDataFragment();
3.@SuppressLint("NewApi")作用是屏蔽android lint错误
在Android代码中,我们有时会使用比我们在AndroidManifest中设置的android:minSdkVersion版本更高的方法,此时编译器会提示警告.
解决方法是在方法上加上@SuppressLint("NewApi")
作用仅仅是屏蔽android lint错误,所以在方法中还要判断版本做不同的操作.
4.
tools:showIn="@layout/home_kpi_item"
在xml里看到这句话,表示在那些xml里用了include,一起显示出来
5..xml(v21)
今天改了个bug,把属性写在了.xml(v21)里,导致有的手机闪退或者显示不出来(系统版本低于21的)
v21或 v23表示的意思就是适用于最低版本的意思
6.返回空list
需要返回空对象时,尽可能使用Collections.emptyList()
7.默认EditTextView不自动获取焦点的方法
方法一:
在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden
例如:
<activity android:windowSoftInputMode="adjustUnspecified|stateHidden" android:name=".ui.sales.ReportNumberActivity" />
方法二:
让EditText失去焦点,使用EditText的clearFocus方法
例如:
EditText edit=(EditText)findViewById(R.id.edit);
edit.clearFocus();
方法三:
强制隐藏Android输入法窗口
例如:
EditText edit=(EditText)findViewById(R.id.edit);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(),0);
2.EditText始终不弹出软件键盘
例:
EditText edit=(EditText)findViewById(R.id.edit);
edit.setInputType(InputType.TYPE_NULL);
方法四:焦点拦截法(自己所得)
在layout的xml文件中设置EditText的上级控件android:focusable="true"
android:focusableInTouchMode="true";
同时edittext控件android:focusable="true"
即可将焦点拦截,让EditText不自动获取焦点。
8.static的内存泄露问题
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它所属类的任何对象创建之前访问,无需引用任何对象。
Activity内静态常量属性耗内存,方法会引起重开,关于常用到的sartActivity,解决方式加了flag或者设置langchMode不重开也行
Android内存优化之——static使用篇
9.final
final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
10.viewstub
在介绍ViewStub之前,可以先了解一下<include/>标签,这是一个把其它布局资源包含进某个特定的布局中,在很多平台的开发中,都有类似的概念,这样好处就不用细说了,主要是可以在不同的文件中编辑界面的布局控件。
ViewStub,惰性装载控件。ViewStub是一个无形的、零大小的视图,可以在程序运行的过程中,通过懒加载的模式inflate进布局资源中。当一个ViewStub的inflate()方法被调用或者被设为显示时,这个ViewStub使用设定的View才会被加载,并替换当前ViewStub的位置。因此,ViewStub存在于视图层次,直到setVisibility(int)或inflate()方法被调用,否则是不加载控件的,所以消耗的资源小。通常也叫它为“懒惰的include”。
public class MainActivity extends Activity {17 private Button btn1, btn2,btn3;18 private ViewStub viewStub;19 20 @Override21 protected void onCreate(Bundle savedInstanceState) {22 super.onCreate(savedInstanceState);23 setContentView(R.layout.activity_main);24 //获取控件,绑定事件25 btn1 = (Button) findViewById(R.id.btn1);26 btn2 = (Button) findViewById(R.id.btn2);27 btn3 = (Button) findViewById(R.id.btn3);28 viewStub = (ViewStub) findViewById(R.id.stub);29 viewStub.setOnInflateListener(inflateListener);30 btn1.setOnClickListener(click);31 btn2.setOnClickListener(click);32 btn3.setOnClickListener(click);33 }34 35 private OnInflateListener inflateListener=new OnInflateListener() {36 37 @Override38 public void onInflate(ViewStub stub, View inflated) {39 // inflaye ViewStub的时候显示40 Toast.makeText(MainActivity.this, "ViewStub is loaded!", Toast.LENGTH_SHORT).show();41 }42 };43 44 private View.OnClickListener click = new OnClickListener() {45 @Override46 public void onClick(View v) {47 switch (v.getId()) {48 case R.id.btn1:49 try {50 //如果没有被inflate过,使用inflate膨胀51 LinearLayout layout=(LinearLayout)viewStub.inflate();52 RatingBar bar=(RatingBar)layout.findViewById(R.id.ratingBar1);53 bar.setNumStars(4);54 } catch (Exception e) {55 //如果使用inflate膨胀报错,就说明已经被膨胀过了,使用setVisibility方法显示56 viewStub.setVisibility(View.VISIBLE);57 } 58 break;59 60 case R.id.btn2:61 //隐藏ViewStub62 viewStub.setVisibility(View.GONE);63 break;64 case R.id.btn3:65 //操作被inflate的控件,需要得到当前布局的对象66 //然后通过这个对象去找到被inflate的控件。67 //因为否则在这个示例中,会找到include标签引入的控件68 LinearLayout linearLayout=(LinearLayout)findViewById(R.id.inflatedStart);69 RatingBar rBar=(RatingBar)linearLayout.findViewById(R.id.ratingBar1);70 float numStart=rBar.getRating();71 numStart++;72 if(numStart>4)73 {74 numStart=0;75 }76 rBar.setRating(numStart);77 break;78 }79 80 }81 };
- Android 开发过程中小知识点汇总
- Android开发中小知识点记录
- android开发中小细节汇总
- Android 开发知识点汇总
- Android开发中小问题汇总(持续更新)
- 工作中小知识点汇总(c#)
- 工作中小知识点汇总(sql)
- Android开发中小技巧
- ibatis开发过程中小计
- Android应用开发—知识点汇总
- Android开发中小问题记录
- javaWeb开发过程中小细节总结(1)
- javaWeb开发过程中小细节总结(2)
- 自己工作过程中小知识点记录(仅供参考)
- 自己工作过程中小知识点记录2(仅供参考)
- 关于学习过程中小知识点的总结与归纳
- Android开发过程中的几个小知识点
- android musicPlayer过程中小问题记录
- win32实现画图小程序
- 第一次启动Android studio创建文档时出现错误解决方法
- 算法导论 练习题 15.3-3
- Spring 依赖注入
- Qcon北京2017总结:测试角度看泛智能和大数据
- Android 开发过程中小知识点汇总
- *BST(二叉搜索树)
- pandas字符串函数
- leetcode-63. Unique Paths II
- 关于相对论的一个猜想——二维空间理论
- C中的volatile用法
- 腾讯云 Web 登录 Kubernetes 集群内容器功能实践
- 2017.05.22回顾
- Nonnegative Matrix Factorizations for Clustering(矩阵分解聚类)