Android项目:简易版QQ的实现

来源:互联网 发布:淘宝网装修材料价格表 编辑:程序博客网 时间:2024/05/16 08:08

简易版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
    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="wrap_content"        android:layout_height="wrap_content" >    </android.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<View> views = new ArrayList<View>();        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
0 0
原创粉丝点击