我的2017年--项目一期

11 篇文章 0 订阅
1 篇文章 0 订阅

翻看了一下博客,最近的一遍博客还是17年8月份。从9月份进入项目开发后,经历了项目一期和二期,已经很疲惫了,也就很久没有写过博客了,对我自己来说损失了不少,没有时间去总结,没有时间去吸取新的知识。现在项目三期又准备开始了,又要陷入无止境的加班节奏了。。。。。现在对项目中的一些心得和技术梳理一下,总结一下。

1、设置字体透明度
http://blog.csdn.net/sky1203850702/article/details/44916819
透明度参照表;
00%=FF(不透明) 5%=F2 10%=E5 15%=D8 20%=CC 25%=BF 30%=B2 35%=A5 40%=99 45%=8c 50%=7F
55%=72 60%=66 65%=59 70%=4c 75%=3F 80%=33 85%=21 90%=19 95%=0c 100%=00(全透明)
#4c000000

2、设置部分字体颜色
public void setTextColor(){
SpannableStringBuilder style=new SpannableStringBuilder(binding.tvText.getText().toString()); //假如说获取到的字符串为“最新的程序员书籍《我是最牛的程序员》”那么《我是最牛的程序员》这几个字是蓝色
int fstart=binding.tvText.getText().toString().indexOf(“《我是最牛的程序员》”);
int fend=fstart+”《我是最牛的程序员》”.length();
style.setSpan(new ForegroundColorSpan(Color.parseColor(“#FF65B1FF”)),fstart,fend,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
binding.tvText.setText(style);

}

3、动态获取权限
以获取设备ID为列,动态申请权限

@TargetApi(Build.VERSION_CODES.M)
private void applyPermissions() {
String[] perms = {“android.permission.READ_PHONE_STATE”};

requestPermissions(perms, REQUEST_CODE_ASK_READ_PHONE_STATE);

}

final private int REQUEST_CODE_ASK_READ_PHONE_STATE = 125;

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_READ_PHONE_STATE: {
boolean cameraAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
if (cameraAccepted) {
//授权成功之后,
checkAppUpdate();
} else {
//用户授权拒绝之后
alertPermissionDialog(“利卡使用电话权限确定本机号码和设备ID,以保证账号登录安全性,不会拨打电话或终止通话\n请在设置-应用-利卡-权限中开启”);
}
}
break;
// default:
// super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}

private void alertPermissionDialog(final String desc) {
postOnResumed(new Runnable() {
@Override
public void run() {
Bundle args = AlertDialog.prepareArguments(“权限申请”, desc, getString(R.string.refused_), “去设置”);
AlertDialog alertDialog = new AlertDialog() {

@Override
public void onClickOK() {
goToSetting();
finish();
}

@Override
public void onClickCancel() {
Process.killProcess(Process.myPid());//不同意就强制退出APP
}

};
alertDialog.setArguments(args);
alertDialog.setCancelable(false);
alertDialog.show(getSupportFragmentManager(), “alertDialog”);
}
});
}

private void goToSetting() {

//打开本应用去设置权限
String SCHEME = “package”;
//调用系统InstalledAppDetails界面所需的Extra名称(用于Android 2.1及之前版本)
final String APP_PKG_NAME_21 = “com.android.settings.ApplicationPkgName”;
//调用系统InstalledAppDetails界面所需的Extra名称(用于Android 2.2)
final String APP_PKG_NAME_22 = “pkg”;
//InstalledAppDetails所在包名
final String APP_DETAILS_PACKAGE_NAME = “com.android.settings”;
//InstalledAppDetails类名
final String APP_DETAILS_CLASS_NAME = “com.android.settings.InstalledAppDetails”;

Intent intent = new Intent(); final int apiLevel = Build.VERSION.SDK_INT; if (apiLevel >= 9) { // 2.3(ApiLevel 9)以上,使用SDK提供的接口 intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts(SCHEME, getPackageName(), null); intent.setData(uri); } else { // 2.3以下,使用非公开的接口(查看InstalledAppDetails源码) // 2.2和2.1中,InstalledAppDetails使用的APP_PKG_NAME不同。 final String appPkgName = (apiLevel == 8 ? APP_PKG_NAME_22
APP_PKG_NAME_21);
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName(APP_DETAILS_PACKAGE_NAME,
APP_DETAILS_CLASS_NAME);
intent.putExtra(appPkgName, getPackageName());
}
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

//打开应用管理页面
Intent intent = new Intent();
intent.setAction(“android.intent.action.MAIN”);
intent.setClassName(“com.android.settings”, “com.android.settings.ManageApplications”);
startActivity(intent);
}

public void checkAppUpdate() {
LaunchRequest request = new LaunchRequest();
request.executeSilent(this);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值