zoukankan      html  css  js  c++  java
  • android脚步---不同界面之间切换

    对于一个app,可能需要多个界面,使用Button或者其他控件在不同界面之间切换,那么如何做到呢

    首先必须明确,一般一个activity.java文件一般只对应一个界面即一个layout.xml文件,还有可能是在一个界面上再引入一个半屏或者全屏,这样需要用到一些手段,例子在下面放出来。

    通常需要新建一个java文件,然后进行处理,新建java文件过程如下:New-class-

     

     输入Name,选择继承的类,一般都是选择最通用的安卓原生的activity类,finish之后得到一个新的java文件,为了方便,可以右键,source-override,选择方法重载,比如,oncreate 等

    以自己接触到的代码为例:

    mTestDialog = new CustomDialog.Builder(this).create(testView2,
                    R.style.FullScreenDialog, Gravity.NO_GRAVITY);
            mTestDialog.show();

    引入一个全屏文件,新建一个CustomDialog.Builder,建立一个testvie2的全屏xml文件的关联dialog,然后显示这个dialog,

    CustomDialog.java文件

    package com.leadcore.uudatoutie.ui;
     
    import com.leadcore.uudatoutie.PhotoUI;
    import com.leadcore.uudatoutie.R;
    import com.leadcore.uudatoutie.util.LogMan;
    
    import android.app.Dialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.graphics.drawable.Drawable;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup.LayoutParams;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.TextView;
     
    /**
     * 
     * Create custom Dialog windows for your application
     * Custom dialogs rely on custom layouts wich allow you to 
     * create and use your own look & feel.
     * 
     * Under GPL v3 : http://www.gnu.org/licenses/gpl-3.0.html
     * 
     * @author antoine vianey
     *
     */
    public class CustomDialog extends Dialog {
        private static final String TAG = "CustomDialog";
     
        private static View layout;
        
        public CustomDialog(Context context, int theme) {
            super(context, theme);
        }
     
        public CustomDialog(Context context) {
            super(context);
        }
    
        @Override
        public void setTitle(CharSequence title) {
            ((TextView) layout.findViewById(R.id.title)).setText(title);
        }
        
        public void setIcon(Drawable drawable) {
            ((TextView) layout.findViewById(R.id.title)).setCompoundDrawables(drawable, null, null, null);
        }
     
        /**
         * Helper class for creating a custom dialog
         */
        public static class Builder {
     
            private Context context;
            private String title;
            private String message;
            private String positiveButtonText;
    //        private String negativeButtonText;
            private View contentView;
     
            private DialogInterface.OnClickListener 
                            positiveButtonClickListener;
    //                        negativeButtonClickListener;
     
            public Builder(Context context) {
                this.context = context;
            }
     
            /**
             * Set the Dialog message from String
             * @param title
             * @return
             */
            public Builder setMessage(String message) {
                this.message = message;
                return this;
            }
     
            /**
             * Set the Dialog message from resource
             * @param title
             * @return
             */
            public Builder setMessage(int message) {
                this.message = (String) context.getText(message);
                return this;
            }
     
            /**
             * Set the Dialog title from resource
             * @param title
             * @return
             */
            public Builder setTitle(int title) {
                this.title = (String) context.getText(title);
                return this;
            }
     
            /**
             * Set the Dialog title from String
             * @param title
             * @return
             */
            public Builder setTitle(String title) {
                this.title = title;
                return this;
            }
     
            /**
             * Set a custom content view for the Dialog.
             * If a message is set, the contentView is not
             * added to the Dialog...
             * @param v
             * @return
             */
            public Builder setContentView(View v) {
                this.contentView = v;
                return this;
            }
     
            /**
             * Set the positive button resource and it's listener
             * @param positiveButtonText
             * @param listener
             * @return
             */
            public Builder setPositiveButton(int positiveButtonText,
                    DialogInterface.OnClickListener listener) {
                this.positiveButtonText = (String) context
                        .getText(positiveButtonText);
                this.positiveButtonClickListener = listener;
                return this;
            }
     
            /**
             * Set the positive button text and it's listener
             * @param positiveButtonText
             * @param listener
             * @return
             */
            public Builder setPositiveButton(String positiveButtonText,
                    DialogInterface.OnClickListener listener) {
                this.positiveButtonText = positiveButtonText;
                this.positiveButtonClickListener = listener;
                return this;
            }
     
            /**
             * Set the negative button resource and it's listener
             * @param negativeButtonText
             * @param listener
             * @return
             */
    //        public Builder setNegativeButton(int negativeButtonText,
    //                DialogInterface.OnClickListener listener) {
    //            this.negativeButtonText = (String) context
    //                    .getText(negativeButtonText);
    //            this.negativeButtonClickListener = listener;
    //            return this;
    //        }
     
            /**
             * Set the negative button text and it's listener
             * @param negativeButtonText
             * @param listener
             * @return
             */
    //        public Builder setNegativeButton(String negativeButtonText,
    //                DialogInterface.OnClickListener listener) {
    //            this.negativeButtonText = negativeButtonText;
    //            this.negativeButtonClickListener = listener;
    //            return this;
    //        }
     
            /**
             * Create the custom dialog
             */
            public CustomDialog create(View view, int style, int gravity) {
                LayoutInflater inflater = (LayoutInflater) context
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                // instantiate the dialog with the custom Theme
                final CustomDialog dialog = new CustomDialog(context, style);
                layout = view;
    //            diaLogMan.addContentView(layout, new LayoutParams(
    //                  LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
                // set the dialog title
                if(title!=null){
                    ((TextView) layout.findViewById(R.id.title)).setText(title);
                }
                // set the confirm button
                if (positiveButtonText != null) {
                    ((Button) layout.findViewById(R.id.cancelButton))
                            .setText(positiveButtonText);
                    if (positiveButtonClickListener != null) {
                        ((Button) layout.findViewById(R.id.cancelButton))
                                .setOnClickListener(new View.OnClickListener() {
                                    public void onClick(View v) {
                                        LogMan.e(TAG,"positiveButtonClickListener");
                                        positiveButtonClickListener.onClick(
                                                dialog, 
                                                DialogInterface.BUTTON_POSITIVE);
                                        dialog.dismiss();
                                    }
                                });
                    }
                } else {
    //                // if no confirm button just set the visibility to GONE
    //                layout.findViewById(R.id.cancelButton).setVisibility(
    //                        View.GONE);
                }
                // set the content message
                if (message != null) {
                    ((TextView) layout.findViewById(
                            R.id.message)).setText(message);
                } else if (contentView != null) {
                    // if no message set
                    // add the contentView to the dialog body
                    ((LinearLayout) layout.findViewById(R.id.content))
                            .removeAllViews();
                    ((LinearLayout) layout.findViewById(R.id.content))
                            .addView(contentView, 
                                    new LayoutParams(
                                            LayoutParams.FILL_PARENT, 
                                            LayoutParams.WRAP_CONTENT));
                }
                dialog.getWindow().setGravity(gravity);
                dialog.setContentView(layout);
                return dialog;
            }
     
        }
     
    }

    如何在其他应用里面仿照这个方法不单要CustomDialog.java文件,还需要扩展Custom-dialog.xml文件

    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
     
        <LinearLayout 
            android:orientation="vertical"
            android:background="@drawable/photoframe_title"
            android:layout_width="fill_parent"
            android:layout_height="@dimen/dialog_title_height"
            android:gravity="center_vertical">
     
            <TextView
                android:id="@+id/title"
                android:paddingRight="10dip"
                android:paddingLeft="10dip"
                android:layout_width="wrap_content"
                android:layout_gravity="center"
                android:layout_height="wrap_content"
                style="@style/MyDialogTitle"/>
     
        </LinearLayout>
     
        <LinearLayout 
            android:id="@+id/content"
            android:orientation="horizontal"
            android:background="@android:color/white"
            android:paddingTop="10dp"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
     
            <TextView
                android:id="@+id/share_weixin"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="5dip" 
                android:drawableTop="@drawable/share_weixin"
                android:text="@string/review_share_weixin"
                android:gravity="center_horizontal"
                android:textColor="@color/text_dialog_button_title"
                android:background="@drawable/bg_pressed"/>
            <TextView
                android:id="@+id/share_weixin_guys"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="5dip" 
                android:drawableTop="@drawable/share_weixin_guys"
                android:text="@string/review_share_weixin_guys"
                android:gravity="center_horizontal"
                android:textColor="@color/text_dialog_button_title"
                android:background="@drawable/bg_pressed"/>
            <TextView
                android:id="@+id/share_sina"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="5dip" 
                android:drawableTop="@drawable/share_sina"
                android:text="@string/review_share_sina"
                android:gravity="center_horizontal"
                android:textColor="@color/text_dialog_button_title"
                android:background="@drawable/bg_pressed"/>
            <TextView
                android:id="@+id/share_more"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="5dip" 
                android:drawableTop="@drawable/share_more"
                android:text="@string/review_share_more"
                android:gravity="center_horizontal"
                android:textColor="@color/text_dialog_button_title"
                android:background="@drawable/bg_pressed"/>
    </LinearLayout>
     
        <LinearLayout 
            android:orientation="horizontal"
            android:background="@android:color/white"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
     
            <Button 
                android:id="@+id/cancelButton"
                android:layout_width="match_parent"
                style="@style/MyDialogButton"
                />
        </LinearLayout>
     
    </LinearLayout>
  • 相关阅读:
    创建Variant数组
    ASP与存储过程(Stored Procedures)
    FileSystemObject对象成员概要
    Kotlin 朱涛9 委托 代理 懒加载 Delegate
    Kotlin 朱涛 思维4 空安全思维 平台类型 非空断言
    Kotlin 朱涛7 高阶函数 函数类型 Lambda SAM
    Kotlin 朱涛16 协程 生命周期 Job 结构化并发
    Proxy 代理模式 动态代理 cglib MD
    RxJava 设计理念 观察者模式 Observable lambdas MD
    动态图片 Movie androidgifdrawable GifView
  • 原文地址:https://www.cnblogs.com/Anita9002/p/4126862.html
Copyright © 2011-2022 走看看