Android 中一些常用而又容易忘记的
来源:互联网 发布:单片机压力传感器调试 编辑:程序博客网 时间:2024/05/21 23:55
有时候,需要一些小的功能上网找到之后会用word保存起来,但是word打开的时候死慢,而且明显不直观,然后我在想,我的的知识都是网上获取的,我应该也有责任分享知识,这样大家都能获得最有用最直接的知识,提高成本,也希望大家都在网上分享成果。
所以就整理一下,方便自己和他人,欢迎指出错误和多种解决方法,我会及时改正。
1.解决listview上 Item上有按钮时 item本身不能点击的问题
- 1.Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性
- beforeDescendants:viewgroup会优先其子类控件而获取到焦点
- afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
- blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
- 如果不行的话再继续往下加
- 2在listview里 添加代码 android:focusable="true"//是否获取焦点
- // 获取listitem下面的view的值,item与button都能响应不同的事件,无冲突
- public View getView(int position, View convertView, ViewGroup parent) {
- if (convertView == null) {
- convertView = m_Inflater.inflate(resource, null);
- convertView.setClickable(true);
- convertView.setOnClickListener(new listener(position));
- }
- if (resource == R.layout.index_listview_copy) {
- indexShareLinerlayout = (LinearLayout) convertView
- .findViewById(R.id.index_share_linerlayout);
- indexShareLinerlayout.setOnClickListener(new listener(position));
- }
- return super.getView(position, convertView, parent);
- }
- class listener implements OnClickListener {
- private int position;
- public listener(int position) {
- this.position = position;
- }
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.index_share_linerlayout:
- Dialog dialog = new MyDialog(context, R.style.MyDialog);
- dialog.show();
- break;
- default:
- Intent intentcomment = new Intent();
- intentcomment.setClass(context, CommentActivity.class);
- context.startActivity(intentcomment);
- break;
- }
- }
- }
2.获取屏幕宽高
- DisplayMetrics displayMetrics = new DisplayMetrics();
- this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
- int height = displayMetrics.heightPixels;
- int width = displayMetrics.widthPixels;
3.LayoutInflater和inflate()方法的用法
- LayoutInflater作用是将layout的xml布局文件实例化为View类对象。
- 实现LayoutInflater的实例化共有3种方法,
- (1).通过SystemService获得
- LayoutInflaterinflater = (LayoutInflater)
- context.getSystemServices(Context.LAYOUT_INFLATER_SERVICES);
- Viewview = inflater.inflate(R.layout.main, null);
- (2).从给定的context中获得
- LayoutInflater inflater = LayoutInflater.from(context);
- Viewview = inflater.inflate(R.layout.mian, null);</font></font>
- (3).LayoutInflaterinflater =getLayoutInflater();(在Activity中可以使用,实际上是View子类下window的一个函数)
- Viewlayout = inflater.inflate(R.layout.main, null);
4.有时候按钮文字在代码中设置setTextColor无效
- ColorStateList colors = getContext().getResources().getColorStateList(R.color.radio_txt);
- radioButton.setTextColor(colors);
5.输入法挤乱布局问题
- 如果不想布局动 在这个activity中的AndroidManifest.xml中加入代码
- android:windowSoftInputMode="adjustPan"
- 如果想让布局动 则加入代码
- Android:windowSoftInputMode="stateVisible|adjustPan"
- 还有一种方法
- 在对应的layout XML的顶级元素上加一层ScrollView
- <ScrollView xmlns:Android="http://schemas.android.com/apk/res/android "
- Android:layout_width="fill_parent"
- Android:layout_height="fill_parent">
- </ScrollView>
- 如果输入法和输入框有点间距的话,就可以用Android:windowSoftInputMode="adjustReszie"
- 如果要使adjustResize起效的话,必须要考虑好布局,
- 布局必须要让最底下的widget或者layout的位置为android:layout_alignParentBottom="true"才能使之生效
6.Android让页面默认弹出输入法和不弹出输入法的问题
- <pre name="code" class="java">看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的时候默认弹出输入法,可以这样设置这个属相:
- android:windowSoftInputMode=stateVisible,这样就会默认弹起输入法,当然还有别的办法。
- <activity android:name=".ui.login"
- android:configChanges="orientation|keyboardHidden|locale"
- android:screenOrientation="portrait"
- android:windowSoftInputMode="stateVisible|adjustPan" >
- </activity>
- Android EditText 不弹出输入法总结
- 方法一:
- 在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden
- 方法二:
- 让EditText失去焦点,使用EditText的clearFocus方法
- 例如:EditText edit=(EditText)findViewById(R.id.edit);
- edit.clearFocus();
- 方法三:
- 强制隐藏Android输入法窗口
- 例如:EditText edit=(EditText)findViewById(R.id.edit);
- InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(edit.getWindowToken(),0);
- EditText始终不弹出软件键盘
- 例:EditText edit=(EditText)findViewById(R.id.edit);
- edit.setInputType(InputType.TYPE_NULL);
- private final static long minute = 60 * 1000;// 1分钟
- private final static long hour = 60 * minute;// 1小时
- private final static long day = 24 * hour;// 1天
- private final static long month = 31 * day;// 月
- private final static long year = 12 * month;// 年
- /**
- * 返回文字描述的日期
- *
- * @param date
- * @return
- */
- public static String getTimeFormatText(Date date) {
- if (date == null) {
- return null;
- }
- long diff = new Date().getTime() - date.getTime();
- long r = 0;
- if (diff > year) {
- r = (diff / year);
- return r + "年前";
- }
- if (diff > month) {
- r = (diff / month);
- return r + "个月前";
- }
- if (diff > day) {
- r = (diff / day);
- return r + "天前";
- }
- if (diff > hour) {
- r = (diff / hour);
- return r + "个小时前";
- }
- if (diff > minute) {
- r = (diff / minute);
- return r + "分钟前";
- }
- return "刚刚";
- }
- // 如果要奖Sring转为date型需要用的到方法
- //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- //Date date = sdf.parse("2008-08-08 12:10:12");
- /**
- * 图片转成string
- *
- * @param bitmap
- * @return
- */
- public static String convertIconToString(Bitmap bitmap) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();// outputstream
- bitmap.compress(CompressFormat.PNG, 100, baos);
- byte[] appicon = baos.toByteArray();// 转为byte数组
- return Base64.encodeToString(appicon, Base64.DEFAULT);
- }
- /**
- * string转成bitmap
- *
- * @param st
- */
- public static Bitmap convertStringToIcon(String st) {
- // OutputStream out;
- Bitmap bitmap = null;
- try {
- byte[] bitmapArray;
- bitmapArray = Base64.decode(st, Base64.DEFAULT);
- bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0,
- bitmapArray.length);
- return bitmap;
- } catch (Exception e) {
- return null;
- }
- }
- /**
- * 根据头像的url 获取bitmap
- */
- public Bitmap getImgBitmap(String imageUri) {
- // 显示网络上的图片
- Bitmap bitmap = null;
- HttpURLConnection conn = null;
- InputStream is = null;
- try {
- URL myFileUrl = new URL(imageUri);
- conn = (HttpURLConnection) myFileUrl.openConnection();
- conn.setDoInput(true);
- conn.connect();
- is = conn.getInputStream();
- bitmap = BitmapFactory.decodeStream(is);
- is.close();
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- } finally {
- try {
- conn.disconnect();
- is.close();
- is.reset();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return bitmap;
9.md5 加密
- /* md5 加密 */
- static public String md5(String str) {
- MessageDigest algorithm = null;
- try {
- algorithm = MessageDigest.getInstance("MD5");
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- }
- if (algorithm != null) {
- algorithm.reset();
- algorithm.update(str.getBytes());
- byte[] bytes = algorithm.digest();
- StringBuilder hexString = new StringBuilder();
- for (byte b : bytes) {
- hexString.append(Integer.toHexString(0xFF & b));
- }
- return hexString.toString();
- }
- return "";
- }
- public static int px2dip(Context context, float pxValue) {
- final float scale = context.getResources().getDisplayMetrics().density;
- return (int) (pxValue / scale + 0.5f);
- }
- public static int dip2px(Context context, float dipValue) {
- final float scale = context.getResources().getDisplayMetrics().density;
- return (int) (dipValue * scale + 0.5f);
- }
- /* 首字母大写 */
- static public String ucfirst(String str) {
- if (str != null && str != "") {
- str = str.substring(0, 1).toUpperCase() + str.substring(1);
- }
- return str;
- }
0 0
- Android 中一些常用而又容易忘记的
- 编写html常用而又容易忘记的语句
- 一些容易忘记的
- 一些常用又容易忘记的数据库总结
- [杂记]Android开发一些容易忘记的API
- OC中一些容易混淆和忘记的知识点总结
- PHP中最容易忘记的一些知识点总结
- Python学习中一些容易忘记的小技巧
- 黑马程序员——DOM编程中一些容易忘记的常用属性跟方法的应用。
- 一些自己工作中常用但容易混淆或忘记的HTML标签属性用法,在此做个小总结
- sql 语句 容易忘记的一些东西
- 一些简单容易忘记的内容
- Powerdesigner的容易忘记的常用配置
- 常用的也是最容易忘记的
- js常用容易忘记的节点操作
- 细说C++中那些容易忽略而又非常重要的知识点
- Java 中要注意的一些,也是我们容易忘记的!
- VI中容易忘记的命令【zt】
- ABAP常用事物码
- pl/sql developer 连接oracle 11g数据库错误代码ora12557解决办法
- 读取socket传过来的信息
- AVL树的插入与删除---Java实现
- Java 自动装箱与拆箱详解
- Android 中一些常用而又容易忘记的
- Android 开发相关的Blog推荐——跟随大神的脚步才能成长为大神
- ImageView设置图片的优化
- 通过 FileResult 向 浏览器 发送文件
- 跟我学数据结构之基本概念
- putchar和printf的区别,以及数组和指针的关系理解
- 解决LINUX系统下打开文本文档汉字乱码问题
- [NLP]自然语言理解概述
- CentOS7 LNMP状态管理命令