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

在我们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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容