美文网首页
Android开发笔记(不断更新中)

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

作者: BBNO | 来源:发表于2017-11-10 15:36 被阅读0次

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

    1. 去空格方法。

        .trim();
    

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

    android:windowSoftInputMode="adjustNothing"
    

    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<test1.length;i++)   
            { 
                 if(!list.contains(test1[i])) 
                 list.add(test1[i]);       
             } 
             System.out.println("hehe"+list.size()+"haha");  
             for(int i=0;i<list.size();i++) 
             System.out.println("hehe"+list.get(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 版本管理时,本地显示问号怎么办


    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)


    解决:
    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,不然单选功能会失效!


    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开发笔记(不断更新中)

          本文链接:https://www.haomeiwen.com/subject/jehbmxtx.html