日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android仿淘宝口令复制弹出框功能

發布時間:2024/1/1 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android仿淘宝口令复制弹出框功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.我要做什么

應用場景:

我的朋友使用微信給我發一個淘寶鏈接的口令,我復制口令,進入我的淘寶,彈框,顯示口令的詳情,點擊詳情,進入商品頁面。

存在的問題:

但這存在一個問題,我的淘寶并不總是關閉狀態,比如我正在修改淘寶收貨地址,此時我的朋友給我發送一條口令,我復制了口令。回到淘寶,這個時候,app并不會進入首頁,會進入我修改的頁面,那么如何觸發這個口令呢??

實現步驟:

首先監聽應用在前臺還是后臺

然后根據狀態彈框,為此我花費了一個上午,實現了此需求。

結論:

我復制了口令,重新進入app,需要給我彈框,然后彈框顯示的內容,應該是從我的剪切板讀取數據。我不放效果圖,因為本例子肯定是可以完美運行的,代碼已經給全,需要的,請自行復制。

具體方法:

2.添加依賴

implementation "android.arch.lifecycle:extensions:1.1.1"

3.清單文件

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.mepositry"><applicationandroid:name=".CourserApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="Mepository"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".FirstActivity"/></application></manifest>

4.公共activity

package com.example.mepositry;import android.support.v7.app.AppCompatActivity; import android.util.Log;public class MyBaseActivity extends AppCompatActivity {@Overrideprotected void onStart() {super.onStart();CourserApplication.getContext().setOnVisibilityChangeListener(new CourserApplication.ValueChangeListener() {@Overridepublic void onChanged(Boolean isAppInBackground) {Log.e("TAG", "YoungerHu:\t" + isAppInBackground);if (isAppInBackground) {//顯示viewAboutDialogFragment aboutDialog = new AboutDialogFragment();aboutDialog.show(getFragmentManager(), "AboutDialogFragment");}}});} }

5.公共application

package com.example.mepositry;import android.app.Application; import android.arch.lifecycle.Lifecycle; import android.arch.lifecycle.LifecycleObserver; import android.arch.lifecycle.OnLifecycleEvent; import android.arch.lifecycle.ProcessLifecycleOwner; import android.util.Log;public class CourserApplication extends Application implements LifecycleObserver {private static CourserApplication mContext;@Overridepublic void onCreate() {super.onCreate();mContext = this;ProcessLifecycleOwner.get().getLifecycle().addObserver(this);}public static CourserApplication getContext() {return mContext;}@OnLifecycleEvent(Lifecycle.Event.ON_START)void onForeground() {Log.e("LifecycleObserver", "應用回到前臺");isAppInBackground(true);}@OnLifecycleEvent(Lifecycle.Event.ON_STOP)void onBackground() {Log.e("LifecycleObserver", "應用退到後臺");isAppInBackground(false);}public interface ValueChangeListener {void onChanged(Boolean value);}private ValueChangeListener visibilityChangeListener;public void setOnVisibilityChangeListener(ValueChangeListener listener) {this.visibilityChangeListener = listener;}private void isAppInBackground(Boolean isBackground) {if (null != visibilityChangeListener) {visibilityChangeListener.onChanged(isBackground);}}}

6.模擬頁面A:

package com.example.mepositry;import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText;import android.widget.CheckBox; import android.widget.EditText; import android.widget.RadioButton; import android.widget.Toast; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; import android.widget.RadioButton; import android.widget.Toast;public class MainActivity extends MyBaseActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test);Button button = findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(getApplicationContext(), FirstActivity.class);startActivity(intent);}});} }

7.模擬頁面B:

package com.example.mepositry;import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.widget.TextView;public class FirstActivity extends MyBaseActivity {private TextView textview;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_first);textview = findViewById(R.id.textView2);} }

8.彈框dialogfragment

package com.example.mepositry;import android.app.DialogFragment;import android.app.FragmentManager;import android.content.DialogInterface;import android.os.Bundle;import android.support.annotation.Nullable;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.TextView;import com.example.mepositry.R;public class AboutDialogFragment extends DialogFragment implements DialogInterface.OnCancelListener, DialogInterface.OnDismissListener {private TextView TV_MCU_Version_Menu, TV_SoftVersion_Menu, TV_CopyRight_Menu, TV_DeviceMac;//TV_DeviceVersionprivate Button AboutSure;private SetOnClickDialogListener mSetOnClickListener;public void onSetClickDialogListener(SetOnClickDialogListener listener) {this.mSetOnClickListener = listener;}//這個接口 如果是在項目中,請新建文件 統一管理public interface SetOnClickDialogListener {void onClickDoalogListener(int type, boolean boolClick);}@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.chs_about_dialog, container, false);initView(view);return view;}private void initView(View V_AboutDialog) {AboutSure = (Button) V_AboutDialog.findViewById(R.id.id_b_about_ok);TV_MCU_Version_Menu = (TextView) V_AboutDialog.findViewById(R.id.id_tv_device_version);TV_SoftVersion_Menu = (TextView) V_AboutDialog.findViewById(R.id.id_tv_soft_version);TV_CopyRight_Menu = (TextView) V_AboutDialog.findViewById(R.id.id_tv_copyright);TV_DeviceMac = (TextView) V_AboutDialog.findViewById(R.id.id_tv_device_mac);TV_MCU_Version_Menu.setText(getResources().getString(R.string.app_name) + "MacCfg.DeviceVerString");TV_SoftVersion_Menu.setText(getResources().getString(R.string.app_name) + "MacCfg.App_versions");TV_CopyRight_Menu.setText("MacCfg.Copyright");TV_DeviceMac.setText(getResources().getString(R.string.app_name) + "MacCfg.Mac");AboutSure.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {getDialog().cancel();Log.e("TAG", "onCance_AboutSure:");if (mSetOnClickListener != null) {mSetOnClickListener.onClickDoalogListener(0, true);}}});}// This method will be invoked when the dialog is canceled. 取消對話框時將調用此方法。@Overridepublic void onCancel(DialogInterface dialog) {super.onCancel(dialog);Log.e("TAG", "onCancel:");}//This method will be invoked when the dialog is dismissed.@Overridepublic void onDismiss(DialogInterface dialog) {super.onDismiss(dialog);Log.e("TAG", "onDismiss:");}}

9.彈框布局:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/id_llyout_about_dialog"android:layout_width="360dp"android:layout_height="300dp"android:background="@color/colorPrimary"android:orientation="vertical"><LinearLayoutandroid:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:layout_marginStart="20dp"android:layout_marginTop="20dp"android:orientation="vertical"><TextViewandroid:id="@+id/id_tv_device_mac"android:layout_width="wrap_content"android:layout_height="30dp"android:maxLines="1"android:text="@string/app_name"android:textSize="15sp" /><TextViewandroid:id="@+id/id_tv_device_version"android:layout_width="wrap_content"android:layout_height="30dp"android:layout_marginTop="10dp"android:maxLines="1"android:text="@string/app_name"android:textSize="15sp" /><TextViewandroid:id="@+id/id_tv_soft_version"android:layout_width="wrap_content"android:layout_height="30dp"android:layout_marginTop="10dp"android:maxLines="1"android:text="@string/app_name"android:textSize="15sp" /><TextViewandroid:id="@+id/id_tv_copyright"android:layout_width="wrap_content"android:layout_height="50dp"android:layout_marginTop="10dp"android:maxLines="2"android:text="@string/app_name"android:textSize="15sp" /></LinearLayout><Buttonandroid:id="@+id/id_b_about_ok"android:layout_width="80dp"android:layout_height="35dp"android:layout_gravity="center"android:layout_marginTop="20dp"android:gravity="center"android:text="@string/app_name"android:textAllCaps="false"android:textSize="12sp" /></LinearLayout>

end

總結

以上是生活随笔為你收集整理的Android仿淘宝口令复制弹出框功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。