开发Android也有10个月了,可是对好多问题都是一知半解,知其然不知其所以然,每次遇到问题都是网上找答案,解决了下次碰到还是不会。所以开个贴用于记录平常遇到的一些小细节,小问题,也希望能将每个遇到的小问题了解清楚,写上去也方便以后查看和阅读。
1、隐藏滚动条
1)、XML中
android:scrollbars="none";
2)、代码中
setVerticalScrollBarEnabled(false); //禁用垂直滚动
setHorizontalScrollBarEnabled(false); //禁用水平滚动
2、Activity弹出Dialog时背景不变暗
1)、XML上
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Dialog_style" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
代码上
AlertDialog dialog = new AlertDialog.Builder(context,R.style.Dialog_style).create();
dialog.show();
dialog.setContentView(R.layout.custom_round_progress);
亲测有效
2)、xml上
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Dialog_style" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
</resources>
代码上
mDialog = new AlertDialog.Builder(mContext,R.style.Dialog_style).create();
Window window = mDialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.dimAmount = 0f;
window.setAttributes(lp);
mDialog.show();
// 注意此处要放在show之后 否则会报异常
mDialog.setContentView(layout);
亲测无效,原因暂时不知。
3、java 获取当前时间毫秒数
1)、
Date dt= new Date();
Long time= dt.getTime();//这就是距离1970年1月1日0点0分0秒的毫秒数
2)、
System.currentTimeMillis()
4、设置socket基于tcp/ip连接服务器超时时间
在创建socket客户端时,有时因为ip地址不对,会出现很长时间(1分钟左右)才会报异常,让人都不知道是什么情况。所以很不好,那就要自己设置超时时间了。
1)、错误的方式
Socket socket = new Socket(ip,port);
socket.setSoTimeout(5000);
这个下一句是不会起作用的,因为new Socket(ip,Port);是阻塞的,只有连接成功之后才会执行下一句,所以这样不行。
2)、正确的方式
Socket socket = new Socket();
SocketAddress sAddress = new InetSocketAddress(ip,port);
socket.connect(sAddress,5000);//5s超时
这样就OK啦。
5、Android通过SimpleDataFormat获取时间的24小时制和12小时制
之前在获取时间上完全对这个没注意,都是随意的写里面的字符串格式,
"yyyy-MM-dd HH:mm:ss"//对大小写区别不了解,认为随意的,不想今天下午获取的时间变成12小时制了,才知道大小写是有区别的
主要是小时字母的区别,HH--24小时制,hh--12小时制。
6、点击编辑框外的地方,输入框自动关闭
1)、首先在最外层布局添加点击事件,在点击事件中关闭输入框
linearLayout = (LinearLayout)findViewById(R.id.myLayout);
linearLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
InputMethodManager im = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
});
7、退出程序前一定要关闭所有线程,不然在短时间内重新启动程序可能会导致程序内数据的混乱,导致某些界面不能更新,明明执行了textview.settext却没反应。