zoukankan      html  css  js  c++  java
  • Android实现控件动画效果

    MainActivity.java

    public class MainActivity extends AppCompatActivity {
        private ImageView iv;
        private int j = 0;
        private Button enter;
        private LinearLayout leftLayout, rightLayout;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    //        iv = (ImageView) findViewById(R.id.iv);
    
            change();
    
            leftLayout = (LinearLayout) findViewById(R.id.layout_left);
            rightLayout = (LinearLayout) findViewById(R.id.layout_right);
    
            TopBar topBar = (TopBar) findViewById(R.id.topbar);
            topBar.setOnTopBarClickListener(new TopBar.TopBarClickListener() {
                @Override
                public void onLeftClick() {
                    Toast.makeText(MainActivity.this, "left", Toast.LENGTH_SHORT).show();
    
                    /*LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
                    View view = inflater.inflate(R.layout.item, null);
                    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
                    addContentView(view,params);*/
    
    //                twoAnimation();
    
    //                offSet();
    
    //                flash();
    
                    Animation animation = AnimationUtils.loadAnimation(MainActivity.this,R.anim.all);
                    leftLayout.startAnimation(animation);
    
                    leftLayout.setVisibility(View.VISIBLE);
                    rightLayout.setVisibility(View.GONE);
                }
    
                @Override
                public void onRightClick() {
                    Toast.makeText(MainActivity.this, "right", Toast.LENGTH_SHORT).show();
    
                    rightLayout.setVisibility(View.VISIBLE);
                    leftLayout.setVisibility(View.GONE);
                }
            });
        }
    
        //Activity交换时的动画效果
        public void change() {
            enter = (Button) findViewById(R.id.btn_enter);
            enter.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(MainActivity.this, "haha", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(MainActivity.this, EnterActivity.class);
                    startActivity(intent);
                    overridePendingTransition(R.anim.activity_enter, R.anim.activity_out);
                }
            });
        }
    
        //闪动效果
        public void flash() {
            Animation animation = AnimationUtils.loadAnimation(MainActivity.this,R.anim.flash);
            leftLayout.startAnimation(animation);
        }
    
        //给某些动画设置了延迟时间
        public void offSet() {
            Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.offset);
            leftLayout.startAnimation(animation);
        }
    
        //一个动画接着一个动画
        public void twoAnimation() {
            Animation animation1 = new AlphaAnimation(0.1f, 1.0f);
            final Animation animation2 = new ScaleAnimation(0.1f, 1.0f, 0.1f, 1.0f);
            animation1.setDuration(2000);
            animation2.setDuration(2000);
            leftLayout.startAnimation(animation1);
            animation1.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {
    
                }
    
                @Override
                public void onAnimationEnd(Animation animation) {
                    leftLayout.startAnimation(animation2);
                }
    
                @Override
                public void onAnimationRepeat(Animation animation) {
    
                }
            });
        }
        
    }

    EnterActivity.java

    public class EnterActivity extends AppCompatActivity {
        private ImageView iv;
    
        private Button btn;
    
        private List<String> mData;
        private ListView listview;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_enter);
    
            iv = (ImageView) findViewById(R.id.iv);
            btn = (Button) findViewById(R.id.btn_myworld);
    
            listview = (ListView) findViewById(R.id.listview);
            mData = new ArrayList<String>();
    
            for (int i = 0; i < 10; i++) {
                mData.add("" + i);
            }
    
            ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(
                    EnterActivity.this, android.R.layout.simple_list_item_1, mData);
            listview.setAdapter(mAdapter);
    
            LayoutAnimationController lac = new LayoutAnimationController(
                    AnimationUtils.loadAnimation(this, R.anim.flash));
            lac.setOrder(LayoutAnimationController.ORDER_RANDOM);
            listview.setLayoutAnimation(lac);
            listview.startLayoutAnimation();
    
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    listview.setVisibility(View.GONE);
    
                    iv.setVisibility(View.VISIBLE);
                    iv.setImageResource(R.drawable.image_list);
                    AnimationDrawable drawable = (AnimationDrawable) iv.getDrawable();
                    drawable.start();
                }
            });
        }
    }

    TopBar.java

    public class TopBar extends RelativeLayout {
        private Button leftBtn, rightBtn;
        private TextView title;
    
        private int leftTextColor;
        private Drawable leftBackground;
        private String leftText;
    
        private int rightTextColor;
        private Drawable rightBackground;
        private String rightText;
    
        private int titleColor;
        private float titleTextSize;
        private String titleText;
    
        private LayoutParams leftParams, rightParams, titleParams;
    
        public interface TopBarClickListener {
            void onLeftClick();
            void onRightClick();
        }
    
        private TopBarClickListener listener;
    
        public void setOnTopBarClickListener (TopBarClickListener listener) {
            this.listener = listener;
        }
    
        public TopBar(Context context, AttributeSet attrs) {
            super(context, attrs);
    
            //1.
            TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.topBar);
    
            leftTextColor = ta.getColor(R.styleable.topBar_leftTextColor, 0);
            leftBackground = ta.getDrawable(R.styleable.topBar_leftBackground);
            leftText = ta.getString(R.styleable.topBar_leftText);
    
            rightTextColor = ta.getColor(R.styleable.topBar_rightTextColor, 0);
            rightBackground = ta.getDrawable(R.styleable.topBar_rightBackground);
            rightText = ta.getString(R.styleable.topBar_rightText);
    
            titleColor = ta.getColor(R.styleable.topBar_titleTextColors, 0);
            titleTextSize = ta.getDimension(R.styleable.topBar_titleTextSize, 0);
            titleText = ta.getString(R.styleable.topBar_titleText);
    
            //回收资源,避免浪费,避免缓存造成的影响
            ta.recycle();
    
            //2.
            leftBtn = new Button(context);
            rightBtn = new Button(context);
            title = new TextView(context);
    
            leftBtn.setTextColor(leftTextColor);
            leftBtn.setBackground(leftBackground);
            leftBtn.setText(leftText);
            leftBtn.setGravity(Gravity.CENTER);
    
            rightBtn.setTextColor(rightTextColor);
            rightBtn.setBackground(rightBackground);
            rightBtn.setText(rightText);
    
            title.setTextColor(titleColor);
            title.setTextSize(titleTextSize);
            title.setText(titleText);
            title.setGravity(Gravity.CENTER);
    
            setBackgroundColor(0xFFF12456);
    
            //3.
            leftParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            leftParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, TRUE);
            addView(leftBtn, leftParams);
    
            rightParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            rightParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, TRUE);
            addView(rightBtn, rightParams);
    
            titleParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT);
            titleParams.addRule(RelativeLayout.CENTER_IN_PARENT, TRUE);
            addView(title, titleParams);
    
            //4.
            leftBtn.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    listener.onLeftClick();
                }
            });
    
            rightBtn.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    listener.onRightClick();
                }
            });
    
        }
    }

    activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:custom="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <my.com.example.x550v.uidisigndmo.TopBar
            android:id="@+id/topbar"
            android:layout_width="match_parent"
            android:layout_height="40dp"
    
            custom:titleText="我的世界"
            custom:titleTextSize="10sp"
            custom:titleTextColors="#fff"
            
            custom:leftBackground="@drawable/button"
            custom:leftText="上一页"
            custom:leftTextColor="#000"
    
            custom:rightBackground="@drawable/button"
            custom:rightText="下一页"
            custom:rightTextColor="#000"/>
    
        <Button
            android:id="@+id/btn_enter"
            android:text="Enter"
            android:layout_alignParentBottom="true"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
        <!--<ImageView
            android:id="@+id/iv"
            android:background="#f7b2b2"
            android:layout_below="@id/topbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />-->
        <LinearLayout
            android:id="@+id/layout_left"
            android:orientation="vertical"
            android:layout_below="@id/topbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="gone">
            <Button
                android:text="白日依山尽"
                android:textSize="20sp"
                android:layout_gravity="center"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
            <ImageView
                android:layout_gravity="center_horizontal"
                android:background="@drawable/ahri1"
                android:layout_width="200dp"
                android:layout_height="380dp" />
            <Button
                android:text="黄河入海流"
                android:textSize="20sp"
                android:layout_gravity="center"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
        </LinearLayout>
    
        <LinearLayout
            android:id="@+id/layout_right"
            android:orientation="vertical"
            android:layout_below="@id/topbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="gone">
            <Button
                android:text="欲穷千里目"
                android:textSize="20sp"
                android:layout_gravity="center"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
            <ImageView
                android:layout_gravity="center_horizontal"
                android:background="@drawable/ahri2"
                android:layout_width="200dp"
                android:layout_height="380dp" />
            <Button
                android:text="更上一层楼"
                android:textSize="20sp"
                android:layout_gravity="center"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
        </LinearLayout>
    
    </RelativeLayout>

    activity_enter.xml

    <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:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:orientation="vertical"
        tools:context="my.com.example.x550v.uidisigndmo.EnterActivity">
        <Button
            android:id="@+id/btn_myworld"
            android:text="我的世界观"
            android:textSize="20sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
        <ListView
            android:id="@+id/listview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    
        <ImageView
            android:id="@+id/iv"
            android:layout_gravity="center_horizontal"
            android:visibility="gone"
            android:layout_width="250dp"
            android:layout_height="500dp" />
    
    </LinearLayout>

    attrs.xml

    <resources>
        <declare-styleable name="topBar">
            <attr name="titleText" format="string"/>
            <attr name="titleTextSize" format="dimension" />
            <attr name="titleTextColors" format="color"/>
    
            <attr name="leftBackground" format="reference|color"/>
            <attr name="leftText" format="string"/>
            <attr name="leftTextColor" format="color"/>
    
            <attr name="rightBackground" format="reference|color"/>
            <attr name="rightText" format="string"/>
            <attr name="rightTextColor" format="color"/>
    
         </declare-styleable>
    </resources>

    image_list.xml

    <animation-list
        xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:drawable="@drawable/ahri1"
            android:duration="2000"/>
        <item
            android:drawable="@drawable/ashe"
            android:duration="2000"/>
        <item
            android:drawable="@drawable/ahri2"
            android:duration="2000"/>
        <item
            android:drawable="@drawable/brand"
            android:duration="2000"/>
    </animation-list>

    all.xml

    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:fillBefore="false"
        android:fillAfter="true">
        <!--<alpha-->
            <!--android:duration="2000"-->
            <!--android:fromAlpha="0.1"-->
            <!--android:toAlpha="1.0"/>-->
    
        <!--<scale-->
            <!--android:duration="2000"-->
            <!--android:fillAfter="false"-->
            <!--android:fromXScale="0.1"-->
            <!--android:fromYScale="0.1"-->
            <!--android:toXScale="1.0"-->
            <!--android:toYScale="1.0"-->
            <!--android:pivotX="80%"-->
            <!--android:pivotY="80%"-->
            <!--android:interpolator="@android:anim/accelerate_interpolator"/>-->
    
        <translate
            android:duration="2000"
            android:fromXDelta="-400"
            android:fromYDelta="-400"
            android:toXDelta="400"
            android:toYDelta="400" />
    
    
            <!--<rotate-->
            <!--android:duration="2000"-->
            <!--android:fromDegrees="0"-->
            <!--android:toDegrees="360"-->
            <!--android:pivotX="30%"-->
            <!--android:pivotY="30%"/>-->
    </set>
  • 相关阅读:
    Python超轻量数据库之SQLite
    Docker镜像管理透析
    Docker-Compose实战「下篇」
    Docker-Compose实战「上篇」
    Docker-Compose初体验
    Docker火遍全球!dockerfile构建你必须得会
    Docker轻量管理Dashboard
    MongoDB入门实操《上篇》
    用LinkedList完成一个堆栈MyStack.2
    [翻译] 基于.NET Core构建微服务 第五部分:Marten域聚合的理想仓库
  • 原文地址:https://www.cnblogs.com/tianhengblogs/p/5263343.html
Copyright © 2011-2022 走看看