android约束布局动态添加控件或者动态修改布局 记录笔记
ConstraintSet constraintSet =new ConstraintSet(); // 第一个按钮 View ivLeft = getLayoutInflater().inflate(R.layout.item_262, null); TextView tvText = ivLeft.findViewById(R.id.btn); tvText.setText("Monday"); setFontEn(myContext,tvText); ivLeft.setId(R.id.pm1); setParam(R.id.pm1,constraintSet); constraintSet.connect( R.id.pm1, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, 762 ); constraintSet.connect( R.id.pm1, ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START, 104 ); constraintLayout.addView(ivLeft); objectAnimator = starCloudX(ivLeft, 0, -25, 7000); objectAnimator1 = starCloudY(ivLeft, 0, -34, 7000); ivLeft.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { playMusic(R.raw.shuipaosheng); objectAnimator.pause(); objectAnimator1.pause(); box1_qiti.setAlpha(1f); gifFromPath1.reset(); Path path= new Path(); path.moveTo(ivLeft.getX(),ivLeft.getY()); path.lineTo(box1_qiti.getX()+box1_qiti.getWidth()/2-ivLeft.getWidth()/2,box1_qiti.getY()+box1_qiti.getHeight()/2-ivLeft.getHeight()/2); ObjectAnimator objectAnimator = starPath(ivLeft, path, 500, 0); starAlpha(ivLeft,1f,0f,500,0); box1_qiti.setAlpha(1f); gifFromPath1.reset(); new Thread(){ @Override public void run() { super.run(); try { this.sleep(200); playMusic(R.raw.xiu); } catch (InterruptedException e) { e.printStackTrace(); } } }.start(); objectAnimator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animator) { } @Override public void onAnimationEnd(Animator animator) { tv.setText(tv.getText().toString()+" "+tvText.getText().toString()); } @Override public void onAnimationCancel(Animator animator) { } @Override public void onAnimationRepeat(Animator animator) { } }); } }); //第二个按钮 View ivLeft2 = getLayoutInflater().inflate(R.layout.item_262, null); TextView tvText2 = ivLeft2.findViewById(R.id.btn); tvText2.setText("many"); setFontEn(myContext,tvText2); ivLeft2.setId(R.id.pm2); setParam(R.id.pm2,constraintSet); constraintSet.connect( R.id.pm2, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, 295 ); constraintSet.connect( R.id.pm2, ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END, 1092 ); ivLeft2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { playMusic(R.raw.shuipaosheng); objectAnimator2.pause(); objectAnimator21.pause(); Path path= new Path(); path.moveTo(ivLeft2.getX(),ivLeft2.getY()); path.lineTo(box1_qiti.getX()+box1_qiti.getWidth()/2-ivLeft2.getWidth()/2,box1_qiti.getY()+box1_qiti.getHeight()/2-ivLeft2.getHeight()/2); ObjectAnimator objectAnimator = starPath(ivLeft2, path, 500, 0); starAlpha(ivLeft2,1f,0f,500,0); box1_qiti.setAlpha(1f); gifFromPath1.reset(); new Thread(){ @Override public void run() { super.run(); try { this.sleep(200); playMusic(R.raw.xiu); } catch (InterruptedException e) { e.printStackTrace(); } } }.start(); objectAnimator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animator) { } @Override public void onAnimationEnd(Animator animator) { tv.setText(tv.getText().toString()+" "+tvText2.getText().toString()); } @Override public void onAnimationCancel(Animator animator) { } @Override public void onAnimationRepeat(Animator animator) { } }); } }); constraintLayout.addView(ivLeft2); objectAnimator2=starCloudX(ivLeft2,0,-25,7000); objectAnimator21=starCloudY(ivLeft2,0,34,7000); // 第三个按钮 View ivLeft3 = getLayoutInflater().inflate(R.layout.item_262, null); TextView tvText3 = ivLeft3.findViewById(R.id.btn); tvText3.setText("have"); setFontEn(myContext,tvText3); ivLeft3.setId(R.id.pm3); setParam(R.id.pm3,constraintSet); constraintSet.connect( R.id.pm3, ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START, 890 ); constraintSet.connect( R.id.pm3, ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP, 55 ); ivLeft3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { playMusic(R.raw.shuipaosheng); objectAnimator3.pause(); objectAnimator31.pause(); box1_qiti.setAlpha(1f); gifFromPath1.reset(); Path path= new Path(); path.moveTo(ivLeft3.getX(),ivLeft3.getY()); path.lineTo(box1_qiti.getX()+box1_qiti.getWidth()/2-ivLeft3.getWidth()/2,box1_qiti.getY()+box1_qiti.getHeight()/2-ivLeft3.getHeight()/2); ObjectAnimator objectAnimator = starPath(ivLeft3, path, 500, 0); starAlpha(ivLeft3,1f,0f,500,0); box1_qiti.setAlpha(1f); gifFromPath1.reset(); new Thread(){ @Override public void run() { super.run(); try { this.sleep(200); playMusic(R.raw.xiu); } catch (InterruptedException e) { e.printStackTrace(); } } }.start(); objectAnimator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animator) { } @Override public void onAnimationEnd(Animator animator) { tv.setText(tv.getText().toString()+" "+tvText3.getText().toString()); } @Override public void onAnimationCancel(Animator animator) { } @Override public void onAnimationRepeat(Animator animator) { } }); } }); constraintLayout.addView(ivLeft3); objectAnimator3=starCloudX(ivLeft3,0,25,7000); objectAnimator31=starCloudY(ivLeft3,0,34,7000); TransitionManager.beginDelayedTransition(constraintLayout); constraintSet.applyTo(constraintLayout);
@BindView(R.id.layout)
ConstraintLayout constraintLayout;
分类:
android技术
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通