在我们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);
网友评论