android脚步---不同界面之间切换
Android --- 不同 之间 界面 切换 脚步
2023-09-14 08:59:07 时间
对于一个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>
相关文章
- unity3d android互调
- Android 开发之旅:短信的收发及在android模拟器之间实践(二)
- Android API之android.widget.Filterable
- Android ---paint类
- android脚步---UI界面修改,增加按钮和监听
- Android学习---SQLite数据库的增删改查和事务(transaction)调用
- Android开发学习---android下的数据持久化,保存数据到rom文件,android_data目录下文件访问的权限控制
- android Vibrator 使用
- android脚步---不同界面之间切换
- android脚步---如何看log之程序停止运行,和UI线程和非UI线程之间切换
- 《android开发艺术探索》读书笔记(十一)--Android的线程和线程池
- Android 11.0 SystemUI 音量条UI定制的功能(一)
- Android 11.0 12.0进程保活白名单功能实现
- Android 10.0 Settings 去掉打开开发者模式和USB调试模式的广播
- 【错误记录】Android Studio 编译时 lint 检查报错 ( WARNING: DSL element ‘android.dataBinding.enabled‘ is obsolet )
- 【Android 电量优化】JobScheduler 相关源码分析 ( JobSchedulerService 源码分析 | Android 源码在线网址推荐 )
- 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
- Android API Guides---Storage Access Framework
- Android 9.0/P(android p指安卓9.0版本) okhttp3网络请求出错