项目冲刺:app加载界面

转自他人,但记不清了
public class ProgressView extends View { private RectF mRectF; private Paint mPaint; private int paintColor;//画笔颜色 private int mStrokeWidth=8;//进度条圆弧宽度 private float mMaxProgress=100;//最大进度条 private float mProgress=0; public ProgressView(Context context) { this(context,null); } public ProgressView(Context context, @Nullable AttributeSet attrs) { this(context,attrs,0); } public ProgressView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context,attrs,defStyleAttr); mRectF=new RectF(); mPaint=new Paint(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int width=this.getWidth(); int height=this.getHeight(); if(width!=height) { int min= Math.min(width,height); width=min; height=min; } // 位置 mRectF.left=mStrokeWidth/2; mRectF.top=mStrokeWidth/2; mRectF.right=width-mStrokeWidth/2; mRectF.bottom=height-mStrokeWidth/2; //设置画布为透明 canvas.drawColor(Color.TRANSPARENT); //画半个透明的圆当背景 mPaint.setColor(Color.parseColor("#33000000")); mPaint.setStyle(Paint.Style.FILL); canvas.drawOval(mRectF,mPaint); //设置笔画 mPaint.setAntiAlias(true); mPaint.setColor(paintColor); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(mStrokeWidth); canvas.drawArc(mRectF,-90,-(mProgress/mMaxProgress)*360,false,mPaint); } /** * 设置画笔颜色 * @param color */ public void setPaintColor(String color) { paintColor= Color.parseColor(color); } /** * 设置最大进度的事件 * @param time 倒计时时间 毫秒值 */ public void startDownTime(final long time,final OnFinishListener listener) { mMaxProgress=100; new Thread(new Runnable() { @Override public void run() { for(int i=(int)mMaxProgress;i>=0;i--) { try { Thread.sleep((long)(time/mMaxProgress)); //当倒计时结束时通知 if(i==0&&listener!=null) { post(new Runnable() { @Override public void run() { listener.onFinish(); } }); } } catch (InterruptedException e) { e.printStackTrace(); } mProgress=(float)i; com.example.yunzhi.ProgressView.this.postInvalidate(); } } }).start(); } }
public class Msg {
    public static final int TYPE_SENT = 1;
    public static final int TYPE_RECEIVED = 0;
    public String content;
    private int type;

    public Msg(String content, int type) {
        this.content = content;
        this.type = type;
    }

    public String getContent() {
        return content;
    }

    public int getType() {
        return type;
    }
}

  

public class MsgAdapter extends RecyclerView.Adapter<MsgAdapter.ViewHolder>{

    private List<Msg> mMsgList;

    static class ViewHolder extends RecyclerView.ViewHolder {

        LinearLayout leftLayout;
        LinearLayout rightLayout;
        TextView leftMsg;
        TextView rightMsg;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            leftLayout = itemView.findViewById(R.id.left_layout);
            rightLayout = itemView.findViewById(R.id.right_layout);
            leftMsg = itemView.findViewById(R.id.left_msg);
            rightMsg = itemView.findViewById(R.id.right_msg);
        }
    }

    public MsgAdapter(List<Msg> mMsgList) {
        this.mMsgList = mMsgList;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).
                inflate(R.layout.msg_item, viewGroup, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
        Msg msg = mMsgList.get(i);

        if (msg.getType() == Msg.TYPE_RECEIVED) {
            viewHolder.leftLayout.setVisibility(View.VISIBLE);
            viewHolder.rightLayout.setVisibility(View.GONE);
            viewHolder.leftMsg.setText(msg.getContent());
        } else {
            viewHolder.leftLayout.setVisibility(View.GONE);
            viewHolder.rightLayout.setVisibility(View.VISIBLE);
            viewHolder.rightMsg.setText(msg.getContent());
        }
    }

    @Override
    public int getItemCount() {
        return mMsgList.size();
    }
}

  

public class SplashActivity extends AppCompatActivity {

    private ProgressView mProgressView;
    private RelativeLayout mRelEnter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);//隐藏状态栏
        ActionBar actionBar=getSupportActionBar();
        if(actionBar!=null) {
            actionBar.hide();
        }
        setContentView(R.layout.activity_splash);

        initView();
    }
    private void initView()
    {
        mRelEnter=(RelativeLayout)findViewById(R.id.rl_center);
        mProgressView=(ProgressView)findViewById(R.id.progress);

        //跳过点击事件
        mRelEnter.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                enterMain();
            }
        });

        //设置进度条颜色
        mProgressView.setPaintColor("#ff0000");
        //开始倒计时
        mProgressView.startDownTime(3500, new OnFinishListener() {
            @Override
            public void onFinish() {
                enterMain();
            }
        });
    }

    private void enterMain()
    {
        startActivity(new Intent(this,MainActivity.class));
        finish();
    }
}

  

public interface OnFinishListener {
    void onFinish();
}

  

posted @ 2021-04-25 22:26  新古董  阅读(40)  评论(0)    收藏  举报