文档章节

类似path登陆的卡片实现

fyales
 fyales
发布于 2014/07/26 21:48
字数 635
阅读 18
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

    大家作为程序开发人员,相信对path这款应用程序都相当熟悉,path界面的设计就算不是最优秀,也是业界顶级的。最近Path为自己的应用程序添加了卡片的功能,比如卡片登陆的功能,看起来非常拉风。所以,我也尝试了实现了一下,虽然不可能达到Path那么变态的交互,但是基本的功能还是可以实现的。

    废话不说,直接进入主题。首先你肯定必须集成一个dialogFragment类,在子类中覆写onCreateDialog方法,在里面实现自定义布局,代码如下:

package com.example.layouttrans;

import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;

public class WeiDialogFragment extends DialogFragment {

    /**
     * Create a new instance of MyDialogFragment, providing "num" as an
     * argument.
     */
    static WeiDialogFragment newInstance(String title, String message) {
        WeiDialogFragment f = new WeiDialogFragment();

        Bundle args = new Bundle();
        args.putString("title", title);
        args.putString("message", message);
        f.setArguments(args);

        return f;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Log.d("wei", "this is onCreateDialog");

        View view = LayoutInflater.from(getActivity()).inflate(

                R.layout.fragment_dialog, null);

        String title = getArguments().getString("title");
        String message = getArguments().getString("message");

        Builder builder = new AlertDialog.Builder(getActivity());
        builder
                .setView(view)
                .setTitle(title)
                .setMessage(message)
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub

                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        dismiss();
                    }
                });

        Dialog dialog = builder.create();

        dialog.getWindow().setWindowAnimations(R.style.weiDialog);

        return dialog;

    }

}

    代码中最重要的是dialog.getWindow().setWindowAnimation(R.style.weiDialog)方法。因为DialogFragment其实是Fragment中嵌套一个dialog。你必须获得window对象才能设置动画。下面是style文件和动画文件

style.xml

<style name="weiDialog" parent="@android:style/Animation.Dialog"> 
	     <item name="android:windowEnterAnimation">@anim/dialog_in</item>
	     <item name="android:windowExitAnimation">@anim/dialog_out</item>
	</style>

dialog_in.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:fromYDelta="-200%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toYDelta="0%p" >
</translate>

dialog_out.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:fromYDelta="-200%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toYDelta="0%p" >
</translate>

在这里值得注意的是有些数值是负值,这是因为dialog窗口本身只占据屏幕的一小部分,所以如果动画效果从0开始,那么就不是从屏幕最上面向下划出,而是从中间凭空出现(这样显得很怪异),具体情况看情况而定。

另外,布局文件和MainActivity就不给出了,相信对大家没什么难度,本人也是android新手,如果有什么不对的敌方,欢迎指正。

© 著作权归作者所有

fyales
粉丝 1
博文 18
码字总数 21081
作品 0
浦东
程序员
私信 提问
SSStackedPageView

SSStackedPageView 实现类似 Passbook App 的卡片视图效果。多个视图类似卡片的样式重叠排列在一起,用手往上拖动(或者点击)其中一个视图,该视图会从众多卡片视图中冒出,成为主视图。之后...

小编辑
2014/04/23
336
0
10、Flutter常用布局-Card卡片式布局

一、卡片式布局Card的使用 卡片式布局类似ViewList,但是列表会以物理卡片的形态进行展示。卡片式布局默认是撑满整个外部容器的,如果想设置卡片的宽高,需要在外部容器就进行制定。 实现效果...

快乐的瓶子
10/30
112
0
S021 小蜜蜂能不能采到花蜜就靠你来决定了

  上节课完成了codeorg课程2的第11节的课程。   这节课学习codeorg课程2的第12节和第13节课程。   课程2第12节   打开浏览器,进入codeorg的课程2,找到第12节课程的名称为“条件语句...

零基础学编程
2018/09/17
0
0
perl scp 进程同步问题

各位大侠,有个问题请教: 需求:从A服务器拷贝数据文件到B服务器,双方均为linux 系统,需要用户名密码登陆验证 使用工具 Linux scp + Perl 语言 调用了Expect 包用来登陆目标系统。 程序实...

众星烁
2014/10/22
192
0
Flutter学习笔记(21)--TextField文本框组件和Card卡片组件

如需转载,请注明出处:Flutter学习笔记(21)--TextField文本框组件和Card卡片组件 今天来学习下TextField文本框组件和Card卡片组件。 只要是应用程序就少不了交互,基本上所有的应用程序都...

CurtisWgh
08/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何更改iOS应用程序的名称?

我前几天用一个愚蠢的开发代码名称开始了一个iPhone项目,现在我想改变项目的名称,因为它已经接近完成了。 但是我不知道如何使用Xcode来做这件事,尝试在info.plist文件中更改应用程序的名称...

技术盛宴
19分钟前
2
0
关于win10tensorflow的配置(CPU+GPU)

主要内容 CPU篇 GPU篇 【前期准备与注意事项】 环境:window1064位+python36(37)+CUDA9.0+cuDNN7.6+tensorflow_gpu-1.12.0 软件:anaconda+pycharm 硬件:有nvidia显卡的笔记本或台式(非A...

放只虎归个山
28分钟前
1
0
C#中的多行字符串文字

有没有一种简单的方法可以在C#中创建多行字符串文字? 这是我现在所拥有的: string query = "SELECT foo, bar"+ " FROM table"+ " WHERE id = 42"; 我知道PHP有 <<<BLOCKBLOCK; C#是......

javail
35分钟前
3
0
微信支付之小微商户扫盲!支持信用卡,免营业执照!

微信支付商户申请面向线下小微商户开放,符合条件的微信支付服务商可为小微商户发起接入申请。无需营业执照。 小微商户日收款额度为5万元~30万元 。 信用卡支付日限额为1千;月限额1万。 结算...

吴伟祥
今天
4
0
大话SDWebImage(三)-- 图片下载层

四、图片下载层 SDWebImageDownloader是处理图片下载的类 4.1 图片下载步骤 首先介绍下dispatch_barrier,GCD中的dispatch_barrier目的是在并发队列实现串行的效果,创建下载任务SDWebImageD...

aron1992
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部