觉得有意思有用处的就简单记下
作为备忘录
1 , 更改顶部状态栏和底部导航栏颜色
- Android L及以上版本
- 状态栏颜色在style.xml中修改colorPrimaryDark颜色即可
- 导航栏颜色在style.xml中修改navigationBarColor颜色即可
- Android L以下版本
- 参考:http://www.jianshu.com/p/bae25b5eb867
2 , 一个非常好用的翻译插件
是我这个英语渣的福利
- https://github.com/Skykai521/ECTranslation
3 , Android studio自带的截图与录制视频功能
- 连接手机后,点开底部Android Monitor,如图 :
4 , 布局文件中的含透明值颜色的写法
- android:background="#80000000"
- 前面两个数字是透明值【00~99 : 透明~不透明】,后面为颜色代码
5 , 在service里启动activity
Intent intent = new Intent(getBaseContext() , Activity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(intent);
6 , 进入activity的时候取消edittext自动获取焦点
在父布局加这两句话
android:focusable="true"
android:focusableInTouchMode="true"
7 , 显示简单的加载框
ProgressDialog progressDialog = ProgressDialog.show(context, title, message);
8 , 防止点击edittext的时候被软键盘遮住
在Androidmanifest中添加
android:windowSoftInputMode="stateHidden|adjustPan"
9 , 同一个Textview设置不同文字颜色
String string = "设置不同文字颜色";
SpannableString ss = new SpannableString(string);
ss.setSpan(new ForegroundColorSpan(Color.GREEN), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(ss);
10 , Bitmap转为Drawable
Drawable drawable = new BitmapDrawable(bitmap);
11 , 将本地图片取出并设置为bitmap格式
Bitmap bitmap = BitmapFactory.decodeFile(PhotoPath);
12 , 保存bitmap格式的文件到本地
try {
FileOutputStream out = new FileOutputStream(outFilePath);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush(); out.close();
} catch (IOException e) {
e.printStackTrace();
}
13 , 使用过bitmap后不再使用时谨记释放内存
if (bitmap != null) {
bitmap.recycle();//释放bitmap
}
14 , Material风格的Dialog的使用
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(title)
.setMessage(message)
.setView(view)
.setNegativeButton("取消", null)
.setPositiveButton("加入", null)
.create()
.show();
15 , Android5.0全透明状态栏效果
//取消标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
}
16 , 不同APP之间的Activity跳转
Intent intent = new Intent();
intent.setClassName(packageName,packageName+activityName);
startActivity(intent);
17 , 带阴影的背景xml
示例图:
-
-
18 , AlertDialog点击按钮后对话框不消失的处理方法
在点击PositiveButton或NegativeButton按钮的方法中加入
try {
Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, false); // false - 不能关闭 , true - 关闭
} catch (Exception e) {
e.printStackTrace();
}
19 , 使用代码为textview设置drawableLeft
1.在XML中使用
android:drawableLeft="@drawable/icon"
2.代码中动态变化
Drawable drawable= getResources().getDrawable(R.drawable.drawable);
/// 这一步必须要做,否则不会显示.
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
mTextview.setCompoundDrawables(drawable,null,null,null);
20, 使用代码为textview设置下划线
textView.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下划线
textView.getPaint().setAntiAlias(true);//抗锯齿
21, 对话框AlertDialog中的EditText不能自动打开软键盘
Activity中需要启动一个AlertDialog,这个对话框使用的是自定义布局,在这个对话框里有个EditText,可能是自定义布局的问题,导致对话框弹出时不能自动打开软键盘并定位焦点到文本框里。
解决方法:延迟一会儿调出输入法
public void showKeyboard() {
//调用系统输入法
InputMethodManager inputManager = (InputMethodManager) editText
.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(editText, 0);
}
//在dialog.show()后,
dialog.show();
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
dialog.showKeyboard();
}
}, 300);
22, Android L版本以后, style.xml能做什么
23, 几行代码通知系统自动安装apk
//apk文件的本地路径
File apkfile = new File(apkFilePath);
//会根据用户的数据类型打开android系统相应的Activity。
Intent intent = new Intent(Intent.ACTION_VIEW);
//设置intent的数据类型是应用程序application
intent.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");
//为这个新apk开启一个新的activity栈
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//开始安装
startActivity(intent);
//关闭旧版本的应用程序的进程
android.os.Process.killProcess(android.os.Process.myPid());
24, Android5.0改变AlertDialog的样式
在xml中定义一个主题:
样式如下图所示:
在创建的对话框的时候,这样创建就可以了。
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyAlertDialogStyle);
builder.setTitle("AppCompatDialog");
builder.setMessage("Lorem ipsum dolor...");
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
builder.show();
这样的方法是每个地方使用的时候,都要在构造函数传我们的这个Dialog的Theme,我们也可以全局的定义对话框的样式。
在我们的AndroidManifest.xml文件中声明application或者activity的时候设置theme为MyTheme即可,不过需要注意的一点是,我们的Activity需要继承自AppCompatActivity。
25, 当从 Recent Apps 界面划掉一个程序时
service会触发onTaskRemoved()这个方法
假如你当前启动service的方式是bindService , 那么就不会触发 , 必须要用startService;
当然 , 你也可以两种方式一起开启;
在做后台下载的时候遇到了这个问题 , 搜索了很久才解决的 , 而且用的是Google
http://stackoverflow.com/questions/24127923/service-ontaskremoved-not-called-if-started-with-bindservice
嗯 , 做一下笔记
26, 查看默认debug的签名
keytool -v -list -keystore C:\Users\Administrator\.android\debug.keystore
27, TextView文字设置竖向显示
1.属性介绍:
安卓中XML属性有 android:ems="x"
x表示一行显示的字符个数。
2.具体的设置
第一步:设置控件宽度为包裹内容 android:layout_width="wrap_content"
第二步:设置每行显示一个字符 android:ems="1"
28, 获取当前是否有网络
添加权限 :
代码如下 :
ConnectivityManager connectivityManager = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()) {
//网络已打开
} else {
//网络已关闭
}
29, 发送一个系统广播通知手机有图片更新
保存好图片之后 , 有时候在本地相册查看不了 , 其实是要发送一条广播去通知手机有图片更新 , 代码如下 :
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(new File(filePath));
intent.setData(uri);
sendBroadcast(intent);
30, 重启APP :
Intent intent = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);