您的位置:首页 > 移动开发 > Android开发

Android 中一些常用而又容易忘记的

2015-07-16 15:57 435 查看
有时候,需要一些小的功能上网找到之后会用word保存起来,但是word打开的时候死慢,而且明显不直观,然后我在想,我的的知识都是网上获取的,我应该也有责任分享知识,这样大家都能获得最有用最直接的知识,提高成本,也希望大家都在网上分享成果。

所以就整理一下,方便自己和他人,欢迎指出错误和多种解决方法,我会及时改正。

1.解决listview上 Item上有按钮时 item本身不能点击的问题

[java] view
plaincopy

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.获取屏幕宽高

[java] view
plaincopy

DisplayMetrics displayMetrics = new DisplayMetrics();

this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

int height = displayMetrics.heightPixels;

int width = displayMetrics.widthPixels;

3.LayoutInflater和inflate()方法的用法

[java] view
plaincopy

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无效

[html] view
plaincopy

ColorStateList colors = getContext().getResources().getColorStateList(R.color.radio_txt);

radioButton.setTextColor(colors);

5.输入法挤乱布局问题

[java] view
plaincopy

如果不想布局动 在这个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让页面默认弹出输入法和不弹出输入法的问题

[html] view
plaincopy

<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);


7.获取时间差几小时几分钟前

[java] view
plaincopy

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");

8.bitmap与String的转化,以及url转化成bitmap

[java] view
plaincopy

/**

* 图片转成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 加密

[java] view
plaincopy

/* 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 "";

}

10.dip与px的转化,以及首字母大写

[java] view
plaincopy

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);

}

[java] view
plaincopy

/* 首字母大写 */

static public String ucfirst(String str) {

if (str != null && str != "") {

str = str.substring(0, 1).toUpperCase() + str.substring(1);

}

return str;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: