Android项目:简易版QQ的实现

简易版QQ实现涉及的三个功能模块

引导界面

  1. splash界面(静态)
    1、作用:初始化服务器端的一些数据,初始化成功后跳转到主界面
    2、页面的延迟跳转:
     //在主线程中:   
        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                Intent intent = new Intent(MyqqStartActivity.this,PagerActivity.class);
                startActivity(intent);
                MyqqStartActivity.this.finish();
            }
        }, 3000);
  1. 滑动页面ViewPager
    (页面滑动的最后一页是一个按钮,点击后有个动画效果,动画结束之后跳转到主界面)
    1、容器控件
    里面可以防止多个Layout,实现了滑动翻页;
    实现的大致步骤为:
    ①、将所有现实的页面加载到一个集合中
    ②、又滑加载新页面
    ③、左滑删除旧页面
    实现的代码为:
    xml定义ViewPager
    .support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    .support.v4.view.ViewPager

主代码中的实现:

mViewPager = (ViewPager) findViewById(R.id.viewpager);

        LayoutInflater mLi = LayoutInflater.from(this);
        View view1 = mLi.inflate(R.layout.viewpager_activity_item1, null);
        View view2 = mLi.inflate(R.layout.viewpager_activity_item2, null);
        View view3 = mLi.inflate(R.layout.viewpager_activity_item3, null);

        final ArrayList views = new ArrayList();
        views.add(view1);
        views.add(view2);
        views.add(view3);

        PagerAdapter mPagerAdapter = new PagerAdapter() {

            @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                // TODO Auto-generated method stub
                return arg0 == arg1;
            }

            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return views.size();
            }

            @Override
            public void destroyItem(View container, int position, Object object) {
                // TODO Auto-generated method stub

                ((ViewPager) container).removeView(views.get(position));
            }

            @Override
            public Object instantiateItem(View container, int position) {
                // TODO Auto-generated method stub

                ((ViewPager) container).addView(views.get(position));
                return views.get(position);
            }
        };

        mViewPager.setAdapter(mPagerAdapter);
    }

2、状态选择器
3. 动画效果
1、TwenedAnimations(API实现的)
①、Alpha:淡入淡出
②、Scale:缩放效果
③、Rotate:旋转效果
④、移动效果
2、FrameAnimations
把一个动画拆分成很多张图片;类似于连环画
3、创建动画效果的步骤
①、创建AnimationSet对象
②、根据需要创建相应的Animation对象(淡入淡出啊、这些)
③、创建的Animation对象设置参数
④、将Animation对象添加到AnimationSet中
⑤、使用控件对象开始执行Animation
4、例如设置移动的动画效果步骤:

AnimationSet anim = new AnimationSet(true);

        // 1、确定类型:Absolute相对于屏幕,Relative to self相对于自己,Relative to parent相对于父控件
        // 2、确定x的起始位置
        // 3、确定x的模式
        // 4、确定x的结束动画位置
        // 5、Y与X一样

        TranslateAnimation mytranslateanim = new TranslateAnimation(
                Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,
                -1f, Animation.RELATIVE_TO_SELF, 0f,
                Animation.RELATIVE_TO_SELF, 0f);
        // 设置动画持续的时间
        mytranslateanim.setDuration(2000);
        // 确定动画开始的时间
        anim.setStartOffset(800);
        // 添加动画到AnimationSet中
        anim.addAnimation(mytranslateanim);
        //停留在最後的位置
        anim.setFillAfter(true);
        mLeft.startAnimation(anim);

主界面

  1. 网络请求数据
    1、tomcat服务器
    2、异步请求数据(Handler与AsyTask异步任务的区别)
    3、Json数据的解析
    json数据存放在tomcat的目录下,用自定义的方式编写json数据,网上有在线解析恭喜,来校验自己的json数据有没有写对。
    常用的第三方解析框架:Jackson、Gson、JSONObject
  2. 选项卡界面(tabHost + Fragment)
    TabHost可以简单理解成一个容器控件、每一个选项卡对应一个布局而已
    1、popuwindow
    2、自定义Adapter
    3、页面圆角处理
  3. 侧滑控件的实现
    1、自定义ViewGroup
    ①、实现两个参数的构造方法
    ②、重写onMeasure方法测量控件高度
    ③、重写onLayout方法定义控件布局
    ④、重写onTouchEvent事件监听

实时通讯

  1. 即时通讯原理
    ①、XMPP
    ②、openFire
    ③、Socket
  2. 第三方SDK的使用
    环信即时通信Demo

你可能感兴趣的:(Android学习)