尾声
最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。
Android进阶学习资料库
一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
设置EditText的hint字体大小
设置默认输入法
其他xml属性大全
Android点击EditText文本框之外任何地方隐藏键盘的解决办办法
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
@SuppressLint(“ClickableViewAccessibility”)
public class ImmUtils
{
/**
-
设置点击EditText以外区域隐藏键盘
-
@param view
-
@param context
*/
public static void setCloseKeyboard(View view,final Context context)
{
((Activity) context).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
if (!(view instanceof EditText))
{
view.setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
try
{
InputMethodManager inputMethodManager = (InputMethodManager) context
.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(
((Activity) context).getCurrentFocus().getWindowToken(), 0);
} catch (Exception e)
{
}
return false;
}
});
}
if (view instanceof ViewGroup)
{
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++)
{
View innerView = ((ViewGroup) view).getChildAt(i);
setCloseKeyboard(innerView,context);
}
}
}
}
设置手机号中间带空格
//调用:etPhoneNumber.addTextChangedListener(new PhoneNumberTextWatcher(etPhoneNumber));
public class PhoneNumberTextWatcher implements TextWatcher {
EditText phoneEt;
public PhoneNumberTextWatcher(EditText phoneEt) {
this.phoneEt = phoneEt;
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if (s.length() == 13) {
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (s == null || s.length() == 0) return;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (i != 3 && i != 8 && s.charAt(i) == ’ ') {
continue;
} else {
sb.append(s.charAt(i));
if ((sb.length() == 4 || sb.length() == 9) && sb.charAt(sb.length() - 1) != ’ ') {
sb.insert(sb.length() - 1, ’ ');
}
}
}
if (!sb.toString().equals(s.toString())) {
int index = start + 1;
if (sb.charAt(start) == ’ ') {
if (before == 0) {
index++;
} else {
index–;
}
} else {
if (before == 1) {
index–;
}
}
phoneEt.setText(sb.toString());
phoneEt.setSelection(index);
}
}
}
Android如何将软键盘回车换成搜索等按钮,EditText中imeOptions属性的使用
<EditText
android:id=“@+id/met_comment”
android:layout_width=“0dp”
android:layout_weight=“1”
android:hint=“评论两句…”
android:imeOptions=“actionSend”
android:singleLine=“true”
android:layout_height=“wrap_content” />
一定还要设置singLine=“true”,不然回车还是换行的功能
1.actionNext下一步,通常用于跳转到下一个EditText
2.actionGo前往,通常用于打开链接
3.actionSend发送,通常用于发送信息
4.actionSearch搜索,通常用于搜索信息
5.actionDone确认,通常表示事情做完了
metComment.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == event.KEYCODE_ENTER) {
if(!MStringUtils.isNullOrEmpty(metComment.getText().toString()))
{
addEvaluate(metComment.getText().toString());
}else{
MyToast.showMessage(“评论内容不得为空”);
}
}
return false;
}
});
软键盘的关闭软键盘的显示和隐藏的监听
//mllDetailsPost是EditText的父布局
mllDetailsPost.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
mllDetailsPost.getWindowVisibleDisplayFrame®;
int screenHeight = mllDetailsPost.getRootView()
.getHeight();
int heightDifference = screenHeight - (r.bottom);
if (heightDifference > 200) {
//软键盘显示
mllEt.setVisibility(View.GONE);
mtvSend.setVisibility(View.VISIBLE);
} else {
//软键盘隐藏
mllEt.setVisibility(View.VISIBLE);
mtvSend.setVisibility(View.GONE);
}
}
});
最后
对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。
以下是今天给大家分享的一些独家干货:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。
以下是今天给大家分享的一些独家干货:
[外链图片转存中…(img-v0Y1d3NQ-1715132335996)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!