Android开发笔记(不断更新中)

在我们Android开发过程中,有一些经常用到的小问题,但是有时候要用到的时候却忘了应该怎么解决,这个时候就少不了要去百度/Google了,所有有时候我们需要做一个总结/备忘录,当需要用到的时候到这边进行查找翻阅,搜索相关关键字很容易找到需要用到的,这样可以很好的提高开发效率。本篇博文是我在平时开发过程中收集到的遇到的小问题的解决方法:

1. 去空格方法。

    .trim();

2. 解决输入文字的时候,底下布局往上跳,布局变掉。

android:windowSoftInputMode="adjustNothing"
Android开发笔记(不断更新中)_第1张图片

3. TextView如何让文字垂直显示
layout_width设置为wrap_content,然后设置ems属性为1这个属性则代表一行能显示几个字符

4. double取两位小数
Long是长整型,怎么有小数,是double吧

    java.text.DecimalFormat df = new java.text.DecimalFormat("#.##");   
    double d=3.14159;   
    System.out.println(df.format(d));

5.字符串数组(String []) 去掉重复值的方法

import java.util.ArrayList;
public class Try {
/** 
* @去掉重复值
*/ 
    public static void main(String[] args) { 
    String test="100,120,166,1555,120,150,100"; 
         String[] test1=test.split(","); 
         ArrayList list=new ArrayList(); 
        for(int i=0;i

这个方法是很好,但是还有更加简单的

String[] s = request.getParameterValues("noattRid");
List list = Arrays.asList(s);
Set set = new HashSet(list);
String [] rid=(String [])set.toArray(new String[0]);

6.svn 版本管理时,本地显示问号怎么办

Android开发笔记(不断更新中)_第2张图片

7. 简单分享——第三方打开
Demo:
Support v4 Demos/App/ShareCompat Demo

8.问题:当json文件出现有createtime时间时,使用封装的GsonUtils解析会报错
Caused by: java.text.ParseException: Unparseable date: "2016-06-27 15:21:04" (at offset 10)

Android开发笔记(不断更新中)_第3张图片
Android开发笔记(不断更新中)_第4张图片

解决:

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create(); 
GetLastApk getLastApk = gson.fromJson(arg0, GetLastApk.class);

9.签名
如何通过Eclipse导出Android应用程序并对其签名
Alias:密钥别名
Password:上一步输入的密码
Confirm:确认密码
Validity(years):密钥有效期,至少为25
First and Last Name:名字
Organizational Unit:组织单位
Organizational:组织
City of Locality:城市
State or Province:州或省
Country Code(XX):国家编码

10. ScrollView起始位置不是最顶部的解决办法
最近遇到了打开带有ScrollView的页面布局默认起始位置不是最顶部的情况,最后发现问题是因为ScrollView内部嵌套了gridview,只需要设置gridview获取焦点为false即可。

gridview.setFocusable(false);

如果内部嵌套的是listview,也是同样的处理方法。
PS:网上还查到说可以设置myScrollView.smoothScrollTo(0,20);
11.获得当前时间

String selectedHour = DateUtils.fillZero(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));
 String selectedMinute = DateUtils.fillZero(Calendar.getInstance().get(Calendar.MINUTE));

12.锁定竖屏:

android:screenOrientation="portrait" 

13.andorid dialog弹出框 点击周围空白处弹出层不自动消失

 public static Dialog creatDialog(final Context context, String tip){
  Dialog dialog = new Dialog(context, R.style.appDialog); 
  dialog.setContentView(R.layout.common_wdailog); 
  dialog.setCanceledOnTouchOutside(false);// 设置点击屏幕Dialog不消失
  Window window = dialog.getWindow();
  WindowManager.LayoutParams lp = window.getAttributes(); 
  int width = UiHelper.getScreenWidth(context); 
  lp.width = (int)(0.6 * width); 
  TextView titleTxtv = (TextView) dialog.findViewById(R.id.common_wdialog_message);
  if (tip == null || tip.length() == 0){//使用默认
   titleTxtv.setText("请稍等..."); 
  }else{
   titleTxtv.setText(tip); 
  }
  return dialog;
 }

14.对中文进行UTF-8编码

try {
        String msg = URLEncoder.encode(msg, "utf-8"); //先对中文进行UTF-8编码
        String projectid = URLEncoder.encode(projectid, "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
     }

15. 判断当前网络

// 判断当前网络类型是否是移动网
boolean isMobile= ConnectionUtils.isWIFI(context);
// 判断当前网络类型是否是WIFI
boolean isWIFI = ConnectionUtils.isWIFI(context);
// genymotion模拟器联网状态默认是wifi,为了测试,将变量改为false,模拟手机网络
//boolean isWIFI = false;
// 判断当前是否联网
boolean isConnected = ConnectionUtils.isConnected(context);

16.android获得屏幕高度和宽度
android获取屏幕的高度和宽度用到WindowManager这个类,两种方法:

1、WindowManager wm = (WindowManager) getContext()
                    .getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
2、WindowManager wm =this.getWindowManager();
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();

17.怎样把光标放在EditText中文本的末尾处?

EditText et = (EditText)findViewById(R.id.inbox); et.setSelection(et.getText().length());

18.android直接返回Home界面简便方式
一般的方式是这样

Intent home = new Intent(Intent.ACTION_MAIN);
home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
home.addCategory(Intent.CATEGORY_HOME);
startActivity(home);

但是你 会感觉没有达到你想要的效果。这里就有个简单方式给大家了。
其实 只要重载Activity的onResume()就ok了!!!

@Override
protectedvoid onResume() {
super.onResume();
if(mExiting){
finish();
}}

19.使界面充满整个屏幕

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

20. Android中textView自动识别电话号码,电子邮件,网址(自动加连接)
核心的就是在TextView中添加一个属性就行了,添加android:autoLink="email|phone|web" 这样我们的程序中就会主动的识别我们的email地址,我们的电话号码,以及我们的web页面。
修改其字体颜色:
android:textColorLink="#fff"
21.使用RadioGroup(里面包含RadioButton)时,要给
RadioGroup和RadioButton ID,不然单选功能会失效!

Android开发笔记(不断更新中)_第5张图片

22.利用Calendar获取系统时间

            // 取得系统日期:
            Calendar c = Calendar.getInstance();
            int year = c.get(Calendar.YEAR);
            int month = c.get(Calendar.MONTH);
            int day = c.get(Calendar.DAY_OF_MONTH);
            int hour = c.get(Calendar.HOUR_OF_DAY);
            int minute = c.get(Calendar.MINUTE);
            int second = c.get(Calendar.SECOND);
            Calendar calendar=Calendar.getInstance();
//获取当前时间,作为图标的名字
            String year = calendar.get(Calendar.YEAR)+""; 
            String month = calendar.get(Calendar.MONTH)+1+""; 
            String day = calendar.get(Calendar.DAY_OF_MONTH)+"";
            String hour = calendar.get(Calendar.HOUR_OF_DAY)+"";
            String minute =calendar.get(Calendar.MINUTE)+"";
            String second =calendar.get(Calendar.SECOND)+"";
            String time =year+month+day+hour+minute+second;
    /**
     * 获取时间,日期
     */
    private void getDateTime() {
        Date d = new Date();
        SimpleDateFormat datetime = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat hour = new SimpleDateFormat("HH:mm");
        dateTime = datetime.format(d);
        String time = hour.format(d);
        data_time.setText(dateTime);
        mStartTime.setText(time);
        mEndTime.setText(time);
    }
SimpleDateFormat datetime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c = Calendar.getInstance();
Date d = new Date();
String startDate = datetime.format(d);

23.ListView 的 item中包含Button后,item的点击事件和button冲突的处理。
解决办法: 在包含button的Listview的Item Layout中加入属性 android:descendantFocusability= "blocksDescendants" 即可

24.将对象转化成String类型

 Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss") .create();
 String jsonUser = gson.toJson(user);

25.判断Integer值相等最好不用==
今天在开发中判断两个Integer值相等,

Integer a = 3;
Duixiang duixiang = new Duixiang();
duixiang = DAO.getDuixiang();
Integer b = duixiang.getB();
System.out.print(a == b);
System.out.print(a.equals(b));

发现a==b时,为false,a.equals(b)为true。
后来发现因为我b的值是从数据中拿出的一个对象的值。a和b的id不相同,所以导致了a==b为false。
得出的结论,Integer为对象,如果判断相等要用equals,而不能用==。
如果是判断两个int值相等,则可以用==;

26.替换片段(也可用于添加片段)

    /**
     * 此列表项单击“侦听器”实现了非常简单的视图切换
     *更改主要内容文本。当一个选择时,抽屉关闭
     *是由。
     */
    private void replaceFragment(Fragment mFragment)
    {
        if (mFragment == null)
        {
            return;
        }
        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.container, mFragment);
        ft.commit();
      }

27.如何获取项目名称

PackageManager pm = this.getPackageManager();
String appName = getApplicationInfo().loadLabel(pm).toString();

28.对象转JSON

String devInfoStr = AppUtil.ObjectToString(mDevInfo);
Log.e("devInfoStr", devInfoStr);

你可能感兴趣的:(Android开发笔记(不断更新中))