강력한 타사 - 윤방도

10705 단어 android
강력한 타사 - 윤방도
  • 먼저 다른 사람의 GtiHub 주소를 첨부합니다.https://github.com/youth5201314/banner
  • 프로젝트에 의존 추가:compile'com.youth.banner:banner:1.4.9’

  • 간단한 사용
  • 레이아웃 코드, 컨트롤 높이 사용자 정의
  • <com.youth.banner.Banner
            android:id="@+id/main_banner"
            android:layout_width="match_parent"
            android:layout_height="250dp"/>
  • 하나 정의하기;클래스, ImageLoader 클래스를 계승하여 그림을 불러올 때 어떤 로드 프레임워크를 사용해야 하는지 정의합니다
  • public class GlideImageLoader extends ImageLoader {
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            /**
                :
              1.          ,     ,          
              2.        Object  ,                   ,
                        ,       Object     ,               ,
                      !
             */
            eg:
    
            //Glide         
            Glide.with(context).load(path).into(imageView);
    
            //Picasso         
            Picasso.with(context).load(path).into(imageView);
    
            // fresco        ,       createImageView  
            Uri uri = Uri.parse((String) path);
            imageView.setImageURI(uri);
        }
    }
  • Activity 또는 Fragment에서 초기화
  • //      ,    6
    //mMainBanner          
    //images:     ,          
    mMainBanner.setImages(images).setImageLoader(new GlideImageLoader()).start();
  • 상세 구성
  •     //  banner  
        banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
        //       
        banner.setImageLoader(new GlideImageLoader());
        //      
        banner.setImages(images);
        //  banner    
        banner.setBannerAnimation(Transformer.DepthPage);
        //      ( banner     title )
        banner.setBannerTitles(titles);
        //      ,   true
        banner.isAutoPlay(true);
        //      
        banner.setDelayTime(1500);
        //       ( banner        )
        banner.setIndicatorGravity(BannerConfig.CENTER);
        //banner               
        banner.start();

    표시기 스타일
  • 5가지 스타일
  • 표시기 모드
  • 디지털 모드
  • 디지털 배너 모드
  • 표시기 제목 추가 모드 수직 표시
  • 표시기 제목 추가 모드 수평 표시
  • BannerConfig.NOT_INDICATOR                                            setBannerStyle
    BannerConfig.CIRCLE_INDICATOR                                           setBannerStyle
    BannerConfig.NUM_INDICATOR                                              setBannerStyle
    BannerConfig.NUM_INDICATOR_TITLE                                      setBannerStyle
    BannerConfig.CIRCLE_INDICATOR_TITLE                   (    )     setBannerStyle
    BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE            (    )     setBannerStyle
    BannerConfig.LEFT                                                       setIndicatorGravity
    BannerConfig.CENTER                                                     setIndicatorGravity
    BannerConfig.RIGHT                                                      setIndicatorGravity

    애니메이션
  • 구글의 두 애니메이션 효과 소개
  • 애니메이션 효과 설정
  • mMainBanner.setPageTransformer(true, new ZoomOutPageTransformer());
    public class DepthPageTransformer implements ViewPager.PageTransformer {
        private static float MIN_SCALE = 0.75f;
    
        @SuppressLint("NewApi")
        @Override
        public void transformPage(View view, float position) {
            int pageWidth = view.getWidth();
            if (position < -1) { // [-Infinity,-1)
                // This page is way off-screen to the left.
                view.setAlpha(0);
            } else if (position <= 0) { // [-1,0]
                // Use the default slide transition when
                // moving to the left page
                view.setAlpha(1);
                view.setTranslationX(0);
                view.setScaleX(1);
                view.setScaleY(1);
            } else if (position <= 1) { // (0,1]
                // Fade the page out.
                view.setAlpha(1 - position);
                // Counteract the default slide transition
                view.setTranslationX(pageWidth * -position);
                // Scale the page down (between MIN_SCALE and 1)
                float scaleFactor = MIN_SCALE + (1 - MIN_SCALE)
                        * (1 - Math.abs(position));
                view.setScaleX(scaleFactor);
                view.setScaleY(scaleFactor);
            } else { // (1,+Infinity]
                // This page is way off-screen to the right.
                view.setAlpha(0);
    
            }
        }
    
    }
    public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
        private static float MIN_SCALE = 0.85f;
    
        private static float MIN_ALPHA = 0.5f;
    
        @Override
        public void transformPage(View view, float position) {
            int pageWidth = view.getWidth();
            int pageHeight = view.getHeight();
    
            if (position < -1) { // [-Infinity,-1)
                // This page is way off-screen to the left.
                view.setAlpha(0);
            } else if (position <= 1) { // [-1,1]
                // Modify the default slide transition to
                // shrink the page as well
                float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
                float vertMargin = pageHeight * (1 - scaleFactor) / 2;
                float horzMargin = pageWidth * (1 - scaleFactor) / 2;
                if (position < 0) {
                    view.setTranslationX(horzMargin - vertMargin / 2);
                } else {
                    view.setTranslationX(-horzMargin + vertMargin / 2);
                }
                // Scale the page down (between MIN_SCALE and 1)
                view.setScaleX(scaleFactor);
                view.setScaleY(scaleFactor);
                // Fade the page relative to its size.
                view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE)
                        / (1 - MIN_SCALE) * (1 - MIN_ALPHA));
            } else { // (1,+Infinity]
                // This page is way off-screen to the right.
                view.setAlpha(0);
            }
        }
    }

    좋은 웹페이지 즐겨찾기