专栏名称: 安卓开发精选
伯乐在线旗下账号,分享安卓应用相关内容,包括:安卓应用开发、设计和动态等。
目录
相关文章推荐
开发者全社区  ·  权力是最好的老公 ·  昨天  
开发者全社区  ·  阿娇的吨位 ·  2 天前  
开发者全社区  ·  医院的微波炉为何要上锁? ·  2 天前  
开发者全社区  ·  约会软件的秘密 ·  3 天前  
开发者全社区  ·  2025年春节就去北京,感受北京的春节氛围, ... ·  3 天前  
51好读  ›  专栏  ›  安卓开发精选

安卓当下最流行的吸顶效果的实现(上)

安卓开发精选  · 公众号  · android  · 2017-01-12 21:12

正文

(点击上方公众号,可快速关注)

来源:李诗雨   

http://blog.csdn.net/cjm2484836553/article/details/53453982

如有好文章投稿,请点击 → 这里了解详情


开始逐渐领略到ItemDecoration的美~


今天让我 使用 ItemDecoration 来完成 可推动的悬浮导航栏的效果,最终实现的效果如下图:



具体实现步骤如下:


根据我前面的文章所讲的RecyclerView的基本使用,我们先来完成基本的recyclerView:


第一步:布局里写一个RecyclerView


第二步:实例化


recyclerView = (RecyclerView) findViewById(R.id.recyclerView);


第三步:获取所需的数据 (这里我们来个真实点的情景,去联网请求数据)


/**

    * 联网请求所需的url

    */  

   public String url="http://api.meituan.com/mmdb/movie/v2/list/rt/order/coming.json?ci=1&limit=12&token=&__vhost=api.maoyan.com&utm_campaign=AmovieBmovieCD-1&movieBundleVersion=6801&utm_source=xiaomi&utm_medium=android&utm_term=6.8.0&utm_content=868030022327462&net=255&dModel=MI%205&uuid=0894DE03C76F6045D55977B6D4E32B7F3C6AAB02F9CEA042987B380EC5687C43&lat=40.100673&lng=116.378619&__skck=6a375bce8c66a0dc293860dfa83833ef&__skts=1463704714271&__skua=7e01cf8dd30a179800a7a93979b430b2&__skno=1a0b4a9b-44ec-42fc-b110-ead68bcc2824&__skcy=sXcDKbGi20CGXQPPZvhCU3%2FkzdE%3D";


//联网获取数据  

       getDataFromNet();


/**

     * 使用okhttpUtils进行联网请求数据

     */  

    private void getDataFromNet() {  

        OkHttpUtils.  

                get()  

                .url(url)  

                .build()  

                .execute(new StringCallback() {  

                    @Override  

                    public void onError(okhttp3.Call call, Exception e, int id) {  

                        Log.e("TAG", "联网失败" + e.getMessage());  

                    }  

  

                    @Override  

                    public void onResponse(String response, int id) {  

                        Log.e("TAG", "联网成功==" + response);  

  

                        //联网成功后使用fastjson解析  

                        processData(response);  

                    }  

                });  

    }


/**

     * 使用fastjson进行解析

     *

     * @param json

     */  

    private void processData(String json) {  

        //这里使用GsonFormat生成对应的bean类  

       JSONObject jsonObject = parseObject(json);  

  

        String data = jsonObject.getString("data");  

        JSONObject dataObj = JSON.parseObject(data);  

  

        String coming = dataObj.getString("coming");  

        ListWaitMVBean.DataBean.ComingBean> comingslist = parseArray(coming, WaitMVBean.DataBean.ComingBean.class);  

  

        //测试是否解析数据成功  

//        String strTest = comingslist.get(0).getCat();  

//        Log.e("TAG", strTest + "222");  

  

         //解析数据成功,设置适配器-->  

        

        }  

  

    }


第四步:解析数据成功后,创建并设置适配器,并传递相关数据


//解析数据成功,设置适配器  

           MyRecyclerAdapter adapter = new MyRecyclerAdapter( mContext,comingslist);  

           recyclerView.setAdapter(adapter);


适配器:


public class MyRecyclerAdapter extends RecyclerView.Adapter {  

  

    private final ListWaitMVBean.DataBean.ComingBean> comingslist;  

    private final Context mContext;  

    private final LayoutInflater mLayoutInflater;  

  

  

    public MyRecyclerAdapter(Context mContext, ListWaitMVBean.DataBean.ComingBean> comingslist) {  

        this.mContext = mContext;  

        this.comingslist = comingslist;  

        mLayoutInflater = LayoutInflater.from(mContext);  

    }  

  

    @Override  

    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {  

        return new MyViewHolder(mLayoutInflater.inflate(R.layout.date_item, null));  

    }  

  

    @Override  

    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {  

        MyViewHolder myholder = (MyViewHolder) holder;  

        myholder.setData(position);  

    }  

  

    @Override  

    public int getItemCount() {  

        return comingslist.size();  

    }  

  

    class MyViewHolder extends RecyclerView.ViewHolder {  

        private TextView mv_name;  

        private TextView mv_dec;  

        private TextView mv_date;  

        private ImageView imageView;  

  

        public MyViewHolder(View itemView) {  

            super(itemView);  

            mv_name = (TextView) itemView.findViewById(R.id.mv_name);  

            mv_dec = (TextView) itemView.findViewById(R.id.mv_dec);  

            mv_date = (TextView) itemView.findViewById(R.id.mv_date);  

            imageView = (ImageView) itemView.findViewById(R.id.image);  

        }  

  

        public void setData(int position) {  

            WaitMVBean.DataBean.ComingBean coming = comingslist.get(position);  

  

            String name = coming.getNm();  

            mv_name.setText(name);  

  

            String date = coming.getShowInfo();  

            mv_date.setText(date);  

  

            String dec = coming.getScm();  

            mv_dec.setText(dec);  

  

            //注:当你发下图片无法打开是,做个字符串替换即可  

            String imagUrl = coming.getImg();  

            String newImagUrl = imagUrl.replaceAll("w.h", "50.80");  

  

            //使用Glide加载图片  

            Glide.with(mContext)  

                    .load(newImagUrl)  

                    .into(imageView);  

        }  

    }  

}


item的布局:


xml version="1.0" encoding="utf-8"?>  

LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

    android:layout_width="wrap_content"  

    android:layout_height="wrap_content"  

    android:background="#ffffff"  

    android:gravity="center_vertical"  

    android:orientation="horizontal">  

  

    ImageView  

        android:id="@+id/image"  

        android:layout_width="70dp"  

        android:layout_height="110dp"  

        android:layout_marginBottom="5dp"  

        android:layout_marginLeft="10dp"  

        android:layout_marginRight="8dp"  

        android:layout_marginTop="5dp" />  

  

    LinearLayout  

        android:layout_width="0dp"  

        android:layout_height="wrap_content"  

        android:layout_marginLeft="6dp"  

        android:layout_weight="1"  

        android:orientation="vertical">  

  

        TextView  

            android:id="@+id/mv_name"  

            android:layout_width="wrap_content"  

            android:layout_height="wrap_content"  

            android:text="神奇動物在哪裏"  

            android:textColor="#000000"  

            android:textSize="15sp" />  

  

        LinearLayout  

            android:layout_width="wrap_content"  

            android:layout_height="wrap_content"  

            android:orientation="horizontal">  

  

            TextView  

                android:layout_width="wrap_content"  

                android:layout_height="wrap_content"  

                android:text="观众"  

                android:textColor="#55000000"  

                android:textSize="14sp" />  

  

            TextView  

                android:id="@+id/tv_people"  

                android:layout_width="wrap_content"  

                android:layout_height="wrap_content"  

                android:text="9.0 "  

                android:textColor="#FFCE42"  

                android:textSize="18sp" />  

  

            TextView  

                android:layout_width="wrap_content"  

                android:layout_height="wrap_content"  

                android:text=" | 专业"  

                android:textColor="#55000000"  

                android:textSize="14sp" />  

  

            TextView  

                android:id="@+id/tv_professional"  

                android:layout_width="wrap_content"  

                android:layout_height="wrap_content"  

                android:text="6.7"  

                android:textColor="#FFCE42"  

                android:textSize="18sp" />  

        LinearLayout>  

          

        TextView  

            android:id="@+id/mv_dec"  

            android:layout_width="wrap_content"  

            android:layout_height="wrap_content"  

            android:layout_marginTop="8dp"  

            android:text="神奇動物城,法師顯超能"  

            android:textColor="#99000000"  

            android:textSize="11sp" />  

  

        TextView  

            android:id="@+id/mv_date"  

            android:layout_width="wrap_content"  

            android:layout_height="wrap_content"  

            android:layout_marginTop="10dp"  

            android:text="今天165家影院放映2088场"  

            android:textColor="#99000000"  

            android:textSize="11sp" />  

    LinearLayout>  

  

LinearLayout>


第五步:一定不能忘!!!


recycleView不仅要设置适配器还要设置布局管理者,否则图片不显示


GridLayoutManager manager = new GridLayoutManager(this, 1);  

            recyclerView.setLayoutManager(manager);


此时RecyclerView简单的完成效果如下:



下面开始做 可推动的 悬浮导航栏:


接下文


看完本文有收获?请分享给更多人

 关注「安卓开发精选」,提升安卓开发技术