我的Android之路(持续更新总结~)

简介: 我的Android之路(持续更新总结~)

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" :隐藏滚动条
目录
相关文章
|
Java Android开发
Android studio常用快捷键总结(持续更新中)
Android studio常用快捷键总结(持续更新中)
330 0
|
Web App开发 编解码 Java
Android开发实用工具汇总-持续更新
Android开发实用工具汇总-持续更新
93 1
|
Android开发
【Android小技巧】分享Android Studio常用快捷键(持续更新)
ctrl+F4:关闭窗口 ctrl+H:打开此类的继承关系 ctrl+tab:切换窗口(应用内) ctrl+s:保存(好习惯需养成) shift+F10:编译运行 ctrl+l:在当前类查找关键词 Alt+7:查看此类的结构(方法、变量等) ctrl+p:查看此方法所有重载(光标需在括号内)
136 0
|
安全 IDE Java
Android Studio中快捷键(持续更新)
Android Studio中快捷键(持续更新)
174 0
|
Java Android开发 数据安全/隐私保护
Android aab打包报错(持续更新中~)
言 jarsigner.exefailed with exit code 1 开发环境 解决方案 Execution failed for task &#39;:app:transformClassesWithDexBuilderForRelease&#39;. 开发环境 解决方案 Cause: failed to decrypt safe contents entry: java.io.IOException: getSecretKey failed: Password is not ASCII
1039 0
Android aab打包报错(持续更新中~)
|
前端开发 Android开发 开发者
Android JetPack系列文章 ,持续更新中
Android JetPack系列文章 ,持续更新中
135 0
Android JetPack系列文章 ,持续更新中
|
XML JSON 缓存
Android 主流通用常用框架汇总(持续更新)
Android 主流通用常用框架汇总(持续更新)
|
Java API 开发工具
android开发错误详情汇总及解决方法(持续更新)
android开发错误详情汇总及解决方法(持续更新)
|
设计模式 安全 架构师
Android 程序员不得不收藏的 90+ 个人博客(持续更新...)
每周打开一次收藏夹里的个人博客,已经成为了我的人生一大乐趣。 相比各大博客平台,我一直更加偏爱个人博客。在每个人自己的这一亩三分地里,你能看到的,学到的,不仅仅只有知识,还有不一样的生活,不一样的态度。 在这把我收藏的个人博客分享给大家,如果里面有你,不妨点个赞吧 ! 以下排名不分先后。如果一定要有个顺序,大概是按我收藏的顺序。 Trinea 的博客 来自滴滴出行,Android 开发助手 开发者,android-open-project 维护者 ,android-open-project-analysis 维护者。 中二病也要开发 ANDROID 挺喜欢的一位作者,遗憾的是已经
200 0