recyclerView+adapter+viewpaper实现滑动左右翻页

重点:

//点击事件等需要写在adapter的holder中,如果写在fragment中会最后一页的pisition显示set效果,如果写在holder外会当前页的最后一个元素显示set效果

//1.这是R.layout.recycleview

<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/list"></androidx.recyclerview.widget.RecyclerView>
	
	
	


//2.fragment中运用recyclerView
RecyclerView  recyclerView;

recyclerView = (RecyclerView) inflater.inflate(R.layout.recycleview, viewPager, false);//recyclerView的xml放在这里
recyclerView.setLayoutManager(new GridLayoutManager(getContext(), 6));//一行6个

mAdapter = new ManagerAdapter((List<Manager>) mData, versionMap, mContext, index, HOME_ENTRANCE_PAGE_SIZE);


//3.adapter中

//用来连接adapter_app_list以及放入ViewHolder
@Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        Log.d(TAG, "onCreateViewHolder() called with: parent = [" + parent + "], viewType = [" + viewType + "]");
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_app_list,parent,false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }
	
	//用来修改UI的
	@Override
    public void onBindViewHolder(ViewHolder holder, @SuppressLint("RecyclerView") int position) {
        Log.d(TAG, "onBindViewHolder() called with: holder = [" + holder + "], position = [" + position + "]");
        this.holder = holder;
        this.position = position;
        res = mContext.getResources();
        recyclerViewData();
        if (progressBar!=null) {
            //progressBar  Listener
            progressBar.setOnAnimProgressListener(new CircularProgressView.OnAnimProgressListener() {
                @Override
                public void valueUpdate(int progress) {
                }s
            });
        }
    }
	
//重点在此方法中,参数可以自定义
 /**
     * 
     * @param data  需要放入recyclerView的数据
     * @param versionMap  我自己定义的数据,我需要用,一般用不上,app版本
     * @param context 上下文,mContext.getResources();用来获取资源的,比如图片
     * @param index  页数下标,从0开始(通俗讲第几页)   自己定义的
     * @param pageSize  一页最多数据,自己定义
     */
    public ManagerAdapter(List<Manager> data, Map<Long, String> versionMap, Context context, int index, int pageSize){
        Log.d(TAG, "ManagerAdapter() called with: data = [" + data.toString() + "], context = [" + context + "]");
        this.mData = data;
        this.mContext = context;
        this.mIndex = index;
        this.mPageSize = pageSize;
        this.versionMap = versionMap;
    }
	
	
	
	//第二个重点,用来定义UI参数的,呼应public class ManagerAdapter extends RecyclerView.Adapter<ManagerAdapter.ViewHolder> implements Handler.Callback{中的ManagerAdapter.ViewHolder
	class ViewHolder extends RecyclerView.ViewHolder{
        ImageView imgIcon;
        TextView tvName;
        TextView tvVersion;
        TextView tvState;
        CircularProgressView progressBar;
        ImageView imgDel ;
        ImageView imgBgDelBlue;
        ImageView imgBgDelGrey;
        TextView btnState;

        public ViewHolder(View itemView) {
            super(itemView);
            Log.d(TAG, "ViewHolder() called with: itemView = [" + itemView + "]");
            imgIcon = itemView.findViewById(R.id.img_icon);
            tvName = itemView.findViewById(R.id.tv_name);
            tvVersion = itemView.findViewById(R.id.tv_version);
            tvState = itemView.findViewById(R.id.btn_state);
            progressBar = itemView.findViewById(R.id.bar_manager);
            imgDel = itemView.findViewById(R.id.img_icon_del);
            imgBgDelBlue = itemView.findViewById(R.id.bg_icon);
            imgBgDelGrey = itemView.findViewById(R.id.bg_icon1);
            btnState = itemView.findViewById(R.id.btn_state);
            
            //点击事件等需要写在adapter的holder中,如果写在fragment中会最后一页的pisition显示set效果,如果写在holder外会当前页的最后一个元素显示set效果
            imgIcon.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    clickInterface.onIconClick(view,getAdapterPosition());
                }
            });

            btnState.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (clickInterface != null){
                        Log.d(TAG, "vvvv"+R.id.bg_icon);
                        clickInterface.onButtonClick(v,getAdapterPosition());
                        ManagerAdapter.progressBar = progressBar;
                        if (btnState.getText().equals(Constant.STATE_UPDATE) ){
                            imgBgDelGrey.setVisibility(v.VISIBLE);
                            imgBgDelBlue.setVisibility(v.VISIBLE);
                            progressBar.setVisibility(View.VISIBLE);

                                                    progressBar.setStatus(CustomCircleProgress.Status.Starting);
                            Message message = Message.obtain();
                            message.what = PROGRESS_CIRCLE_STARTING;
                            handler = new Handler(ManagerAdapter.this);
                            handler.sendMessage(message);
//                            excuteProgress();
                        }
                    }
                }
            });
        }
    }

java

fragment(activity)

注意:LinearLayout.LayoutParams layoutParams12 = ...
        //首页菜单分页
        LinearLayout.LayoutParams entrancelayoutParams = ...
        homeEntranceLayout.setLayoutParams(entrancelayoutParams);
        viewPager.setLayoutParams(layoutParams12);

1.entrancelayoutParams的类型要是viewpaper父层的类型。

2.layoutParams12要是viewpaper的类型

重点中的重点:其中包含item点击事件(改,点击事件不写在fragment中,因为set点击事件是在for循环中,导致set的adapter永远是最后一页,效果也会在最后一页,在adapter的holder中写点击事件,可以set值给adapter使用)!!!!!!!!!!

private ManagerAdapter mAdapter = null;
    private RecyclerView recyclerView;
    private LinearLayout homeEntranceLayout;
    private ViewPager viewPager;
private void viewPagerPaging() {
        LinearLayout.LayoutParams layoutParams12 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) ((float) ScreenUtil.getScreenWidth() / 2.0f));
        //首页菜单分页
        LinearLayout.LayoutParams entrancelayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) ((float) ScreenUtil.getScreenWidth() / 2.0f + 70));
        homeEntranceLayout.setLayoutParams(entrancelayoutParams);
        viewPager.setLayoutParams(layoutParams12);
        LayoutInflater inflater = LayoutInflater.from(getContext());
        //将RecyclerView放至ViewPager中:
        int pageSize = HOME_ENTRANCE_PAGE_SIZE;
        //一共的页数等于 总数/每页数量,并取整。
        int pageCount = (int) Math.ceil(mData.size() * 1.0 / pageSize);
        List<View> viewList = new ArrayList<View>();

        for (int index = 0; index < pageCount; index++) {
            //每个页面都是inflate出一个新实例
            recyclerView = (RecyclerView) inflater.inflate(R.layout.recycleview, viewPager, false);
            recyclerView.setLayoutParams(layoutParams12);
            recyclerView.setLayoutManager(new GridLayoutManager(getContext(), 6));

            mAdapter = new ManagerAdapter((List<Manager>) mData, versionMap, mContext, index, HOME_ENTRANCE_PAGE_SIZE);
            mAdapter.setOnclick(new ManagerAdapter.ClickInterface() {
                @Override
                public void onButtonClick(View view, int position) {
                    Log.d(TAG, "onButtonClick() called with: Click Button - position:" + position + "name:" + mData.get(position).getName());
                    statusBtnClick(view, position);
                }

                @Override
                public void onIconClick(View view, int position) {
                    Log.d(TAG, "onIconClick() called with: Click Icon - position:" + position + "name:" + mData.get(position).getName());
                    View itemView = recyclerView.getLayoutManager().findViewByPosition(position);
                    TextView state = itemView.findViewById(R.id.btn_state);
                    ImageView imgDel = itemView.findViewById(R.id.img_icon_del);
                    ImageView imgBgDelBlue = itemView.findViewById(R.id.bg_icon);;
                    ImageView imgBgDelGrey = itemView.findViewById(R.id.bg_icon1);
                    if (state.getText().toString().equals(Constant.STATE_INSTALL)) {
                        imgDel.setVisibility(View.VISIBLE);
                        imgBgDelBlue.setVisibility(View.VISIBLE);
                        imgBgDelBlue.setAlpha(0.7f);
                        imgBgDelGrey.setVisibility(View.VISIBLE);
                        imgBgDelGrey.setAlpha(0.7f);
                        getPresenter().showDialogMsg(getString(R.string.DIALOG_BTN_DEL));
                    } else {
                        changeToOtherFragment(false, view, position);
                    }
                }
            });
            mAdapter.setOnLongClick(new ManagerAdapter.LongClickInterface() {
                @Override
                public void onIconLongClick(View view, int position) {
                    Log.d(TAG, "onIconLongClick() called with: view = [" + view + "], position = [" + position + "]");
                    mPosition = position;
                    getPresenter().showDialogMsg(Constant.DIALOG_BTN_DEL);
                }
            });
            recyclerView.setAdapter(mAdapter);
            recyclerView.setNestedScrollingEnabled(false);
            viewList.add(recyclerView);
        }

        ViewPagerAdapter adapter = new ViewPagerAdapter(viewList);
        viewPager.setAdapter(adapter);
        viewPager.addOnPageChangeListener((new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                Log.d(TAG, "onPageSelected() called with: position = [" + position + "]");
            }
        }));
    }

recyclerView的adapter

package com.fawcar.dlife6.appmarket.adapter;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.BitmapDrawable;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import com.fawcar.dlife6.appmarket.R;
import com.fawcar.dlife6.appmarket.bean.Manager;
import com.fawcar.dlife6.appmarket.util.Constant;
import com.fawcar.dlife6.appmarket.util.CustomCircleProgress;
import com.fawcar.dlife6.downloadcore.bean.FileInfo;
import com.fawcar.dlife6.downloadcore.manager.DownLoadManager;
import com.fawcar.dlife6.downloadcore.request.DownLoadRequest;
import com.fawcar.dlife6.tspsdk.manager.TspManager;
//import com.fawcar.dlife6.sotacore.manager.CheckManager;

import java.util.List;
import java.util.Map;

public class ManagerAdapter extends RecyclerView.Adapter<ManagerAdapter.ViewHolder> implements Handler.Callback{
    private static final String TAG = ManagerAdapter.class.getSimpleName();
    public static final int PROGRESS_CIRCLE_STARTING = 0x110;
    public static final int PROGRESS_CIRCLE_CANCEL = 0x111;
    private static CustomCircleProgress progressBar;

    private List<Manager> mData;
    private Context mContext;
    private Resources res;
    private ViewHolder holder;
    private int position;
    //页数下标,从0开始(通俗讲第几页)
    private int mIndex;
     //每页显示最大条目个数
    private int mPageSize;
    private ClickInterface clickInterface;
    private Manager manager;
    private Handler handler;
    private int progress = 0;
    private TextView textView;
    private Runnable runnable;
    private Map<Long,String> versionMap;

    /**
     *
     * @param data
     * @param versionMap
     * @param context
     * @param index
     * @param pageSize
     */
    public ManagerAdapter(List<Manager> data, Map<Long, String> versionMap, Context context, int index, int pageSize){
        Log.d(TAG, "ManagerAdapter() called with: data = [" + data.toString() + "], context = [" + context + "]");
        this.mData = data;
        this.mContext = context;
        this.mIndex = index;
        this.mPageSize = pageSize;
        this.versionMap = versionMap;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        Log.d(TAG, "onCreateViewHolder() called with: parent = [" + parent + "], viewType = [" + viewType + "]");
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_app_list,parent,false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, @SuppressLint("RecyclerView") int position) {
        Log.d(TAG, "onBindViewHolder() called with: holder = [" + holder + "], position = [" + position + "]");
        this.holder = holder;
        this.position = position;
        res = mContext.getResources();
        recyclerViewData();
        
        initProgress();
    }

    private void initProgress() {
        progressBar = holder.progressBar;
    }

    private void recyclerViewData() {
        /**
         * 在给View绑定显示的数据时,计算正确的position = position + mInex * mPageSize,
         */
        final int pos = position + mIndex * mPageSize;
        manager = mData.get(pos);
        String version = versionMap.get(manager.getSid());

        holder.tvName.setText(manager.getName());


        holder.tvVersion.setText("v"+version);

        if (manager.getCompare() > 0){
            holder.btnState.setText(Constant.STATE_UPDATE);
        }else if (manager.getCompare() == 0){
            holder.btnState.setText(Constant.STATE_OPEN);
        }else if (manager.getCompare() == -1){
            holder.btnState.setText(Constant.STATE_INSTALL);
        }else {
            holder.btnState.setText(Constant.STATE_INSTALLING);
        }
        //图片叠加
        setImgIcon();
    }

    private void setImgIcon() {
        BitmapDrawable bitmapDrawable = (BitmapDrawable) res.getDrawable(Integer.parseInt(manager.getIcon()),mContext.getTheme());
        Bitmap managerBitmap = bitmapDrawable.getBitmap();

        int width = holder.imgIcon.getBackground().getIntrinsicWidth();

        //设置图片透明度
        Paint paint = new Paint();
        paint.setAlpha(178); //设置透明程度

        Bitmap bgBitmapBlue = BitmapFactory.decodeResource(res, R.mipmap.bg_app_insatll_1);
        Bitmap bgBitmapGrey = BitmapFactory.decodeResource(res, R.mipmap.bg_app_install_3);
        Bitmap barBitmap;

        Bitmap newBitmap = Bitmap.createBitmap(width, width, Bitmap.Config.ARGB_8888);
        Canvas cv = new Canvas(newBitmap);
        cv.drawBitmap(managerBitmap, 0, 0, null);
        cv.drawBitmap(bgBitmapBlue, 0, 0, paint);
        cv.drawBitmap(bgBitmapGrey, 0, 0, paint);

        String state = holder.btnState.getText().toString();
        switch (state){
            case Constant.STATE_INSTALLING:
                Log.d(TAG, "recyclerViewData() STATE_INSTALLING");
                holder.btnState.setAlpha(0.4f);
//                barBitmap = BitmapFactory.decodeResource(res, R.mipmap.bg_app_install_2);
//                cv.drawBitmap(barBitmap, width/4, width/4, null);
                holder.imgIcon.setImageBitmap(newBitmap);
                break;
            case Constant.STATE_DOWNLOADING:
                Log.d(TAG, "recyclerViewData() STATE_DOWNLOADING");
                progressBar.setStatus(CustomCircleProgress.Status.Starting);
                Message message = Message.obtain();
                message.what = PROGRESS_CIRCLE_STARTING;
                handler.sendMessage(message);
            case Constant.STATE_CONTINUE:
                Log.d(TAG, "recyclerViewData() STATE_CONTINUE");
//                barBitmap = BitmapFactory.decodeResource(res, R.mipmap.bg_app_downloading_1);
//                cv.drawBitmap(barBitmap, width/4, width/4, null);
                holder.imgIcon.setImageBitmap(newBitmap);
                holder.progressBar.setVisibility(View.VISIBLE);
                progressBar = holder.progressBar;
                textView = holder.btnState;
//                excuteProgress();
                break;
            case Constant.STATE_INSTALL:
                Log.d(TAG, "recyclerViewData() STATE_INSTALL");
                holder.imgDel.setVisibility(View.VISIBLE);
                holder.imgBgDelBlue.setVisibility(View.VISIBLE);
                holder.imgBgDelGrey.setVisibility(View.VISIBLE);
                break;
            default:
                Log.d(TAG, "recyclerViewData() default");
                holder.imgIcon.setImageBitmap(managerBitmap);
                break;
        }
    }

//    private void excuteProgress() {
//        handler = new Handler(this);
//        runnable = new Runnable() {
//            @Override
//            public void run() {
//                handler.postDelayed(this, 50);
//                handler.sendEmptyMessage(1);
//            }
//        };
//        handler.postDelayed(runnable, 0);
//    }
    @Override
    public boolean handleMessage(Message message) {
        Log.d(TAG, "handleMessage() called with: message = [" + message + "]");
        switch (message.what){
            case PROGRESS_CIRCLE_STARTING:
                Log.d(TAG, "PROGRESS_CIRCLE_CANCEL() called with: msg = [" + message + "]");
                try {
                    DownLoadManager.getInstance().init(TspManager.getInstance().getBaseUrl());//根据不同资源传递不同初始化地址
                } catch (Exception e) {
                    e.printStackTrace();
                }
                FileInfo info = new FileInfo();
                info.setName("MusicService.apk");
                info.setType(0);
                info.setUrl("https://fawivi-static-public-uat-cdn.faw.cn/sota/C10030000047/apk/MusicService_3.00.00.047.apk");
                info.setTotalSize(1200000);
                info.setSign("1123121213");
                new DownLoadRequest(info, new DownLoadRequest.RequestListener() {
                    @Override
                    public void onDownloadSuccess(boolean allSuccess) {

                    }

                    @Override
                    public void updateProgress(FileInfo info, int process) {
                        Log.d(TAG, "updateProgress() called with: info = [" + info + "], process = [" + process + "]");
                    }
                }).startDownLoad();
                progress = progressBar.getProgress();
                progressBar.setProgress(++progress);
                if(progress >= 100){
                    handler.removeMessages(PROGRESS_CIRCLE_STARTING);
                    progress = 0;
                    progressBar.setProgress(0);
                    progressBar.setStatus(CustomCircleProgress.Status.End);//修改显示状态为完成
                }else{
                    //延迟100ms后继续发消息,实现循环,直到progress=100
                    handler.sendEmptyMessageDelayed(PROGRESS_CIRCLE_STARTING, 100);
                }
                break;
            case PROGRESS_CIRCLE_CANCEL:
                progress = progressBar.getProgress();
                progressBar.setProgress(0);
                break;
        }
        return false;
    }
    @Override
    public int getItemCount() {
        Log.d(TAG, "getItemCount() called");
        return mData.size() > (mIndex + 1) * mPageSize ? mPageSize : (mData.size() - mIndex * mPageSize);
    }

    @Override
    public long getItemId(int position) {
        Log.d(TAG, "getItemId() called with: position = [" + position + "]");
        return position + mIndex * mPageSize;
    }

    class ViewHolder extends RecyclerView.ViewHolder{
        ImageView imgIcon;
        TextView tvName;
        TextView tvVersion;
        CustomCircleProgress progressBar;
        ImageView imgDel ;
        ImageView imgBgDelBlue;
        ImageView imgBgDelGrey;
        TextView btnState;

        public ViewHolder(View itemView) {
            super(itemView);
            Log.d(TAG, "ViewHolder() called with: itemView = [" + itemView + "]");
            imgIcon = itemView.findViewById(R.id.img_icon);
            tvName = itemView.findViewById(R.id.tv_name);
            tvVersion = itemView.findViewById(R.id.tv_version);
            progressBar = itemView.findViewById(R.id.bar_manager);
            imgDel = itemView.findViewById(R.id.img_icon_del);
            imgBgDelBlue = itemView.findViewById(R.id.bg_icon);
            imgBgDelGrey = itemView.findViewById(R.id.bg_icon1);
            btnState = itemView.findViewById(R.id.btn_state);

            imgIcon.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    clickInterface.onIconClick(view,getAdapterPosition());
                }
            });

            btnState.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (clickInterface != null){
                        Log.d(TAG, "vvvv"+R.id.bg_icon);
                        clickInterface.onButtonClick(v,getAdapterPosition());
                        ManagerAdapter.progressBar = progressBar;
                        if (btnState.getText().equals(Constant.STATE_UPDATE) ){
                            imgBgDelGrey.setVisibility(v.VISIBLE);
                            imgBgDelBlue.setVisibility(v.VISIBLE);
                            progressBar.setVisibility(View.VISIBLE);

                            progressBar.setStatus(CustomCircleProgress.Status.Starting);
                            Message message = Message.obtain();
                            message.what = PROGRESS_CIRCLE_STARTING;
                            handler = new Handler(ManagerAdapter.this);
                            handler.sendMessage(message);
//                            excuteProgress();
                        }
                    }
                }
            });

        }
    }

    public void setOnclick(ClickInterface clickInterface){
        Log.d(TAG, "setOnclick() called with: clickInterface = [" + clickInterface + "]");
        this.clickInterface = clickInterface;
    }

    public interface ClickInterface{
        int onButtonClick(View view,int position);
        void onIconClick(View view ,int position);
    }


}

viewpaper的adapter

package com.fawcar.dlife6.appmarket.adapter;

import android.util.Log;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;

import java.util.List;

public class ViewPagerAdapter extends PagerAdapter {
    private static final String TAG = ViewPagerAdapter.class.getSimpleName();

    private List<View> list;

    public ViewPagerAdapter(List<View> list){
        Log.d(TAG, "ViewPagerAdapter() called with: list = [" + list + "]");
        this.list = list;
    }

    @Override
    public void destroyItem(ViewGroup container, int position,@NonNull Object object) {
        container.removeView(list.get(position));
        Log.d(TAG, "destroyItem() called with: container = [" + container + "], position = [" + position + "], object = [" + object + "]");
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull  ViewGroup container, int position) {
        container.addView(list.get(position));
        Log.d(TAG, "instantiateItem() called with: container = [" + container + "], position = [" + position + "]");
        return list.get(position);
    }

    @Override
    public int getCount() {
        Log.d(TAG, "getCount() called");
        if (list == null)
            return 0;
        return list.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        Log.d(TAG, "isViewFromObject() called with: view = [" + view + "], object = [" + object + "]");
        return view == object;
    }
}

xml

recyclerView

<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/list"></androidx.recyclerview.widget.RecyclerView>

adapter

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="256px"
    android:layout_marginTop="25px">


    <ImageView
        android:id="@+id/img_icon"
        android:layout_width="130px"
        android:layout_height="130px"
        android:layout_marginLeft="83px"
        android:layout_marginTop="2px"
        android:background="@drawable/application_desk_selector" />

    <ImageView
        android:id="@+id/bg_icon"
        android:layout_width="130px"
        android:layout_height="130px"
        android:layout_marginLeft="83px"
        android:layout_marginTop="2px"
        android:background="@mipmap/bg_app_insatll_1"
        android:visibility="gone" />

    <ImageView
        android:id="@+id/bg_icon1"
        android:layout_width="130px"
        android:layout_height="130px"
        android:layout_marginLeft="83px"
        android:layout_marginTop="2px"
        android:alpha="20"
        android:background="@mipmap/bg_app_install_3"
        android:visibility="gone" />

    <ImageView
        android:id="@+id/img_icon_del"
        android:layout_width="64px"
        android:layout_height="64px"
        android:layout_marginLeft="116px"
        android:layout_marginTop="35px"
        android:background="@mipmap/ic_app_del"
        android:visibility="gone" />

    <LinearLayout
        android:layout_width="130px"
        android:layout_height="130px"
        android:layout_marginLeft="83px"
        android:layout_marginTop="2px"
        android:gravity="center">

        <com.fawcar.dlife6.appmarket.util.CustomCircleProgress
            android:id="@+id/bar_manager"
            android:layout_width="64px"
            android:layout_height="64px"
            android:visibility="gone" />
    </LinearLayout>

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="160px"
        android:layout_height="32px"
        android:layout_below="@+id/img_icon"
        android:layout_marginLeft="68px"
        android:layout_marginTop="4px"
        android:gravity="center"
        android:text="桌面"
        android:textColor="#FFFFFF"
        android:textSize="26px" />

    <TextView
        android:id="@+id/tv_version"
        android:layout_width="160px"
        android:layout_height="23px"
        android:layout_below="@+id/tv_name"
        android:layout_marginLeft="68px"
        android:layout_marginTop="2px"
        android:gravity="center"
        android:text="V.2.7.8"
        android:textColor="#FFFFFF"
        android:textSize="20px" />

    <TextView
        android:id="@+id/btn_state"
        android:layout_width="146px"
        android:layout_height="64px"
        android:layout_below="@+id/tv_version"
        android:layout_marginLeft="75px"
        android:layout_marginTop="1px"
        android:background="@drawable/btn_desk_selector"
        android:gravity="center"
        android:text="安装"
        android:textColor="#FFFFFF"
        android:textSize="24px" />

</RelativeLayout>

fragment(activity)

<LinearLayout
        android:id="@+id/home_entrance"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <androidx.viewpager.widget.ViewPager
            android:id="@+id/viewPager"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值