笑话类android项目总结

本文是对一个Android笑话项目的总结,涵盖了主体包com.joker的各个组件,包括MainActivity的界面初始化,事务层如用户登录、注册、管理等功能,适配器类的实现,图表展示,信息类的数据封装,网络请求和线程管理,以及工具类的使用。
摘要由CSDN通过智能技术生成

android项目总结

以下各个包,并总结下学习过的东西(主要是怕忘了):

  • com.joker

  • com.joker.action

  • com.joker.adapter

  • com.joker.graphs

  • com.joker.info

  • com.joker.model

  • com.joker.myview

  • com.joker.net

  • com.joker.splash

  • com.joker.thread

  • com.joker.utils


com.joker

主体包,view层,主体界面层

JokerMainActivity

 这个部分主要工作是初始化主界面的各个模块部分,包括界面顶端栏目切换部分,4个栏目的fragment初始化,菜单部分各个按钮的监听,各个栏目切换的按钮监听,根据不同用户角色显示不同的菜单选项判断,初始化朗读人声音效按钮列表,设置双击退出应用。其中,最主要的就是界面滑动部分,主要代码如下:
 

    private FragmentViewPagerAdapter adapter;
// 分类栏和指示器
    private JokerIndexContainer mTitleView;
// 此处设置子屏幕的初始化
    mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
    mTitleView.mJokes1NewestTextView = (TextView) findViewById(R.id.id_tv_jokes_newest);
    mTitleView.mJokes3WordTextView = (TextView) findViewById(R.id.id_tv_jokes_word);
    mTitleView.mJokes2BestTextView = (TextView) findViewById(R.id.id_tv_jokes_best);
    mTitleView.mJokes4AudioTextView = (TextView) findViewById(R.id.id_tv_jokes_audio);
// 将四个子页视图放入到数组中
    mDatas = new ArrayList<Fragment>();
    Jokes1NewestMainListFragment tab01 = new Jokes1NewestMainListFragment();
    Jokes2BestMainListFragment tab02 = new Jokes2BestMainListFragment();
    Jokes3WordMainListFragment tab03 = new Jokes3WordMainListFragment();
    Jokes4AudioMainListFragment tab04 = new Jokes4AudioMainListFragment();

    mDatas.add(tab01);
    mDatas.add(tab02);
    mDatas.add(tab03);
    mDatas.add(tab04);

// 设置适配器
    adapter = new FragmentViewPagerAdapter(mTitleView,this.getSupportFragmentManager(), mViewPager, mDatas);

JokerIndexContainer

如注释所说,把分类栏的内容抽取成一个类,方便消息传递,代码如下:

 // @说明 把分类栏的内容抽取成一个类,使得内容便于传递
public class JokerIndexContainer {
   
    public TextView mJokes1NewestTextView;// 分类栏“最新”文本视图
    public TextView mJokes3WordTextView;// 分类栏“纯文”文本视图
    public TextView mJokes2BestTextView;// 分类栏“最赞”文本视图
    public TextView mJokes4AudioTextView;// 分类栏“语音”文本视图
    public ImageView mTabline;
    public int mScreen1_4;

    JokerIndexContainer(Context ctx) {
        mJokes1NewestTextView = new TextView(ctx);
        mJokes3WordTextView = new TextView(ctx);
        mJokes2BestTextView = new TextView(ctx);
        mJokes4AudioTextView = new TextView(ctx);
        mTabline = new ImageView(ctx);
    }

}

Jokes1NewestMainListFragment(其中一个页面)

此示例页面就是主要显示最新的笑话的页面的一个fragment,类继承Fragment。

//动态加入listview
    mLinearLayout = (LinearLayout)view.findViewById(R.id.HomeGroup);
    myListView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT));
    myListView.setDivider(null);
    mLinearLayout.addView(myListView);

//这是网络连接的代码,安装规定好的格式传输,获取定量的笑话条数
    url = Model.NEWJOKE;            
    ListBottem.setVisibility(View.GONE);
    start = 0;                  
    ThreadPoolUtils.execute(new HttpGetThread(hand,url+"?start="+start+"&num="+number));
    start +=number;
    loadflag = false;

//点击笑话后跳转到详情页
private OnItemClickListener listener =new OnItemClickListener()
    {
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
        {
            JokeInfo jokeinfo = (JokeInfo)arg0.getAdapter().getItem(arg2);//Adapter中取出数据
            if(!isnet.IsConnect()){
                Toast.makeText(ctx, "请先连接网络", Toast.LENGTH_SHORT).show();
                return;
            }
            Intent intent = new Intent(ctx, JokerSendCommentActivity.class);
            Bundle bund = new Bundle();
            bund.putSerializable("JokeInfo", list.get(arg2-1));
            intent.putExtra("value", bund);
            ctx.startActivity(intent);
        }
    };

com.joker.actions

事务层,包含用户各种操作逻辑

JokerAuthorityActivity

这个activity是用于Boss管理各个管理员的各式操作,比如同意用户的管理员申请,撤销用户管理员权限,主要代码如下:

private void adapter(int statu){
        if (statu==0) {
            //申请管理员界面设置
            myAppleAdminAdapter = new MyApplyAdminAdapter(ctx, appleList);
            listview.setAdapter(myAppleAdminAdapter);
            show.setText("申请管理员");
            ThreadPoolUtils.execute(new HttpGetThread(hand, Model.SHOWADMINLIST));
        }else if(statu==1){
            //撤销管理员界面设置
            myCancleAdminAdapter = new MyCancleAdminAdapter(ctx, cancleList);
            listview.setAdapter(myCancleAdminAdapter);
            show.setText("撤销管理员");
            ThreadPoolUtils.execute(new HttpGetThread(hand, Model.SHOWADMINLIST));
        }
    }
//上传管理员信息在adapter里的按钮监听里面,详见MyApplyAdminAdapter,MyCancleAdminAdapter

JokerCheckActivity

这个类主要处理审核用户发布的笑话的管理员操作,如审核笑话,通过与反对的功能:

ok.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {           
        if(!isnet.IsConnect()){
            Toast.makeText(JokerCheckActivity.this, "请先连接网络", Toast.LENGTH_SHORT).show();
            return;
        }
        /*解释下这里为什么两次网络连接,因为到服务器修改用户管理员标志完的时候取数据发现还是把之前的用户信息取过来,数据操作需要时间,就用第二次来取,取除刚操作的用户数据以外的数据。*/
        ThreadPoolUtils.execute(new HttpGetThread(show_handler, Model.CHECKJOKE+"?vid="+jokeid+"&act=pass&uid="+uid));
        ThreadPoolUtils.execute(new HttpGetThread(show_handler, Model.CHECKSHOW+"?vid="+jokeid));
        ok.setEnabled(false);
        no.setEnabled(false);
        }
    });
//自己定义的showhandler(Handler类)里接收到none表示没有需要审核的笑话了

JokerContributeActivity

这个类主要负责用户投稿操作,里面涉及到一些上传图片,上传音频,录音,图片压缩等一些主要的功能。

// 这个是调用android内置的intent,来过滤图片文件 ,同时也可以过滤其他的
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_PICK);
    intent.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);//设置intent使得在4.4及以上版本不出现图片选择器
    startActivityForResult(intent, 1);
//录音的主要代码,这里还需要注意的问题是,按下录音后再反复点击会崩溃,需要无效按钮几秒防止用户过于频繁点击,也保证录音长度质量,太频繁的点击全都被忽略
    time_start=System.currentTimeMillis();
    Toast.makeText(JokerContributeActivity.this, "开始录音啦~", 1000).show();
    filename = new Date().getTime() + ".amr";
    recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setOutputFile("/sdcard/" + filename);
//发布笑话部分,用规定好的json格式发送给服务器
    int uid = Model.MYUSERINFO.getUserID();// 用户ID
    String xvalue = neirongEdit.getText().toString();// 笑话内容
    String ximg = "";// 笑话图片
    String xradio = "";// 笑话音频
    if (!img.equalsIgnoreCase("")) {
        ximg = System.currentTimeMillis() + ".png";// 笑话图片
    }
    if (!radio.equalsIgnoreCase("")) {
        xradio = System.currentTimeMillis() + ".war";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值