Android的各种零碎知识点(持续补充)

1,将EditText的光标放在尾部:

editText.setSelection(editText.getText().length());

2,使用SparseArray<E>替换HashMap<Integer,E>可以提升查找效率。

3,通过logcat日志可以查看Activity的display time,日志样式如下:

I/ActivityManager: Displayed com.huawei.android.ui.PhoneFinderActivity: +2s152ms (total +22s66ms)

日志打印位置在com.android.server.am.ActivityRecord.reportLaunchTimeLocked(),具体代码如下:

private void reportLaunchTimeLocked(final long curTime) {
    final ActivityStack stack = task.stack;
    final long thisTime = curTime - displayStartTime;
    final long totalTime = stack.mLaunchStartTime != 0
            ? (curTime - stack.mLaunchStartTime) : thisTime;
    if (ActivityManagerService.SHOW_ACTIVITY_START_TIME) {
        Trace.asyncTraceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER, "launching", 0);
        EventLog.writeEvent(EventLogTags.AM_ACTIVITY_LAUNCH_TIME,
                userId, System.identityHashCode(this), shortComponentName,
                thisTime, totalTime);
        StringBuilder sb = service.mStringBuilder;
        sb.setLength(0);
        sb.append("Displayed ");
        sb.append(shortComponentName);
        sb.append(": ");
        TimeUtils.formatDuration(thisTime, sb);
        if (thisTime != totalTime) {
            sb.append(" (total ");
            TimeUtils.formatDuration(totalTime, sb);
            sb.append(")");
        }
        Log.i(ActivityManagerService.TAG, sb.toString());
    }
    mStackSupervisor.reportActivityLaunchedLocked(false, this, thisTime, totalTime);
    if (totalTime > 0) {
        //service.mUsageStatsService.noteLaunchTime(realActivity, (int)totalTime);
    }
    displayStartTime = 0;
    stack.mLaunchStartTime = 0;
}

“this time”包括actiivty启动时间和activity内容绘制时间;
“total time”包括“this time”和activity stack建立时间;
通常,“this time”和“total time”是相同的,只在两者不同时才会打印“total time”。

4,ipv4的正则表达式:

^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[09][0-9]|[1-9][0-9]|[0-9])$

5,在非Activity中调用startActivtiy()时,需要给Intent添加flag:

Intent.FLAG_ACTIVITY_NEW_TASK

6,在Activity中设置手机屏幕保持常亮状态:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

7,WebView加载本地文件:

webView.loadUrl("file:///android_asset/test.html");

8,TextView实现中文加粗效果:

textView.getPaint().setFakeBoldText(true);

9,TextView使用自定义字体:

Typeface tf=Typeface.createFromAsset(getAssets(),"fonts/***.TTF");
textView.setTypeface(tf);

10,EditText默认弹出数字键盘,但是允许输入字母等特定字符:

<EditText
    android:digits="0123456789abcdefghijklmnopqrstuvwxyz./?<>"
    android:inputType="number"/>

11,android app的包名应遵循“DNS反转”约定,以保证包名唯一性。

12,Activity全屏设置:

12.1 AndroidManifest.xml中为Activity添加如下属性:

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

12.2 Activity代码中设置:

requestWindowFeature(Window.FEATURE_NO_TITLE);
int flags = WindowManager.LayoutParams.FLAG_FULLSCREEN;
int mask = WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setFlags(flags, mask);
// 注意:以上代码要写在setContentView()之前。

13,TextView增加删除线:

textView.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);

14,TextView设置ColorSelector:

Context ctx = textView.getContext();
ColorStateList colorStateList = ctx.getResources().getColorStateList(R.color.***_selector);
textView.setTextColor(colorStateList);

15,在代码中设置View的background属性之后padding属性会失效,需要重新设置

16,缺少*.so文件,会导致调用错误java.lang.ExceptionInInitializerError

17,Eclipse中出现“ADB server didn’t ACK”错误解决方案:

1)关闭Eclipse
2)通过命令行进入 Android SDK tools目录
3)执行adb kill-server命令
4)执行adb start-server
5)如果启动ADB server时没有出错信息,则adb启动成功
6)重启Eclipse

18,将jar包转成dex格式:

dx --dex --output=out_name.jar origin.jar

19,查看app内存使用情况:

adb shell dumpsys meminfo -a [package_name]

20,android app数据备份与恢复:

adb backup -f [backup_file_name] -noapk [package_name]
adb restore [backup_file_name]

21,设置音量:

public void setVolume(float scale) {
    AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    audioManager.setMode(AudioManager.STREAM_MUSIC);
    int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
    audioManager
            .setStreamVolume(AudioManager.STREAM_MUSIC, (int) (maxVolume * scale), AudioManager.FLAG_PLAY_SOUND);
}

22,获取Android app流量消耗数据:

1)进入手机根目录:adb shell
2)获取app_id:cat data/system/packages.list | grep “pkg_name”(pkg_name为app包名)
3)获取上行流量:cat proc/uid_stat/app_id/tcp_snd(app_id通过第2步获取,流量单位是byte)
4)获取下行流量:cat proc/uid_stat/app_id/tcp_rcv(app_id通过第2步获取,流量单位是byte)

23,动态改变dialog尺寸:

//在dialog.show()之后调用
public static void setDialogWindowAttr(Dialog dlg){
        WindowManager.LayoutParams lp = dlg.getWindow().getAttributes();
        lp.gravity = Gravity.CENTER;
        lp.width = LayoutParams.MATH_PARENT;//宽高可设置具体大小
        lp.height = LayoutParams.MATH_PARENT;
        dlg.getWindow().setAttributes(lp);
    }

24,Eclipse设置单行代码宽度:

Preferences—Java—Code Style—Formatter—Edit…—Line Wrapping—General Settings—Maximum line width

25,查看keystore文件:

keytool -list -v -keystore <keystore_file>

26,查看已安装apk包名:

adb shell pm list package

27,gradle配置中denpencies的类库的存放目录:

.gradle/caches/modules-2/files-2.1

28,查看gradle最新版本:

https://gradle.org/releases
http://services.gradle.org/distributions/

29,查看as的gradle插件最新版本:

https://jcenter.bintray.com/com/android/tools/build/gradle/
ps:gradle插件存储目录:/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle/

30,adb查看当前运行的activity:

adb shell dumpsys activity activities | grep "Run"



(未完待续)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值