精华内容
下载资源
问答
  • 第一种imageView = new ImageView(this);FrameLayout decorView = (FrameLayout) getWindow().getDecorView();decorView.addView(imageView);FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams).....
    第一种
    imageView = new ImageView(this);
    FrameLayout decorView = (FrameLayout) getWindow().getDecorView();
    decorView.addView(imageView);
    FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) imageView.getLayoutParams();
    layoutParams.width = DubDisplay.dip2px(this, 38);
    layoutParams.height = DubDisplay.dip2px(this, 38);
    layoutParams.gravity = Gravity.BOTTOM | Gravity.END;
    layoutParams.setMargins(0, 0, DubDisplay.dip2px(this, 20), DubDisplay.dip2px(this, 20));
    imageView.setBackgroundResource(R.drawable.slipping_top);
    imageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    user_cash_listview.post(new Runnable() {
    @Override
    public void run() {
    user_cash_listview.requestFocusFromTouch();
    user_cash_listview.setSelection(0);
    }
    });
    }
    });

    第二种
    /*lp = new WindowManager.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
    ViewGroup.LayoutParams.WRAP_CONTENT,
    WindowManager.LayoutParams.TYPE_APPLICATION,
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE// 设置为无焦点状态
    | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, // 没有边界
    PixelFormat.TRANSLUCENT);// 半透明效果
    lp.gravity = Gravity.BOTTOM;
    lp.windowAnimations = R.style.bus_view;
    windowManager.updateViewLayout(view, lp);*/
    展开全文
  • java创建布局管理器的方法JAVA的界面布局原理:因为Java是跨平台语言,使用绝对坐标显然会导致问题,即在不同平台、不同分辨率下的显示效果不一样。Java 为了实现跨平台的特性并且获得动态的布局效果,Java将容器内...

    java创建布局管理器的方法

    JAVA的界面布局原理:因为Java是跨平台语言,使用绝对坐标显然会导致问题,即在不同平台、不同分辨率下的显示效果不一样。Java 为了实现跨平台的特性并且获得动态的布局效果,Java将容器内的所有组件安排给一个“布局管理器”负责管理。我们为大家收集整理了关于java创建布局管理器,以方便大家参考。

    来自于布局管理类LayoutManager。

    创建方法:

    a、布局管理器必须实现布局管理器类的接口//

    b、覆盖五个函数

    //在布局管理器中增加或删除组件时调用下面两个函数

    void addLayoutComponent(String s,Component c);

    s:组件位置的标识符名称

    c:增加的组件

    void removeLayoutComponent(Component c);

    c:删除的组件

    //计算布局组件所需的最小和选定的空间用下面两个函数

    Dimension preferredLayoutSize(Container parent);//返回当前布局下容器的选定大小

    Dimensioin minimumLayoutSize(Container parent);//返回当前布局下容器的最小尺寸

    parent:在其中布局组件的容器

    //在容器中布局组件,并对所有组件调用reshape方法,用下面函数

    void layoutContainer(Container parent);

    -------------------------------------------------------------

    reshape()快速原型开发

    有时不想安排布局管理器,仅把组件放在固定的位置上,这种方式虽然不适于编写平台独立的程序,

    但是可以快速开发原型。

    reshape(int x,int y,int width,int height)

    x,y:组件左上角坐标

    width,height:组件的宽和高。

    来源: http://www.51edu.com/it/bckf/477236.html

    展开全文
  • Android动态创建布局常用方法

    千次阅读 2018-08-16 20:08:58
    项目中经常需要动态改变某个View的位置,或者自定义View时需要动态赋值等等,因此有一些基础操作需要熟练掌握,下面这个虽然很丑,但是基本上常用的一些动态操作的方法都已经涉及到了,先看下效果,然后对照代码看:...

    项目中经常需要动态改变某个View的位置,或者自定义View时需要动态赋值等等,因此有一些基础操作需要熟练掌握,下面这个虽然很丑,但是基本上常用的一些动态操作的方法都已经涉及到了,先看下效果,然后对照代码看:

    对应代码如下:

    public class MainActivity extends AppCompatActivity {
    
        private RelativeLayout mMainLy;
    
        @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //第一种添加根布局,在xml中静态设置
            //setContentView(R.layout.activity_main);
    
            //第二种添加根布局,通过java代码动态添加
            mMainLy = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.activity_main, null);
            setContentView(mMainLy);
    
            //java代码冬天家自定义View,金币雨动画
            RPEarnCashEntranceView myView = new RPEarnCashEntranceView(getApplicationContext());
            mMainLy.addView(myView);
    
            //代码创建view,设置属性
            TextView tv = new TextView(getApplicationContext());
            tv.setText("hello Animator");
            tv.setTextColor(Color.argb(255, 255, 0, 0));
            tv.setTextSize(19);
            //设置布局参数
            RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            lp.addRule(RelativeLayout.BELOW, R.id.hehe2);
            lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
            lp.addRule(Gravity.CENTER);
            lp.topMargin = 40;
            lp.leftMargin = 200;
            //Relativelayout还可以设置额外属性
            //lp.addRule(RelativeLayout.CENTER_HORIZONTAL);
            //lp.setMargins(0, 80 , 0, 0);
            tv.setLayoutParams(lp);
    
            //文字左边动态添加图片
            Drawable drawableLeft = getResources().getDrawable(R.mipmap.cms_home_icon_coin);
            drawableLeft.setBounds(0,0,drawableLeft.getMinimumWidth(),drawableLeft.getMinimumHeight());
            tv.setCompoundDrawablesRelativeWithIntrinsicBounds(drawableLeft, null,null,null);
            tv.setCompoundDrawablePadding(140);
    
            //第一种添加根布局
            //mMainLy = (RelativeLayout) findViewById(R.id.main_ly);
            //mMainLy.addView(tv);
    
            //第二种添加根布局,将上面设置好的参数的view添加到根布局中去
            mMainLy.addView(tv);
    
            /**
             * 动态添加动画
             */
            ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(tv,"translationY",500,-DimenUtils.dp2px(35));
            ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(tv,"alpha",1f,0.3f);
            objectAnimator1.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    super.onAnimationEnd(animation);
                }
    
                @Override
                public void onAnimationStart(Animator animation) {
                    super.onAnimationStart(animation);
                }
            });
            AnimatorSet animatorSet = new AnimatorSet();
            animatorSet.playTogether(objectAnimator,objectAnimator1);
            animatorSet.setDuration(5000);
            animatorSet.start();
    
            //添加一个自定义画圆圈的View
            CircleView mCircleView = (CircleView) findViewById(R.id.one_key_circle);
            ValueAnimator animator = ObjectAnimator.ofFloat(mCircleView, "alpha", 0f,1f);
            animator.setDuration(5000);
            animator.start();
            mCircleView.startCircle(false);
    
        }
    }

    这个项目的完整地址:

    https://github.com/buder-cp/base_component_learn/tree/master

    展开全文
  • 合理使用负边距技术,可以帮助我们创建很多有意思的布局,比如自适应浏览器宽度流体布局
  • 主要介绍了Android编程之代码创建布局的方法,结合实例形式分析了Android通过代码创建布局的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 需要导入依赖 //RecyclerView依赖 implementation 'com.android.support:recyclerview-v7:28.0.0' //Glide加载图片依赖 implementation 'com.github.bumptech.glide:glide:4.8.0' Activity或fragment中创...

    需要导入的依赖

    //RecyclerView依赖
    	implementation 'com.android.support:recyclerview-v7:28.0.0'
    
    //Glide加载图片的依赖
    	implementation 'com.github.bumptech.glide:glide:4.8.0'
    

    Activity或fragment中创RecyclerView的逻辑代码

    //获取资源id
            recyclerView=view.findViewById(R.id.recycler);
            //创建线性管理器
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
            //设置线性方向(VERTICAL垂直方向,HORIZONTAL水平方向)
            linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
            //设置布局管理器
            recyclerView.setLayoutManager(linearLayoutManager);
            //创建适配器
            linearAdapter = new LinearAdapter(getActivity());
            //设置适配器
            recyclerView.setAdapter(linearAdapter);
            //设置分割线与线性布局的方向要保持一致
            DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(getActivity(), OrientationHelper.VERTICAL);
            //自定义分割线
            dividerItemDecoration.setDrawable(ContextCompat.getDrawable(getActivity(),R.drawable.recycler_divider_horizontal));
            recyclerView.addItemDecoration(dividerItemDecoration);
            //加载数据
            iPresenter.getRequeryData(Apis.URL_HOME,new HashMap<String, String>(),UserBean.class);
            //设置增加或删除条目的动画
            recyclerView.setItemAnimator(new DefaultItemAnimator());
             //调用适配器里点击事件的监听
            linearAdapter.setClickListener(new LinearAdapter.Click() {
                @Override
                public void onClick(int position) {
                    linearAdapter.removeData(position);
                }
    
                @Override
                public void onLongClick(int position) {
    
                }
            });
    

    对应的适配器

    package com.example.recycleview.adapter;
    
    import android.content.Context;
    import android.support.annotation.NonNull;
    import android.support.constraint.ConstraintLayout;
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import com.bumptech.glide.Glide;
    import com.example.recycleview.R;
    import com.example.recycleview.bean.UserBean;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class LinearAdapter extends RecyclerView.Adapter<LinearAdapter.ViewHolder> {
        private Context context;
        private List<UserBean.DataBean> list;
        public LinearAdapter(Context context) {
            this.context = context;
            list=new ArrayList<>();
        }
        //传递数据的方法
        public void setList(List<UserBean.DataBean> data) {
            list.clear();
            if (data!=null){
                list.addAll(data);
            }
            notifyDataSetChanged();
        }
        //自定义ViewHolder
        static class ViewHolder extends RecyclerView.ViewHolder {
            public final TextView name;
            public final ImageView icon;
            public final ConstraintLayout constraintLayout;
            public ViewHolder(@NonNull View itemView) {
                super(itemView);
                name=itemView.findViewById(R.id.name);
                icon=itemView.findViewById(R.id.icon);
                constraintLayout=itemView.findViewById(R.id.constraintlayout);
            }
        }
        @NonNull
        @Override
        public LinearAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            //获取数据展示子条目
            View view = LayoutInflater.from(context).inflate(R.layout.list_item,viewGroup,false);
            //创建ViewHolder实例并传入子条目布局
            return new ViewHolder(view);
        }
    
        @Override
        public void onBindViewHolder(@NonNull LinearAdapter.ViewHolder viewHolder, final int i) {
            //获取list集合对应下标的数据dataBean
            UserBean.DataBean dataBean = list.get(i);
            //给子条目控件赋值
            viewHolder.name.setText(dataBean.getName());
            Glide.with(context).load(dataBean.getIcon()).into(viewHolder.icon);
            //设置点击事件
            viewHolder.constraintLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (click!=null){
                        click.onClick(i);
                    }
                }
            });
            //设置长按监听事件
            viewHolder.constraintLayout.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    if (click!=null){
                        click.onLongClick(i);
                    }
                    return true;
                }
            });
        }
    
        @Override
        public int getItemCount() {
            return list.size();
        }
        //添加数据
        private void addData(int position, UserBean.DataBean dataBean){
            list.add(position,dataBean);
            notifyItemInserted(position);
        }
        //删除条目数据
        public void removeData(int position) {
            list.remove(position);
            //必须使用notifyItemRemoved 才能加载移除动画
            notifyItemRemoved(position);
            notifyItemRangeChanged(position,list.size());
        }
        //声明接口
        Click click;
        public void setClickListener(Click click){
            this.click=click;
        }
        //自定义接口
        public interface Click{
        //点击事件方法
            void onClick(int position);
           //长按事件的方法
            void onLongClick(int position);
        }
    
    }
    

    线性布局创建管理器:

    线性布局创建管理器:
     //创建线性管理器
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
            //设置线性方向(VERTICAL垂直方向,HORIZONTAL水平方向)
            linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
    

    网格布局创建管理器:

     //创建管理器  (mSpanCount表示展示几列或几行)private final int mSpanCount=3;
            GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), mSpanCount);
            //设置方向
            gridLayoutManager.setOrientation(OrientationHelper.VERTICAL);
              //设置管理器
            recyclerView.setLayoutManager(gridLayoutManager);
            //设置分割线需要自定义view实现
        
    

    流式布局创建管理器:

     //创建管理器  (mSpanCount表示展示几列或几行)private final int mSpanCount=3;
     //StaggeredGridLayoutManager.VERTICAL   表示方法
            StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(mSpanCount, StaggeredGridLayoutManager.VERTICAL);
            //给RecyclerView设置布局管理器
            recyclerView.setLayoutManager(staggeredGridLayoutManager);
            //设置分割线需要自定义view实现
        
    

    三个布局适配器需要继承不同之外:其他的三个布局都一致

    线性布局适配器需要继承:RecyclerView.Adapter<LinearAdapter.ViewHolder>
    LinearAdapter.ViewHolder:自身适配器中的内部类ViewHolder
    网格布局适配器需要继承: RecyclerView.Adapter<GridAdapter.ViewHolder>
    GridAdapter.ViewHolder:自身适配器中的内部类ViewHolder
    流式布局适配器需要继承:RecyclerView.Adapter <FiowAdapter.ViewHolder>
    FiowAdapter.ViewHolder:自身适配器中的内部类ViewHolder
    
    展开全文
  • Blender 软件 四视图布局的创建方法

    万次阅读 2016-08-13 12:07:16
    Blender 软件 四视图布局的创建方法我使用的Blender版本:Blender V 2.77Q: 为什么要创建一个:四视图布局场景? A: 原因1:四视图布局最适合模型建模。原因2:在 Blender 软件自带的布局中,没有四视图布局 。...
  • EasyUI中两种创建窗口布局的方法

    千次阅读 2016-12-19 15:20:48
    在easyUI中,Window窗口控件是一个浮动和可拖拽面板可以用作应用...一般在去创建Window窗口时候有两种方法可以解决: 1、在页面标签中创建:<div id="win" class="easyui-window" title="My Window" style="width:
  • 采用这种方法创建布局的方式主要有以下几步: 使用Container.setLayout(null)的方式取消布局管理器 使用Compon.setBounds()的方式来设置每个组件的大小 下面先上代码 import javax.swing.*; import java.awt.*; ...
  • 非常好的创建等高知识文章,收藏起来。 高度相等列在Web页面设计中永远是一个网页设计师需求。...大家都知道当初Table实现等高列布局是多么简单,但是我们使用CSS来创建等高列布局并非是那
  • 绝大多数网页设计者都熟悉传统的网页设计技术,用这些技术可以生成带有表格、创建固定宽度布局或者“液态”(它可以根据用户浏览器窗口宽度自动伸缩)布局的网页。 现在,我们都开始抛弃基于表格的布局技
  • 本文介绍一种用CSS的float和clear属性来获得三栏布局的方法。  绝大多数网页设计者都熟悉传统的网页设计技术,用这些技术可以生成带有表格、创建固定宽度布局或者“液态”(它可以根据用户浏览器窗口宽
  • 主要介绍了解决Eclipse创建android项目无法正常预览布局文件问题的方法,需要的朋友可以参考下
  • 典型顶级布局为:a trunk directory to hold the "main line" of development, a branches directory to contain branch copies, ...
  • 用CSS的float和clear创建三栏液态布局的方法三栏布局是目前最常见的网页布局,主要页内容放在中间一栏,边上的两栏放置导航链接之类的内容。基本布局一般是标题之下放置三栏,三栏占据整个页面的宽度,最后在页的...
  • 最近正在考虑写一篇关于CSS等高布局的文章,今天就在微博上看到W3CPlus上发表的一篇文章《八种创建等高列布局》,看了也是颇有收获,特收藏于此,也同大家分享。 高度相等列在Web页面设计中永远是一个网页设计师的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,398
精华内容 2,559
关键字:

创建布局的方法