Android进阶之代码应用技巧
16lz
2021-01-23
博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !
1、给文字加下划线
email_name.setText(Html.fromHtml("<u>" + email.title + "</u>"));
2、文字图片一起排,并加以间隔 android:drawableLeft="@drawable/user_id" android:drawablePadding="10dip"
3、获得手机串号
TelephonyManager telephonyManager = (TelephonyManager) MarketApplication.sContext.getSystemService(Context.TELEPHONY_SERVICE); String imei = telephonyManager.getDeviceId();
4、改变tabwidget背景色
tabWidget.getChildAt(i).setBackgroundResource(R.drawable.tab_bar_mask3);
5、去掉tabhost下的白线
tabHost.setPadding(tabHost.getPaddingLeft(), tabHost.getPaddingTop(),tabHost.getPaddingRight(), tabHost.getPaddingBottom() - 10);
6、获得View在控件的上下左右间距
int[] loc = new int[2];// if (fromWindowsLoc) {// anchor.getLocationInWindow(loc);// } else {anchor.getLocationOnScreen(loc);// // }int l = loc[0];//左int t = loc[1];//上// 组件上下:445:474int r = l + anchor.getWidth();// 右int b = t + anchor.getHeight();// 下Rect localRect = new Rect(l, t, r, b);
7、获得sd卡上的图片,并加载
ImageView.setImageUri(Uri.fromFile(new File("/sdcard/cats.jpg")));
8、解析文字
URLDecoder.decode(searchkeyword, "gb2312")
9、Activity里嵌入Activity
ll.removeAllViews();Intent it = new Intent(new Intent(SearchActivity.this,SearchAndroidList.class));it.putExtra(AppData.PAPER_QUERY, query);ll.addView(getLocalActivityManager().startActivity("SearchAndroidList",it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView());
10、android 屏幕常亮保持
相关的变量:
PowerManager powerManager = null; WakeLock wakeLock = null;
初始化:
powerManager = (PowerManager) this .getSystemService(Service.POWER_SERVICE); wakeLock = this.powerManager.newWakeLock( PowerManager.SCREEN_DIM_WAKE_LOCK, "My Lock");
开启屏幕常亮:
wakeLock.setReferenceCounted(false); wakeLock.acquire();
关闭你的程序设置的屏幕常亮:
wakeLock.release();
注意的地方:我在实际的调试过程中,没有设置wakeLock.setReferenceCounted(false);这个,报错为:java.lang.RuntimeException: WakeLock under-locked
阅读源码:
acquire()函数如下: public void acquire() { synchronized (mToken) { if (!mRefCounted || mCount++ == 0) { try { mService.acquireWakeLock(mFlags, mToken, mTag); } catch (RemoteException e) { } mHeld = true; } } } release()函数如下: public void release() { release(0); } public void release(int flags) { synchronized (mToken) { if (!mRefCounted || --mCount == 0) { try { mService.releaseWakeLock(mToken, flags); } catch (RemoteException e) { } mHeld = false; } if (mCount < 0) { throw new RuntimeException("WakeLock under-locked " + mTag); } } }
报错就抱在release(int flags)中,mCount为负数了,抛除了异常
我们再看下:setReferenceCounted(boolean flags);
public void setReferenceCounted(boolean value) { mRefCounted = value; }
这个函数的作用是是不是需要计算锁的数量,设置为false时,在release()的时候,不管你acquire()了多少回,可以releaseWakeLock掉
11、不让图片变形充满整个屏幕
imageView.setAdjustViewBounds(true);//不让图片充满全局
12、设背景色为透明
getWindow().setBackgroundDrawable(new ColorDrawable(0));
13、中文排版不整齐,一个match_parent解决问题。
更多相关文章
- Android设备屏幕问题
- android 屏幕旋转(横屏、竖屏、反向横屏、反向竖屏)的实现
- android 读取本地超大图片
- Android 图片加水印
- Android gallery实现图片的左右循环旋转源码分享
- 通过 http post 方式上传多张图片
- 重温Android——调节屏幕亮度