Android高级架构师
由于篇幅问题,我呢也将自己当前所在技术领域的各项知识点、工具、框架等汇总成一份技术路线图,还有一些架构进阶视频、全套学习PDF文件、面试文档、源码笔记。
- 330页PDF Android学习核心笔记(内含上面8大板块)
-
Android学习的系统对应视频
-
Android进阶的系统对应学习资料
- Android BAT部分大厂面试题(有解析)
好了,以上便是今天的分享,希望为各位朋友后续的学习提供方便。觉得内容不错,也欢迎多多分享给身边的朋友哈。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
saoli.setVisibility(View.GONE);
ewmli.setVisibility(View.GONE);
}else if (intparameter==1){
saoli.setVisibility(View.VISIBLE);
ewmli.setVisibility(View.VISIBLE);
mMQrCodeDialog = new QrCodeDialog(BaseActivity.this) {
@Override
public String setIvQrCode() {
return QrActivity.QR_TAG_ORDER + string;
}
};
imageView.setImageBitmap(bitmap);
}
}
}
};
private void createFloatActionButtons() {
View v = getWindow().getLayoutInflater().inflate(R.layout.layout_float_action_buttons, null);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
layoutParams.gravity = Gravity.BOTTOM | Gravity.RIGHT;
addContentView(v, layoutParams);
saoli = findViewById(R.id.saoli);
ewmli = findViewById(R.id.ewmli);
imageView = findViewById(R.id.ddmaimg);
initShowfloat();
saoli.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
scan();
}
});
ewmli.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mMQrCodeDialog != null) {
mMQrCodeDialog.show();
}
}
});
}
public void initShowfloat(){
int ss = ShareUtil.getSharedInt(“floatint”);
if (ss==1){
saoli.setVisibility(View.VISIBLE);
ewmli.setVisibility(View.VISIBLE);
}else {
saoli.setVisibility(View.GONE);
ewmli.setVisibility(View.GONE);
}
final String ewmstring =ShareUtil.getSharedString(“ewmss”);
if (!TextUtils.isEmpty(ewmstring)){
Bitmap bitmap = QRCodeEncoder.syncEncodeQRCode(QrActivity.QR_TAG_ORDER+ewmstring,
BGAQRCodeUtil.dp2px(BaseActivity.this, ResUtil.getPx(R.dimen.normal_340dp)),
ContextCompat.getColor(BaseActivity.this, R.color.black), null);
mMQrCodeDialog = new QrCodeDialog(BaseActivity.this) {
@Override
public String setIvQrCode() {
return QrActivity.QR_TAG_ORDER + ewmstring;
}
};
imageView.setImageBitmap(bitmap);
}
}
private void scan() {
startActivity(QrActivity.newIntent(this, 0));
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
PermissionUtil.getInstance(getApplicationContext())
.onRequestPermissionsResult(requestCode, permissions, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@Override
protected void onDestroy() {
super.onDestroy();
ObServernotice.getInstance().removeObserver(observer);
observer = null;
}
}
方法二:
machine_state_view文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout
xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”>
<FrameLayout
android:background=“@mipmap/ic_jxz”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”>
<TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:visibility=“gone”
android:layout_gravity=“right|top”
android:text=“2”
AbstractDragFloatActionButton文件
/**
*meixi
*/
public abstract class AbstractDragFloatActionButton extends RelativeLayout {
private int parentHeight;//悬浮的父布局高度
private int parentWidth;
public AbstractDragFloatActionButton(Context context) {
this(context, null, 0);
}
public AbstractDragFloatActionButton(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public abstract int getLayoutId();
public abstract void renderView(View view);
public AbstractDragFloatActionButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
View view= LayoutInflater.from(context).inflate(getLayoutId(), this);
renderView(view);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
measureChildren(widthMeasureSpec, heightMeasureSpec);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onLayout(boolean b, int i, int i1, int i2, int i3) {
View view = getChildAt(0);
view.layout(0,0,view.getMeasuredWidth(),view.getMeasuredHeight());
}
private int lastX;
private int lastY;
private boolean isDrag;
@Override
public boolean onTouchEvent(MotionEvent event) {
int rawX = (int) event.getRawX();
int rawY = (int) event.getRawY();
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
setPressed(true);//默认是点击事件
isDrag=false;//默认是非拖动而是点击事件
getParent().requestDisallowInterceptTouchEvent(true);//父布局不要拦截子布局的监听
lastX=rawX;
lastY=rawY;
ViewGroup parent;
if(getParent()!=null){
parent= (ViewGroup) getParent();
parentHeight=parent.getHeight();
parentWidth=parent.getWidth();
}
break;
最后
有任何问题,欢迎广大网友一起来交流,分享高阶Android学习视频资料和面试资料包~
偷偷说一句:群里高手如云,欢迎大家加群和大佬们一起交流讨论啊!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
rent.getWidth();
}
break;
最后
有任何问题,欢迎广大网友一起来交流,分享高阶Android学习视频资料和面试资料包~
偷偷说一句:群里高手如云,欢迎大家加群和大佬们一起交流讨论啊!
[外链图片转存中…(img-sEJoB0u4-1715730739462)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!