我想知道创业myinfoview构造类是干嘛的呀,干嘛要创建这个啊!详解必采纳!这个构造类里面的详解一下,谢谢!
package com.example.boxuegu.view;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.example.boxuegu.R;
import com.example.boxuegu.activity.LoginActivity;
import com.example.boxuegu.utils.UtilsHelper;
public class MyInfoView implements View.OnClickListener{
private LinearLayout ll_head;
private ImageView iv_head_icon;
private TextView tv_user_name;
private RelativeLayout rl_course_history,rl_setting;
private Activity mContext;
private LayoutInflater mInfalter;
private View mCurrentView;
private boolean isLogin=false;//记录登录状态
private MyInfoView myInfoView;
public MyInfoView(Activity context){
mContext=context;
mInfalter=LayoutInflater.from(mContext);
}
@SuppressLint("InflateParams")
private void initView(){
mCurrentView=mInfalter.inflate(R.layout.main_view_myinfo,null);
ll_head=mCurrentView.findViewById(R.id.ll_head);
iv_head_icon=mCurrentView.findViewById(R.id.iv_head_icon);
rl_course_history=mCurrentView.findViewById(R.id.rl_course_history);
rl_setting=mCurrentView.findViewById(R.id.rl_setting);
tv_user_name=mCurrentView.findViewById(R.id.tv_user_name);
mCurrentView.setVisibility(View.VISIBLE);
setLoginParams(isLogin);
ll_head.setOnClickListener(this);
rl_course_history.setOnClickListener(this);
rl_setting.setOnClickListener(this);
}
public void setLoginParams(boolean isLogin) {
if(isLogin){
tv_user_name.setText(UtilsHelper.readLoginUserName(mContext));
}else {
tv_user_name.setText("点击登录");
}
}
@SuppressLint("NonConstantResourceId")
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.ll_head:
if(UtilsHelper.readLoginStatus(mContext)){
//跳转到个人资料界面
}else {
Intent intent=new Intent(mContext, LoginActivity.class);
mContext.startActivityForResult(intent,1);
break;
}
break;
case R.id.rl_course_history:
if(UtilsHelper.readLoginStatus(mContext)){
//跳转播放记录界面
}else{
Toast.makeText(mContext,"您还未登录,请先登录",Toast.LENGTH_SHORT).show();
}
break;
case R.id.rl_setting:
if(UtilsHelper.readLoginStatus(mContext)){
}else{
Toast.makeText(mContext,"您还未登录,请先登录",Toast.LENGTH_SHORT).show();
}
break;
}
}
public View getView(){
isLogin=UtilsHelper.readLoginStatus(mContext);
if(mCurrentView==null){
initView();
}
return mCurrentView;
}
public void showView(){
if(mCurrentView==null){
initView();
}
mCurrentView.setVisibility(View.VISIBLE);
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:SurfaceView
中采用了双缓冲机制,保证了UI界面的流畅性,同时SurfaceView
不在主线程中绘制,而是另开辟一个线程去绘制,所以它不妨碍UI线程;
SurfaceView
继承于View,他和View主要有以下三点区别:
SurfaceView
有;SurfaceView
适用与被动的更新,如频繁的刷新SurfaceView
则在子线程中刷新;SurfaceView
的内容不在应用窗口上,所以不能使用变换(平移、缩放、旋转等)。也难以放在ListView
或者ScrollView
中,不能使用UI控件的一些特性比如View.setAlpha()
View:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢。
SurfaceView
:基于view视图进行拓展的视图类,更适合2D游戏的开发;是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view快,Camera预览界面使用SurfaceView。
GLSurfaceView:基于SurfaceView
视图再次进行拓展的视图类,专用于3D游戏开发的视图;是SurfaceView
的子类,openGL
专用。