안 드 로 이 드 모조 동전 회전 위 챗 보너스 애니메이션 효과

프로젝트 는 위 챗 레 드 백 애니메이션,즉 동전 이 돌아 가 는 효 과 를 연구 해 야 한다.원 리 는 바로 세 장의 서로 다른 각도 의 그림 이 Animation Drawable 프레임 애니메이션 을 이용 하여 재생 하 는 것 이다.사례 를 참고 한 후에 자신 에 게 완성 과정 을 기록 하 는 것 이다.
1.XML 파일 에서 애니메이션 을 정의 합 니 다.
절 차 는 다음 과 같다.
① 새 Android 프로젝트
② drawable 디 렉 터 리 에 anim.xml 을 새로 만 듭 니 다.(파일 이름 소문 자 주의)

<?xml version="1.0" encoding="utf-8"?> 
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> 
 <item android:drawable="@drawable/bag" android:duration="400"></item> 
 <item android:drawable="@drawable/bag1" android:duration="400"></item> 
 <item android:drawable="@drawable/bag2" android:duration="400"></item> 
</animation-list> 
루트 탭 은 animation-list 입 니 다.그 중에서 oneshot 은 한 번 만 보 여 주 는 지 여 부 를 의미 합 니 다.false 로 설정 하면 애니메이션 루트 탭 에서 아 이 템 탭 을 통 해 애니메이션 의 모든 그림 을 설명 합 니 다.android:duration 은 이 그림 을 보 여 주 는 시간 이 길 고 이 매개 변 수 를 통 해 그림 이 회전 하 는 속 도 를 설정 할 수 있 으 며 다른 속성 은 스스로 자 료 를 찾 을 수 있 습 니 다.
2.레이아웃 파일 설정,효과 및 코드 는 다음 과 같 습 니 다.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:orientation="vertical" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:gravity="center_vertical|center_horizontal" 
 android:background="@drawable/background"> 
 <!--       --> 
 <LinearLayout 
  android:id="@+id/top" 
  android:layout_width="match_parent" 
  android:layout_height="0dp" 
  android:layout_weight="1"> 
  <Button 
   android:id="@+id/close" 
   android:layout_width="32dp" 
   android:layout_height="32dp" 
   android:background="@drawable/close" 
   android:layout_margin="10dp"/> 
 </LinearLayout> 
 <!--          --> 
 <LinearLayout 
  android:layout_below="@+id/top" 
  android:layout_width="match_parent" 
  android:layout_height="0dp" 
  android:layout_weight="10" 
  android:orientation="vertical"> 
  <RelativeLayout 
   android:layout_width="match_parent" 
   android:layout_height="0dp" 
   android:layout_weight="3"> 
   <ImageButton 
    android:id="@+id/head_img" 
    android:layout_width="60dp" 
    android:layout_height="60dp" 
    android:background="@drawable/ic_launcher" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true"/> 
   <TextView 
    android:id="@+id/name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="    " 
    android:layout_marginTop="10dp" 
    android:layout_below="@+id/head_img" 
    android:layout_centerHorizontal="true" 
    android:textColor="@color/yellow" 
    android:textSize="18sp"/> 
   <TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/name" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="5dp" 
    android:textSize="15sp" 
    android:textColor="@color/yellow2" 
    android:text="        "/> 
   <TextView 
    android:id="@+id/textView2" 
    android:layout_below="@+id/textView1" 
    android:layout_centerHorizontal="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="20dp" 
    android:textColor="@color/yellow" 
    android:textSize="23sp" 
    android:text="    ,    "/> 
  </RelativeLayout> 
  <RelativeLayout 
   android:layout_width="match_parent" 
   android:layout_height="0dp" 
   android:layout_weight="3"> 
   <Button 
    android:id="@+id/open_btn" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:background="@drawable/anim" 
    android:layout_marginTop="50dp" 
    android:layout_centerHorizontal="true" /> 
  </RelativeLayout> 
  <RelativeLayout 
   android:layout_width="match_parent" 
   android:layout_height="0dp" 
   android:layout_weight="1"> 
   <ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/blow" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="14dp" 
    android:id="@+id/imageView" /> 
  </RelativeLayout> 
 </LinearLayout> 
</LinearLayout> 

3.보너스 창 효과,효과 및 코드 는 다음 과 같 습 니 다.
절 차 는 다음 과 같다.
① 사용자 정의 보너스 팝 업 창 Diaog 클래스:빨간색 코드 부분 은 애니메이션 을 시작 하 는 부분 입 니 다.

package com.example.xuboyu.luckeymoney; 
import android.app.Dialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.graphics.drawable.AnimationDrawable; 
import android.view.Display; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.WindowManager; 
import android.widget.Button; 
import android.widget.TextView; 
/** 
 *         
 * Created by xuboyu on 2017/2/20. 
 */ 
public class LuckeyDialog extends Dialog { 
 public LuckeyDialog(Context context) { 
  super(context); 
 } 
 public LuckeyDialog(Context context, int theme) { 
  super(context, theme); 
 } 
 public static class Builder { 
  private Context context; 
  private String name;//        
  private Button red_page; 
  //      
  private String openButtonText; 
  private OnClickListener openButtonClickListener; 
  //     
  private String closeButtonText; 
  private OnClickListener closeButtonClickListener; 
  public Builder(Context context, int dialog) { 
   this.context = context; 
  } 
  /** 
   * Set the Dialog title from resource 
   * 
   * @param name 
   * @return 
   */ 
  public Builder setName(int name) { 
   this.name = (String) context.getText(name); 
   return this; 
  } 
  /** 
   * Set the Dialog title from String 
   * 
   * @param name 
   * @return 
   */ 
  public Builder setName(String name) { 
   this.name = name; 
   return this; 
  } 
  /** 
   * Set the positive button resource and it's listener 
   * 
   * @param closeButtonText 
   * @return 
   */ 
  public Builder setCloseButton(int closeButtonText, 
           OnClickListener listener) { 
   this.closeButtonText = (String) context 
     .getText(closeButtonText); 
   this.closeButtonClickListener = listener; 
   return this; 
  } 
  public Builder setCloseButton(String closeButtonText, 
          OnClickListener listener) { 
   this.closeButtonText = closeButtonText; 
   this.closeButtonClickListener = listener; 
   return this; 
  } 
  /** 
   * Set the positive button resource and it's listener 
   * 
   * @param openButtonText 
   * @return 
   */ 
  public Builder setOpenButton(int openButtonText, 
           OnClickListener listener) { 
   this.openButtonText = (String) context 
     .getText(openButtonText); 
   this.openButtonClickListener = listener; 
   return this; 
  } 
  public Builder setOpenButton(String openButtonText, 
           OnClickListener listener) { 
   this.openButtonText = openButtonText; 
   this.openButtonClickListener = listener; 
   return this; 
  } 
  public LuckeyDialog create() { 
   LayoutInflater inflater = (LayoutInflater) context 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
   //     
   final LuckeyDialog dialog = new LuckeyDialog(context,R.style.Dialog); 
   View layout = inflater.inflate(R.layout.open, null); 
   red_page = (Button) layout.findViewById(R.id.open_btn); 
   <span style="color:#ff0000;">//red          ImageView   
   AnimationDrawable animationDrawable = (AnimationDrawable)red_page.getBackground(); 
   animationDrawable.start();//    </span> 
   dialog.addContentView(layout, new ViewGroup.LayoutParams( 
     ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
   //         
   ((TextView) layout.findViewById(R.id.name)).setText(name); 
   //         
   if (openButtonText != null) { 
    ((Button) layout.findViewById(R.id.open_btn)) 
      .setText(openButtonText); 
    if (openButtonClickListener != null) { 
     ((Button) layout.findViewById(R.id.open_btn)) 
       .setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
         openButtonClickListener.onClick(dialog, 
           DialogInterface.BUTTON_POSITIVE); 
        } 
       }); 
    } 
   } else { 
    // if no confirm button just set the visibility to GONE 
    layout.findViewById(R.id.open_btn).setVisibility( 
      View.GONE); 
   } 
   //       
   if (closeButtonText != null) { 
    ((Button) layout.findViewById(R.id.close)) 
      .setText(closeButtonText); 
    if (closeButtonClickListener != null) { 
     ((Button) layout.findViewById(R.id.close)) 
       .setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
         closeButtonClickListener.onClick(dialog, 
           DialogInterface.BUTTON_POSITIVE); 
        } 
       }); 
    } 
   } else { 
    // if no confirm button just set the visibility to GONE 
    layout.findViewById(R.id.close).setVisibility( 
      View.GONE); 
   } 
   dialog.setContentView(layout); 
   return dialog; 
  } 
 } 
} 
② 시스템 스타일 파일 에 Diaog 추가

<style name="Dialog" parent="android:style/Theme.Dialog"> 
  <!-- <item name="android:background">#00000000</item> --> 
  <item name="android:windowBackground">@drawable/red_bg</item> 
  <item name="android:windowFrame">@null</item> 
  <item name="android:windowNoTitle">true</item> 
  <item name="android:windowIsFloating">true</item><!--      activity  --> 
  <item name="android:windowCloseOnTouchOutside">false</item 
</style> 
③ MainActivity 에서 사용자 정의 Diaog 클래스 를 호출 하여 실례 화하 고 팝 업 된 보너스 가 화면 에서 차지 하 는 비율 을 설정 합 니 다.그렇지 않 으 면 팝 업 된 보너스 가 전체 화면 을 차지 하고 빨간색 코드 는 크기 코드 를 설정 합 니 다.

red1.setOnClickListener(new View.OnClickListener() { 
   @Override 
   public void onClick(View view) { 
    LuckeyDialog.Builder builder = new LuckeyDialog.Builder(mContext,R.style.Dialog);//  style  Diaog 
    builder.setName("  "); 
    builder.setOpenButton("", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     Intent intent = new Intent(mContext,Open.class); 
     startActivity(intent); 
     dialog.dismiss(); 
     } 
    }); 
    builder.setCloseButton("", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int i) { 
      dialog.dismiss(); 
     } 
    }); 
    <span style="color:#ff0000;">Dialog dialog = builder.create(); 
    Window dialogWindow = dialog.getWindow(); 
    WindowManager m = getWindowManager(); 
    Display d = m.getDefaultDisplay(); //      、   
    WindowManager.LayoutParams p = dialogWindow.getAttributes(); //             
    p.height = (int) (d.getHeight() * 0.7); //         0.6 
    p.width = (int) (d.getWidth() * 0.75); //         0.65 
    dialogWindow.setAttributes(p); 
</span> 
    dialog.show(); 
   } 
  }); 
4.클릭 후 두 가지 결 과 를 완성 합 니 다.즉,빼 앗 거나 빼 앗 지 못 한 두 가지 결 과 는 Intent 점프 를 통 해 성공 류 를 수령 하거나 실패 한 팝 업 창 을 뛰 어 내 리 는 간단 한 논리 입 니 다.
① 빼 앗 은 효과 도 는 여기 화면 이 간단 하면 코드 를 붙 이지 않 는 다.

② 실패 한 팝 업 창의 효과 그림 입 니 다.여기 서 사용자 정의 팝 업 창 코드 는 보너스 팝 업 창 코드 와 대체적으로 비슷 합 니 다.차이 점 은 바로 보너스 버튼 이 하나 빠 졌 을 뿐 이 고 구조 도 상대 적 으로 간단 해서 붙 이지 않 습 니 다.주로 이 안에 비례 를 사용 하여 몇 개의 위 젯 의 위 치 를 계획 해 야 합 니 다(위의 보너스 코드 참조).그렇지 않 으 면 여러 화면 에 어 울 리 지 않 습 니 다.압축 스 트 레 칭 변형 이 발생 할 수 있 습 니 다.

여기까지 대략적인 보너스 애니메이션 효 과 는 기본적으로 완성 되 었 습 니 다!물론 실제 응용 에 서 는 네트워크 요청 같은 것 이 필요 하 다 면 업무 요구 에 따라 가입 해 야 한다.
위 에서 말 한 것 은 작은 편집자 가 여러분 에 게 소개 한 안 드 로 이 드 가짜 동전 이 위 챗 보너스 애니메이션 효 과 를 회전 시 키 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 저 에 게 메 시 지 를 남 겨 주세요.작은 편집자 가 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기