안 드 로 이 드 모조 동전 회전 위 챗 보너스 애니메이션 효과
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 점프 를 통 해 성공 류 를 수령 하거나 실패 한 팝 업 창 을 뛰 어 내 리 는 간단 한 논리 입 니 다.① 빼 앗 은 효과 도 는 여기 화면 이 간단 하면 코드 를 붙 이지 않 는 다.
② 실패 한 팝 업 창의 효과 그림 입 니 다.여기 서 사용자 정의 팝 업 창 코드 는 보너스 팝 업 창 코드 와 대체적으로 비슷 합 니 다.차이 점 은 바로 보너스 버튼 이 하나 빠 졌 을 뿐 이 고 구조 도 상대 적 으로 간단 해서 붙 이지 않 습 니 다.주로 이 안에 비례 를 사용 하여 몇 개의 위 젯 의 위 치 를 계획 해 야 합 니 다(위의 보너스 코드 참조).그렇지 않 으 면 여러 화면 에 어 울 리 지 않 습 니 다.압축 스 트 레 칭 변형 이 발생 할 수 있 습 니 다.
여기까지 대략적인 보너스 애니메이션 효 과 는 기본적으로 완성 되 었 습 니 다!물론 실제 응용 에 서 는 네트워크 요청 같은 것 이 필요 하 다 면 업무 요구 에 따라 가입 해 야 한다.
위 에서 말 한 것 은 작은 편집자 가 여러분 에 게 소개 한 안 드 로 이 드 가짜 동전 이 위 챗 보너스 애니메이션 효 과 를 회전 시 키 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 저 에 게 메 시 지 를 남 겨 주세요.작은 편집자 가 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.