频道管理+倒计时跳转1

Android应用框架设计
本文详细介绍了一个基于Android平台的应用框架设计,包括基类Activity和Fragment的抽象实现,自定义Adapter和ListView的使用,以及网络请求、数据库操作和图片加载等关键模块的集成。通过MainActivity和SecondActivity的具体实例,展示了如何实现自动登录、侧滑菜单、多Fragment切换等功能。

1.BaseActivity

public abstract class BaseActivity extends FragmentActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //去掉ActionBar的方法
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(bindLayout());
        initView();
        initData();
        bindEvent();
    }
    public abstract int bindLayout();
    public abstract void initView();
    public abstract void initData();
    public abstract void bindEvent();

}

2.MainActivity

public class MainActivity extends BaseActivity {


    private TextView te;
    private SharedPreferences sp;

    @Override
    public int bindLayout() {
        return R.layout.activity_main;
    }

    @Override
    public void initView() {
        te = findViewById(R.id.te);
        //获取sp   第一个是文件名  第二个参数是文件访问权限
        sp = getSharedPreferences("login", Context.MODE_PRIVATE);
    }

    @Override
    public void initData() {
        //判断是否自动登录
        if(sp.getBoolean("自动登录",false)){
            startActivity(new Intent(MainActivity.this,SecondActivity.class));
            finish();
            //移除
            handler.removeCallbacksAndMessages(null);
            return ;
        }
    }

    @Override
    public void bindEvent() {
        te.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SharedPreferences.Editor edit = sp.edit();
                edit.putBoolean("自动登录",true);
                edit.commit();
                startActivity(new Intent(MainActivity.this,SecondActivity.class));
                finish();
                //移除
                handler.removeCallbacksAndMessages(null);
            }
        });
        //发送消息
        handler.sendEmptyMessageDelayed(0,1000);
    }
    //销毁
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //移除
        handler.removeCallbacksAndMessages(null);
    }

    int time=5;
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case 0:
                    time--;
                    if(time>0){
                        te.setText(time+"");
                        handler.sendEmptyMessageDelayed(0,1000);
                    }else{
                        SharedPreferences.Editor edit = sp.edit();
                        edit.putBoolean("自动登录",true);
                        edit.commit();
                        startActivity(new Intent(MainActivity.this,SecondActivity.class));
                        finish();
                    }
                    break;
            }
        }
    };
}

3.SecondActivity

public class SecondActivity extends BaseActivity {

    private RadioGroup radi;
    private Frag_Fen f2;
    private Frag_Shou f1;
    private Frag_Wd f3;
    private XListView listView;
    private String str="http://www.xieast.com/api/news/news.php?page=2";
    private String str1="http://www.xieast.com/api/news/news.php?page=3";
    private ArrayList<CeDatas> data;
    private CeAdapter adapter;
    private ImageView img;
    private DrawerLayout draw;
    private Dao dao;

    @Override
    public int bindLayout() {
        return R.layout.second_main;
    }

    @Override
    public void initView() {
        radi = findViewById(R.id.radi);
        radi.check(radi.getChildAt(0).getId());
        listView = findViewById(R.id.xlist);
        img = findViewById(R.id.ceimg);
        draw = findViewById(R.id.draw);
        dao = new Dao(SecondActivity.this);
    }

    @Override
    public void initData() {
        String ss="http://image.baidu.com/search/down?tn=download&word=download&ie=utf8&fr=detail&url=http%3A%2F%2Fimg5.duitang.com%2Fuploads%2Fitem%2F201410%2F05%2F20141005082835_2RTzn.thumb.700_0.jpeg&thumburl=http%3A%2F%2Fimg2.imgtn.bdimg.com%2Fit%2Fu%3D3846895839%2C2711067435%26fm%3D26%26gp%3D0.jpg";
        //侧拉的 个人头像设置
        ImageLoader.getInstance().displayImage(ss, img);
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        f2 = new Frag_Fen();
        f1 = new Frag_Shou();
        f3 = new Frag_Wd();
        transaction.add(R.id.frag,f1);
        transaction.add(R.id.frag,f2);
        transaction.add(R.id.frag,f3);
        transaction.hide(f2).hide(f3).show(f1);
        transaction.commit();
        //侧拉里面的数据
        //启用
        listView.setPullLoadEnable(true);
        if(Http.isWork(SecondActivity.this)){
            Http.HttpAsyTask(str, new Http.CallTasks() {
                @Override
                public void getData(String s) {
                    Gson gson=new Gson();
                    CeBean ceBean = gson.fromJson(s, CeBean.class);
                    data = ceBean.getData();
                    //第一次加载数据 判断数据库有没有数据  有就添加 没有不添加
                    if(dao.query("news",null,null,null,null,null,null).moveToFirst()){

                    }else{
                        //没有就添加
                        for (CeDatas da:data) {
                            ContentValues contentValues=new ContentValues();
                            contentValues.put("tit",da.getTitle());
                            contentValues.put("name",da.getAuthor_name());
                            contentValues.put("img",da.getThumbnail_pic_s());
                            dao.insert("news",null, contentValues);
                        }
                    }
                    adapter=new CeAdapter(SecondActivity.this,data);
                    listView.setAdapter(adapter);
                }
            });
        }else{
            //没网的状态下  查询数据库
            Cursor cursor = dao.query("news", null, null, null, null, null, null);
            data=new ArrayList<>();
            if(cursor.moveToFirst()){
                do {
                    String name = cursor.getString(cursor.getColumnIndex("name"));
                    String tit = cursor.getString(cursor.getColumnIndex("tit"));
                    String img = cursor.getString(cursor.getColumnIndex("img"));
                    data.add(new CeDatas(name, img,tit));
                }while (cursor.moveToNext());
            }
            cursor.close();
            Toast.makeText(SecondActivity.this,"没有网络",Toast.LENGTH_LONG).show();
            adapter=new CeAdapter(SecondActivity.this,data);
            listView.setAdapter(adapter);
        }
    }

    @Override
    public void bindEvent() {
        draw.addDrawerListener(new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(@NonNull View view, float v) {

            }

            @Override
            public void onDrawerOpened(@NonNull View view) {
                Toast.makeText(SecondActivity.this,"侧拉打开",Toast.LENGTH_LONG).show();
            }

            @Override
            public void onDrawerClosed(@NonNull View view) {
                Toast.makeText(SecondActivity.this,"侧拉关闭",Toast.LENGTH_LONG).show();
            }

            @Override
            public void onDrawerStateChanged(int i) {

            }
        });
        radi.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                switch (i){
                    case R.id.radi1:
                        transaction.hide(f2).hide(f3).show(f1);
                        break;
                    case R.id.radi2:
                        transaction.hide(f1).hide(f3).show(f2);
                        break;
                    case R.id.radi3:
                        transaction.hide(f2).hide(f1).show(f3);
                        break;
                }
                transaction.commit();
            }
        });
        listView.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {//下拉
                if(Http.isWork(SecondActivity.this)){
                    Http.HttpAsyTask(str, new Http.CallTasks() {
                        @Override
                        public void getData(String s) {
                            Gson gson=new Gson();
                            CeBean ceBean = gson.fromJson(s, CeBean.class);
                            data = ceBean.getData();
                            adapter=new CeAdapter(SecondActivity.this,data);
                            listView.setAdapter(adapter);
                            onLoad();
                        }
                    });
                }

            }

            @Override
            public void onLoadMore() {//上拉加载
                if(Http.isWork(SecondActivity.this)){
                    Http.HttpAsyTask(str1, new Http.CallTasks() {
                        @Override
                        public void getData(String s) {
                            Gson gson=new Gson();
                            CeBean ceBean1=gson.fromJson(s,CeBean.class);
                            ArrayList<CeDatas> data1 = ceBean1.getData();
                            data.addAll(data1);
                            adapter.notifyDataSetChanged();
                            onLoad();
                        }
                    });
                }

            }
        });
    }
    //一个方法
    private void onLoad() {
        //停止加载更多,重置头视图
        listView.stopRefresh();
        //停止加载更多,重置脚视图
        listView.stopLoadMore();
        //设置刷新时间
        listView.setRefreshTime("刷新成功");
    }
}

4.BaseFragment

public abstract class BaseFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(bindLayout(),container,false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initView();
        initData();
        bindEvent();
    }

    //绑定视图
    protected abstract int bindLayout();
    //绑定组件
    protected abstract void initView();
    //操作数据
    protected abstract void initData();
    //设置监听
    protected abstract void bindEvent();

}

5.Http

public class Http {
    //判断有没有网络状态
    public static boolean isWork(Context con){
        if(con!=null){
            ConnectivityManager manager= (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo info = manager.getActiveNetworkInfo();
            if(info!=null){
                    return info.isAvailable();
            }
        }
        return false;
    }
    public static void HttpAsyTask(String str, final CallTasks ca){
         new AsyncTask<String,Integer,String>(){

             @Override
             protected String doInBackground(String... strings) {
                 return isquest(strings[0]);
             }

             @Override
             protected void onPostExecute(String s) {
                 super.onPostExecute(s);
                 ca.getData(s);
             }
         }.execute(str);
    }
    public interface CallTasks{
        void getData(String s);
    }
    public static String isquest(String strUrl){
        try {
            URL url=new URL(strUrl);
            HttpURLConnection connection= (HttpURLConnection) url.openConnection();
            connection.setConnectTimeout(5000);
            connection.setReadTimeout(5000);
            connection.setRequestMethod("GET");
            int code = connection.getResponseCode();
            if(code==200){
                InputStream stream = connection.getInputStream();
                BufferedReader reader=new BufferedReader(new InputStreamReader(stream,"utf-8"));
                StringBuilder builder=new StringBuilder();
                String str="";
                while ((str=reader.readLine())!=null){
                    builder.append(str);
                }
                return builder.toString();
            }
            connection.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

6.Fragment第一个页面

public class Frag_Shou extends BaseFragment {

    private TabLayout tab;
    private ViewPager pager;
    private ArrayList<ChannelItem> tabData=new ArrayList<>();
    private ArrayList<Fragment> arr;
    private TabPagerAdapter adapter;
    private ImageView img;

    @Override
    protected int bindLayout() {
        return R.layout.frag_shou;
    }

    @Override
    protected void initView() {
        tab = getActivity().findViewById(R.id.tab);
        pager = getActivity().findViewById(R.id.pager);
        img = getActivity().findViewById(R.id.tabimg);
    }

    @Override
    protected void initData() {
        //查询数据库
        tabData = DBUtil.getTabData(getActivity());
        //加载Fragment
        arr = new ArrayList<>();
        for (int i = 0; i <tabData.size() ; i++) {
            ChannelItem channelItem = tabData.get(i);
            String name = channelItem.getName();
            if("头条".equals(name)){
                arr.add(new Tab_Shou());
            }else{
                arr.add(new Tab_Null());
            }
        }
        //设置适配器
        adapter = new TabPagerAdapter(getActivity().getSupportFragmentManager(), tabData, arr);
        pager.setAdapter(adapter);
        //绑定  让viewpager和tabLayout关联
        tab.setupWithViewPager(pager);
    }

    @Override
    protected void bindEvent() {
        //点击跳转频道管理
        img.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //跳转Activity
                Intent intent=new Intent(getActivity(), ChannelActivity.class);
                //跳转回传
                startActivityForResult(intent,0);
            }
        });
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //判断是不是我们的回传 回传值是0
        if(resultCode==0){
            //查询数据库中的数据 ,找到我们要展示的Tab标签
            tabData = DBUtil.getTabData(getActivity());
            //便利数据(对数据进行刷新操作)
            for (int i = 0; i <tabData.size() ; i++) {
                ChannelItem channelItem = tabData.get(i);
                String name = channelItem.getName();
                //把数据添加到tab中
                tab.addTab(tab.newTab().setText(name));
                //设置fragment(可以根据名字创建Fragment)
                if("头条".equals(name)){
                    arr.add(new Tab_Shou());
                }else{
                    arr.add(new Tab_Null());
                }
                //设置适配器
                adapter = new TabPagerAdapter(getActivity().getSupportFragmentManager(), tabData, arr);
                pager.setAdapter(adapter);
                //绑定
                tab.setupWithViewPager(pager);
            }
        }
    }
}

7.TabNull

public class Tab_Shou extends BaseFragment {

    private PullToRefreshListView listv;
    private Dao dao;
    private String str="http://www.xieast.com/api/news/news.php?page=5";
    private String str1="http://www.xieast.com/api/news/news.php?page=6";
    private String str2="http://www.xieast.com/api/news/news.php?page=7";
    private ArrayList<CeDatas> data;
    private CeAdapter adapter;

    @Override
    protected int bindLayout() {
        return R.layout.tab_shou;
    }

    @Override
    protected void initView() {
        listv = getActivity().findViewById(R.id.pull);
        //设置模式
        listv.setMode(PullToRefreshBase.Mode.BOTH);
        //刷新的时候可以滑动
        listv.setScrollingWhileRefreshingEnabled(true);
        dao = new Dao(getActivity());
    }

    @Override
    protected void initData() {
        if(Http.isWork(getActivity())){
            Http.HttpAsyTask(str, new Http.CallTasks() {
                @Override
                public void getData(String s) {
                    Gson gson=new Gson();
                    CeBean ceBean = gson.fromJson(s, CeBean.class);
                    data = ceBean.getData();
                    if(dao.query("shou",null,null,null,null,null,null).moveToFirst()){

                    }else{
                        for (CeDatas ca : data) {
                            ContentValues values=new ContentValues();
                            values.put("tit",ca.getTitle());
                            values.put("name",ca.getAuthor_name());
                            values.put("img",ca.getThumbnail_pic_s());
                            dao.insert("shou",null,values);
                        }
                    }
                    adapter = new CeAdapter(getActivity(), data);
                    listv.setAdapter(adapter);
                }
            });
        }else{
            //没有网络  请求数据库
            Cursor cursor = dao.query("shou", null, null, null, null, null, null);
            data=new ArrayList<>();
            if(cursor.moveToFirst()){
                do {
                    String name = cursor.getString(cursor.getColumnIndex("name"));
                    String tit = cursor.getString(cursor.getColumnIndex("tit"));
                    String img = cursor.getString(cursor.getColumnIndex("img"));
                    data.add(new CeDatas(name,img,tit));
                }while (cursor.moveToNext());
            }
            cursor.close();
            Toast.makeText(getActivity(),"没有网络",Toast.LENGTH_LONG).show();
            adapter=new CeAdapter(getActivity(),data);
            listv.setAdapter(adapter);
        }
    }

    @Override
    protected void bindEvent() {
        listv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                //下拉刷新
                //判断有没有网
                if(Http.isWork(getActivity())){
                    Http.HttpAsyTask(str1, new Http.CallTasks() {
                        @Override
                        public void getData(String s) {
                            Gson gson=new Gson();
                            CeBean ceBean = gson.fromJson(s, CeBean.class);
                            data = ceBean.getData();
                            adapter=new CeAdapter(getActivity(),data);
                            listv.setAdapter(adapter);
                            listv.onRefreshComplete();
                        }
                    });
                }else{
                    Toast.makeText(getActivity(),"没有网络",Toast.LENGTH_LONG).show();
                }
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                //上拉加载
                if(Http.isWork(getActivity())){
                    Http.HttpAsyTask(str2, new Http.CallTasks() {
                        @Override
                        public void getData(String s) {
                            Gson gson=new Gson();
                            CeBean ceBean = gson.fromJson(s, CeBean.class);
                            ArrayList<CeDatas> data1 = ceBean.getData();
                            data.addAll(data1);
                            adapter.notifyDataSetChanged();
                            //当列表刷新时调用
                            listv.onRefreshComplete();
                        }
                    });
                }else{
                    Toast.makeText(getActivity(),"没有网络",Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}

8.Dao

public class Dao {

    private final SQLiteDatabase db;

    public Dao(Context con){
        MySqlite mySqlite=new MySqlite(con);
        db = mySqlite.getWritableDatabase();
    }
    public long insert(String table, String nullColumnHack, ContentValues values) {
        return db.insert(table,nullColumnHack,values);
    }
    public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) {
        return db.query(table,columns,selection,selectionArgs,groupBy,having,orderBy);
    }
}

9.MySqlite

public class MySqlite extends SQLiteOpenHelper {
    public MySqlite(Context context) {
        super(context, "bw.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL("create table news(id integer primary key autoincrement,name text,tit text,img text)");
        sqLiteDatabase.execSQL("create table shou(id integer primary key autoincrement,name text,tit text,img text)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

10.App

public class App extends ChannelApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        String path= Environment.getExternalStorageDirectory().getPath()+"/TuPian";
        File file=new File(path);
        DisplayImageOptions options=new DisplayImageOptions.Builder()
                .showImageOnLoading(R.mipmap.zhan)
                .showImageOnFail(R.mipmap.shibai)
                .displayer(new CircleBitmapDisplayer())
                .bitmapConfig(Bitmap.Config.ARGB_8888)
                .build();
        ImageLoaderConfiguration loaderConfiguration=new ImageLoaderConfiguration.Builder(this)
                .defaultDisplayImageOptions(options)
                .memoryCacheExtraOptions(200,200)
                .memoryCacheSize(2 * 1024 * 1024)
                .threadPoolSize(3)
                .threadPriority(1000)
                .diskCache(new UnlimitedDiskCache(file))
                .diskCacheFileCount(50)
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())
                .diskCacheSize(50 * 1024 *1024)
                .build();
        ImageLoader imageLoader=ImageLoader.getInstance();
        imageLoader.init(loaderConfiguration);
    }
}

11.CeAdapter

public class CeAdapter extends BaseAdapter {
    private Context con;
    private ArrayList<CeDatas> arr;

    public CeAdapter(Context con, ArrayList<CeDatas> arr) {
        this.con = con;
        this.arr = arr;
    }

    @Override
    public int getCount() {
        return arr.size();
    }

    @Override
    public Object getItem(int i) {
        return null;
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getItemViewType(int position) {
        return position % 2;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        switch (getItemViewType(i)){
            case 0:
                ViewHolder0 vh;
                if(view==null){
                    view=LayoutInflater.from(con).inflate(R.layout.ce_one,null);
                    vh=new ViewHolder0();
                    vh.img=view.findViewById(R.id.img);
                    vh.tit=view.findViewById(R.id.tit);
                    view.setTag(vh);
                }else{
                    vh= (ViewHolder0) view.getTag();
                }
                vh.tit.setText(arr.get(i).getTitle());
                ImageLoader.getInstance().displayImage(arr.get(i).getThumbnail_pic_s(),vh.img);
                break;
            case 1:
                ViewHolder1 vh1;
                if(view==null){
                    view= LayoutInflater.from(con).inflate(R.layout.ce_two,null);
                    vh1=new ViewHolder1();
                    vh1.img=view.findViewById(R.id.img);
                    vh1.tit=view.findViewById(R.id.tit);
                    view.setTag(vh1);
                }else{
                    vh1= (ViewHolder1) view.getTag();
                }
                vh1.tit.setText(arr.get(i).getTitle());
                ImageLoader.getInstance().displayImage(arr.get(i).getThumbnail_pic_s(),vh1.img);
                break;
        }

        return view;

    }
    static class ViewHolder0{
        ImageView img;
        TextView tit;
    }
    static class ViewHolder1{
        ImageView img;
        TextView tit;
    }
}

12.TabPagerAdapter

public class TabPagerAdapter extends FragmentPagerAdapter {
    private ArrayList<Fragment> arr;
    private ArrayList<ChannelItem> tabData;
    public TabPagerAdapter(FragmentManager fm, ArrayList<ChannelItem> tabData,ArrayList<Fragment> arr) {
        super(fm);
        this.arr=arr;
        this.tabData=tabData;
    }

    @Override
    public Fragment getItem(int i) {
        return arr.get(i);
    }

    @Override
    public int getCount() {
        return tabData.size();
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return tabData.get(position).getName();
    }
}

13.CeDatas

public class CeDatas {
    private  String author_name;
    private  String thumbnail_pic_s;
    private  String title;

    public CeDatas(String author_name, String thumbnail_pic_s, String title) {
        this.author_name = author_name;
        this.thumbnail_pic_s = thumbnail_pic_s;
        this.title = title;
    }

    @Override
    public String toString() {
        return "CeDatas{" +
                "author_name='" + author_name + '\'' +
                ", thumbnail_pic_s='" + thumbnail_pic_s + '\'' +
                ", title='" + title + '\'' +
                '}';
    }

    public String getAuthor_name() {
        return author_name;
    }

    public void setAuthor_name(String author_name) {
        this.author_name = author_name;
    }

    public String getThumbnail_pic_s() {
        return thumbnail_pic_s;
    }

    public void setThumbnail_pic_s(String thumbnail_pic_s) {
        this.thumbnail_pic_s = thumbnail_pic_s;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}

14.CeBean

public class CeBean {
    private ArrayList<CeDatas> data;
    private String code;
    private String msg;

    @Override
    public String toString() {
        return "CeBean{" +
                "data=" + data +
                ", code='" + code + '\'' +
                ", msg='" + msg + '\'' +
                '}';
    }

    public ArrayList<CeDatas> getData() {
        return data;
    }

    public void setData(ArrayList<CeDatas> data) {
        this.data = data;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

在这里插入图片描述
1.

frag_shou

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <android.support.design.widget.TabLayout
            android:id="@+id/tab"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#fff"
            app:tabGravity="fill"
            app:tabIndicatorColor="@color/color"
            app:tabMode="scrollable"
            app:tabSelectedTextColor="@color/color"
            app:tabTextColor="#000"
            />
        <ImageView
            android:id="@+id/tabimg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="18dp"
            android:src="@mipmap/menu"
            />
    </LinearLayout>
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        />

1.second_main

 <android.support.v4.widget.DrawerLayout
        android:id="@+id/draw"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <FrameLayout
                android:id="@+id/frag"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"></FrameLayout>

            <RadioGroup
                android:id="@+id/radi"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <RadioButton
                    android:id="@+id/radi1"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:button="@null"
                    android:gravity="center"
                    android:padding="8dp"
                    android:background="@drawable/sele"
                    android:text="首页"
                    android:textSize="25sp" />

                <RadioButton
                    android:id="@+id/radi2"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:button="@null"
                    android:background="@drawable/sele"
                    android:gravity="center"
                    android:padding="8dp"
                    android:text="分类"
                    android:textSize="25sp" />

                <RadioButton
                    android:id="@+id/radi3"
                    android:background="@drawable/sele"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:button="@null"
                    android:gravity="center"
                    android:padding="8dp"
                    android:text="我的"
                    android:textSize="25sp" />
            </RadioGroup>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="left"
            android:orientation="vertical"
            android:background="#ccc"
            >
            <ImageView
                android:layout_width="150dp"
                android:layout_height="150dp"
                android:layout_gravity="center"
                android:id="@+id/ceimg"
                />
            <com.qy.xlistview.XListView
                android:id="@+id/xlist"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                ></com.qy.xlistview.XListView>
        </LinearLayout>
    </android.support.v4.widget.DrawerLayout>
</LinearLayout>
标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则和常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模型及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类型、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化和改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
在金融行业中,对信用风险的判断是核心环节之一,其结果对机构的信贷政策和风险控制策略有直接影响。本文将围绕如何借助机器学习方法,尤其是Sklearn工具包,建立用于判断信用状况的预测系统。文中将涵盖逻辑回归、支持向量机等常见方法,并通过实际操作流程进行说明。 一、机器学习基本概念 机器学习属于人工智能的子领域,其基本理念是通过数据自动学习规律,而非依赖人工设定规则。在信贷分析中,该技术可用于挖掘历史数据中的潜在规律,进而对未来的信用表现进行预测。 二、Sklearn工具包概述 Sklearn(Scikit-learn)是Python语言中广泛使用的机器学习模块,提供多种数据处理和建模功能。它简化了数据清洗、特征提取、模型构建、验证与优化等流程,是数据科学项目中的常用工具。 三、逻辑回归模型 逻辑回归是一种常用于分类任务的线性模型,特别适用于二类问题。在信用评估中,该模型可用于判断借款人是否可能违约。其通过逻辑函数将输出映射为0到1之间的概率值,从而表示违约的可能性。 四、支持向量机模型 支持向量机是一种用于监督学习的算法,适用于数据维度高、样本量小的情况。在信用分析中,该方法能够通过寻找最佳分割面,区分违约与非违约客户。通过选用不同核函数,可应对复杂的非线性关系,提升预测精度。 五、数据预处理步骤 在建模前,需对原始数据进行清理与转换,包括处理缺失值、识别异常点、标准化数值、筛选有效特征等。对于信用评分,常见的输入变量包括收入水平、负债比例、信用历史记录、职业稳定性等。预处理有助于减少噪声干扰,增强模型的适应性。 六、模型构建与验证 借助Sklearn,可以将数据集划分为训练集和测试集,并通过交叉验证调整参数以提升模型性能。常用评估指标包括准确率、召回率、F1值以及AUC-ROC曲线。在处理不平衡数据时,更应关注模型的召回率与特异性。 七、集成学习方法 为提升模型预测能力,可采用集成策略,如结合多个模型的预测结果。这有助于降低单一模型的偏差与方差,增强整体预测的稳定性与准确性。 综上,基于机器学习的信用评估系统可通过Sklearn中的多种算法,结合合理的数据处理与模型优化,实现对借款人信用状况的精准判断。在实际应用中,需持续调整模型以适应市场变化,保障预测结果的长期有效性。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值