欢迎使用CSDN-markdown编辑器

智慧北京小项目的学习笔记(day0test)

版权声明:本文为博主原创文章,转载请注明出处。若有错误地方,还望批评指正,不胜感激。


摘要

  • 一般的程序步骤和人员分配
  • Splash闪屏处理
  • ViewPage引导页的制作

目录

一般的程序步骤和人员分配

Splash闪屏处理

常用动画来做闪屏页面,常用的动画有RotatAnimation旋转动画、ScaleAnimation缩放动画、AlphaAnimation淡入淡出等。
用setDuration()设置动画时间,用setFillAfter()等方法设置动画的各种属性,然后用startAnimation()方法实现动画,在Splash闪屏中长用于加载数据检查更新等等操作。
用动画集合AnimationSet将各种动画添加到集合中,将各种动画效果一起添加。
用OnAnimationListeren()方法监听动画的结束开始等状态。

ViewPage引导页的制作

ViewPage在V4包下,在布局文件中使用的时候要用全路径,常用ViewPage做引导页面(比较简单),主要用ViewPager的setAdatper()方法向ViewPger中添加View

主要 代码

MainActivity:
package com.qixiaoyi.administrator.zhihuibeijin;

import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import com.qixiaoyi.administrator.zhihuibeijin.fragment.Lift_menu;
import com.qixiaoyi.administrator.zhihuibeijin.fragment.Main_menu;

//public class MainActivity extends AppCompatActivity {
//
//    @Override
//    protected void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
//    }
//}
public class MainActivity extends SlidingFragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setBehindContentView(R.layout.lift_menu);
        SlidingMenu sm = getSlidingMenu();
        sm.setTouchModeBehind(SlidingMenu.LEFT);
        sm.setBehindOffset(300);
        sm.setMode(SlidingMenu.LEFT);
        FragmentManager supportFragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.lift_menu,new Lift_menu());
        fragmentTransaction.replace(R.id.main_ac,new Main_menu());
        fragmentTransaction.commit();
    }
}



manactivity.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/main_ac"
    tools:context="com.qixiaoyi.administrator.zhihuibeijin.MainActivity">

</FrameLayout>


lift_Activity:



<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ff0000"
    android:id="@+id/lift_menu"
    tools:context="com.qixiaoyi.administrator.zhihuibeijin.MainActivity">

</FrameLayout>

SplashActivity:
package com.qixiaoyi.administrator.zhihuibeijin;

import android.animation.StateListAnimator;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.widget.RelativeLayout;

import com.qixiaoyi.administrator.zhihuibeijin.Utils.perfUtils;

public class SplashActivity extends AppCompatActivity {

    RelativeLayout rlRoot;
    private boolean is_user_guide_show;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        rlRoot = (RelativeLayout) findViewById(R.id.rlRoot);
        AnimationSet animationSet = new AnimationSet(false);

        //动画
        RotateAnimation rotateAnimation = new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f);
        rotateAnimation.setDuration(2000);
        rotateAnimation.setFillAfter(true);
        //缩放动画
        ScaleAnimation scaleAnimation = new ScaleAnimation(0.5f,1f,0.5f,1f);
        scaleAnimation.setDuration(2000);
        scaleAnimation.setFillAfter(true);
        //淡入淡出
        AlphaAnimation alphaAnimation = new AlphaAnimation(0,1f);
        alphaAnimation.setDuration(2000);
        alphaAnimation.setFillAfter(true);

        animationSet.addAnimation(scaleAnimation);
        animationSet.addAnimation(rotateAnimation);
        animationSet.addAnimation(alphaAnimation);

        rlRoot.startAnimation(animationSet);
        animationSet.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            //当动画完成的时候调用
            @Override
            public void onAnimationEnd(Animation animation) {
                jumpNextActivity();
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
    }
    public void jumpNextActivity(){
        is_user_guide_show =  perfUtils.getBoolean(SplashActivity.this,"is_user_guide_show",false);
        if (!is_user_guide_show){

            startActivity(new Intent(SplashActivity.this,GuideActivity.class));
        }else {
            startActivity(new Intent(SplashActivity.this,MainActivity.class));
        }
        finish();
    }
}



splash.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/rlRoot"
    android:background="@drawable/splash_bg_newyear"
    tools:context="com.qixiaoyi.administrator.zhihuibeijin.SplashActivity">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/img"
        android:src="@drawable/splash_horse_newyear"/>
</RelativeLayout>
GuideActivity:


package com.qixiaoyi.administrator.zhihuibeijin;

import android.annotation.TargetApi;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.provider.Settings;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

import com.qixiaoyi.administrator.zhihuibeijin.Utils.perfUtils;

import java.util.ArrayList;

public class GuideActivity extends AppCompatActivity {
    ViewPager vpGuide;
    ArrayList<ImageView> mImageview;
    int []imageviewId;
    LinearLayout ll_pointgroup;
    private int juli;
    View view_point;
    Button start;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        imageviewId = new int[]{R.drawable.guide_1,R.drawable.guide_2,R.drawable.guide_3};
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_guide);
        vpGuide = (ViewPager) findViewById(R.id.vpGuide);
        ll_pointgroup = (LinearLayout) findViewById(R.id.ll_pointgroup);
        view_point = findViewById(R.id.view_point);
        start = (Button) findViewById(R.id.start);
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(GuideActivity.this,MainActivity.class));
                perfUtils.setBoolean(GuideActivity.this,"is_user_guide_show",true);
                finish();

            }
        });
        initView();

//        ViewPager设置适配器
        vpGuide.setAdapter(new myAdapter());

        vpGuide.addOnPageChangeListener(new myPageChangelisteren());
    }

    private void initView() {

        mImageview = new ArrayList<ImageView>();
        for (int i = 0;i < imageviewId.length;i++){
            ImageView imageView = new ImageView(GuideActivity.this);
            imageView.setBackgroundResource(imageviewId[i]);
            mImageview.add(imageView);
            View view = new View(this);
            //设置布局
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(15, 15);
            view.setLayoutParams(layoutParams);
            if (i>0){
                layoutParams.setMargins(30,0,0,0);
            }
            view.setBackgroundResource(R.drawable.point_shape);
            ll_pointgroup.addView(view);
        }
        //获取View树 监听layout方法完成vie完成
        ll_pointgroup.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
            @Override
            public void onGlobalLayout() {  //视图在create()方法中还没完全创建出来
                //需要 侧量cre  布局layout 和 画 drawable 三个阶段
                //获取View树  用SDK的tool中的Hierawer工具看工程的层级结构
                ll_pointgroup.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                juli = ll_pointgroup.getChildAt(1).getLeft() - ll_pointgroup.getChildAt(0).getLeft();
                Log.i("main", "onGlobalLayout: 距离"+ juli);
            }
        });
    }

    private class myAdapter extends PagerAdapter {
        @Override
        public int getCount() {
            return imageviewId.length;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            container.addView(mImageview.get(position));
            return mImageview.get(position);  //返回的是View
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object); //销毁View既上面返回的
        }
    }


    private class myPageChangelisteren implements ViewPager.OnPageChangeListener {

        //滑动状态改变监听  当前位置   移动百分比    移动距离
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            int v = (int) (juli * positionOffset + position * juli);
            RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)
                    view_point.getLayoutParams();
            layoutParams.setMargins(v,0,0,0);
            view_point.setLayoutParams(layoutParams);
        }
        //页面变化监听
        @Override
        public void onPageSelected(int position) {
            if (position == imageviewId.length-1){
                start.setVisibility(View.VISIBLE);
            }else {
                start.setVisibility(View.INVISIBLE);
            }
        }
        //滑动状态变化监听
        @Override
        public void onPageScrollStateChanged(int state) {

        }
    }
}


Guide.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.qixiaoyi.administrator.zhihuibeijin.GuideActivity">
<android.support.v4.view.ViewPager
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/vpGuide">
</android.support.v4.view.ViewPager>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开始"
        android:background="@drawable/guide_bt_selector"
        android:id="@+id/start"
        android:visibility="invisible"
        android:textColor="@drawable/guide_text_selector"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="75dp" />

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="47dp">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:id="@+id/ll_pointgroup"
            >
        </LinearLayout>
        <View
            android:layout_width="10dp"
            android:layout_height="10dp"
            android:id="@+id/view_point"
            android:background="@drawable/redpoint_shape">
        </View>

    </RelativeLayout>
</RelativeLayout>
fragment:

liftfragment.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.qixiaoyi.administrator.zhihuibeijin.MainActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这是左边的fragment"
        />

</RelativeLayout>


mainfragment:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.qixiaoyi.administrator.zhihuibeijin.MainActivity">
    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="530dp">
    </android.support.v4.view.ViewPager>
    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:background="@drawable/bottom_tab_bg">
        <RadioButton
            style="@style/tabel_rb"
            android:id="@+id/home"
            android:text="首页"
            />
    </RadioGroup>
</LinearLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值