Android软键盘
Android显示软键盘(输入法)
/** * .showSoftInput方法第二个参数值 * InputMethodManager.SHOW_IMPLICIT:表示本次显示软键盘的请求不是来自用户的直接请求,而是隐式的请求 * InputMethodManager.SHOW_FORCED:强制显示(如果隐藏键盘 hideSoftInputFromWindow 方法的第二个参数用 InputMethodManager.HIDE_NOT_ALWAYS 时,则隐藏不掉) */ // 显示软键盘 if (mActivity != null ) { ((InputMethodManager) mActivity.getSystemService(INPUT_METHOD_SERVICE)) .showSoftInput(mActivity.getCurrentFocus(), InputMethodManager.SHOW_IMPLICIT); }
Android关闭软键盘(输入法)
// 关闭软键盘 if (mActivity != null && mActivity.getCurrentFocus() != null) { if (mActivity.getCurrentFocus().getWindowToken() != null) { ((InputMethodManager) mActivity.getSystemService(INPUT_METHOD_SERVICE)). hideSoftInputFromWindow(mActivity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } }
Android设置文字过期废弃中划线
textView.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG
Android设置沉浸式状态栏
<resources xmlns:tools="http://schemas.android.com/tools"> <!-- Base application theme. --> <style name="Theme.TranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowTranslucentStatus">false</item> <item name="android:windowTranslucentNavigation">true</item> <item name="android:statusBarColor">@android:color/transparent</item> </style> </resources>
使用release包查看打印日志
adb shell setprop log.tag.TAG V (TAG为打印日志设置的TAG名称)
ridView去除点击按下时阴影
只需在.xml文件的GridView里加入:
android:listSelector=“@android:color/transparent”
即可
<GridView android:id="@+id/cash_withdraw_gv" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="3" android:background="@drawable/cash_withdraw_body_shape" android:listSelector="@android:color/transparent" android:numColumns="3" />
LinearLayout动态设置宽高
private LinearLayout myWalletSize; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_wallet); myWalletSize = findViewById(R.id.myWalletSize); ViewGroup.LayoutParams layoutParams = myWalletSize.getLayoutParams(); // 这里设置的都是px(像素)值,博主这里调用了方法由dp转为了px(下面有dp px相互转换的方法) layoutParams.width = DensityUtil.dp2px(MyWalletActivity.this,300); layoutParams.height = DensityUtil.dp2px(MyWalletActivity.this,350); myWalletSize.setLayoutParams(layoutParams); }
获取屏幕密度
// 获取屏幕密度 float scale = context.getResources().getDisplayMetrics().density; • 1 • 2
根据手机的分辨率实现dp(相对大小) 和 px(像素)之间的相互转换
dp和px之间相互转换详解
dp转px
/** * 根据手机的分辨率从 dp(相对大小) 的单位 转成为 px(像素) */ public static int dp2px(Context context, float dpValue) { // 获取屏幕密度 final float scale = context.getResources().getDisplayMetrics().density; // 结果+0.5是为了更接近 return (int) (dpValue * scale + 0.5f); }
px转dp
/** * 根据手机的分辨率从 px(像素) 的单位 转成为 dp(相对大小) */ public static int px2dp(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); }
Android studio的Gradle里面不能打.aar包
在Settings里面把下列内容取消勾选即可
抽奖转盘
抽完奖之后设置转盘回到原点
抽完奖之后设置转盘回到原点
FrameLayout中的setRotation设置角度方法(frameLayout.setRotation(0);)
// 抽完奖之后设置转盘回到原点 frameLayout.setRotation(0); • 1 • 2
Dialog
设置不可点击dialog以外的地方
// 设置不可点击dialog以外的地方 dialog.setCanceledOnTouchOutside(false);
dialog设置居中显示
// dialog设置居中显示 mWindow.setGravity(Gravity.CENTER);
dialog去掉头部标题栏
// dialog去掉头部标题栏(去掉标题栏这句一定要写在setContentView()方法的前面,不然会报错) dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog解决不能居中
// 原因是dialog里面也是有头部标题栏存在的,去掉头部标题栏,再设置居中显示即可 dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); Window mWindow = dialog.getWindow(); mWindow.setGravity(Gravity.CENTER);
监测dialog是否dismiss(可用于监听返回键)
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { imageView.setVisibility(View.VISIBLE); textView.setVisibility(View.VISIBLE); } });
AlertDialog对话框
AlertDialog.Builder builder = new AlertDialog.Builder(myContext); builder.setMessage("初始化失败,请重试"); builder.setPositiveButton("重试", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); init(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); finish(); } }); builder.show();
Android设置页面半透明效果
getWindow().setBackgroundDrawable(new ColorDrawable(0x00000000));
Android点击复制实现复制文本功能
原型图
点击事件(注意:方法过时了并不影响使用)
/**导包注意 API 11之前: android.text.ClipboardManager API 11之后: android.content.ClipboardManager */ import android.text.ClipboardManager; ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); cm.setText(userInfo.getUserId());
Android继承AppCompatActivity去除标题栏
只需在onCreate方法的setContentView前加上getSupportActionBar().hide();即可
Android设置TextView文字居中
在.xml里设置
android:gravity="center" • 1
在.java代码里设置
tvTitle.setGravity(Gravity.CENTER);
在.xml里设置
if (context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { // 竖屏 LogUtil.e("竖屏"); } else { // 横屏 LogUtil.e("横屏"); } • 1
在.java代码里设置
tvTitle.setGravity(Gravity.CENTER);
Android实现手机内存存储功能
Android存储SharedPreferences.Editor的commit()和apply()的区别
Android存储(SharedPreferences.Editor)commit()和apply()区别:commit和apply虽然都是原子性操作,但是原子的操作不同,commit是原子提交到数据库,从提交数据到存在磁盘中都是同步过程;
而apply方法的原子操作是原子提交到内存中,而非数据库,之后再异步提交数据到数据库中。
commit提交是同步过程,效率会比apply异步提交的速度慢,有返回值;apply没有返回值,无法知道存储是否失败。
在不关心提交结果是否成功的情况下,优先考虑apply方法。
xml
EditText设置输入文字是从右至左(即光标从右至左)
android:layoutDirection="rtl"
设置透明度
// 设置透明度 取值从0到1(0:透明;1:不透明) android:alpha="0.5"
android设置背景透明度、半透明度
// #90000000前两位是透明的效果参数从00--99(透明--不怎么透明),后6位是颜色的设置 android:background="#90000000"
android设置背景透明度、半透明度
// #90000000前两位是透明的效果参数从00--99(透明--不怎么透明),后6位是颜色的设置 android:background="#90000000"
TextView设置长按复制功能
// 意为文本是否可以复制 android:textIsSelectable="true"
TextView设置长按复制功能
// 意为文本是否可以复制 android:textIsSelectable="true"
ListView
ListView属性
android:divider="@null" :不显示分割线 android:dividerHeight="5dp" :指定分割线的高 android:scrollbars="none" :隐藏滚动条