-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 98a6bdd
Showing
42 changed files
with
1,084 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
*.iml | ||
.gradle | ||
/local.properties | ||
/.idea/libraries | ||
/.idea/modules.xml | ||
/.idea/workspace.xml | ||
.DS_Store | ||
/build | ||
/captures | ||
.externalNativeBuild |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/build |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
apply plugin: 'com.android.application' | ||
|
||
android { | ||
compileSdkVersion 27 | ||
defaultConfig { | ||
applicationId "com.xp.mydialog" | ||
minSdkVersion 15 | ||
targetSdkVersion 27 | ||
versionCode 1 | ||
versionName "1.0" | ||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" | ||
} | ||
buildTypes { | ||
release { | ||
minifyEnabled false | ||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | ||
} | ||
} | ||
} | ||
|
||
dependencies { | ||
implementation fileTree(dir: 'libs', include: ['*.jar']) | ||
implementation 'com.android.support:appcompat-v7:27.1.1' | ||
implementation 'com.android.support.constraint:constraint-layout:1.1.2' | ||
testImplementation 'junit:junit:4.12' | ||
androidTestImplementation 'com.android.support.test:runner:1.0.2' | ||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Add project specific ProGuard rules here. | ||
# You can control the set of applied configuration files using the | ||
# proguardFiles setting in build.gradle. | ||
# | ||
# For more details, see | ||
# http://developer.android.com/guide/developing/tools/proguard.html | ||
|
||
# If your project uses WebView with JS, uncomment the following | ||
# and specify the fully qualified class name to the JavaScript interface | ||
# class: | ||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
# public *; | ||
#} | ||
|
||
# Uncomment this to preserve the line number information for | ||
# debugging stack traces. | ||
#-keepattributes SourceFile,LineNumberTable | ||
|
||
# If you keep the line number information, uncomment this to | ||
# hide the original source file name. | ||
#-renamesourcefileattribute SourceFile |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
package="com.xp.mydialog"> | ||
|
||
<application | ||
android:allowBackup="true" | ||
android:icon="@mipmap/ic_launcher" | ||
android:label="@string/app_name" | ||
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> | ||
</application> | ||
|
||
</manifest> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,240 @@ | ||
package com.xp.mydialog; | ||
|
||
import android.app.Dialog; | ||
import android.content.Context; | ||
import android.support.v4.content.ContextCompat; | ||
import android.text.TextUtils; | ||
import android.view.Display; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.View.OnClickListener; | ||
import android.view.WindowManager; | ||
import android.widget.Button; | ||
import android.widget.FrameLayout; | ||
import android.widget.ImageView; | ||
import android.widget.LinearLayout; | ||
import android.widget.LinearLayout.LayoutParams; | ||
import android.widget.TextView; | ||
|
||
/*** | ||
* 弹框提示 | ||
*/ | ||
public class AlertDialog { | ||
private Context context; | ||
private Dialog dialog; | ||
private LinearLayout lLayout_bg; | ||
private TextView txt_title; | ||
private TextView txt_msg; | ||
private Button btn_neg; | ||
private Button btn_pos; | ||
private ImageView img_line; | ||
private Display display; | ||
private boolean showTitle = false; | ||
private boolean showMsg = false; | ||
private boolean showPosBtn = false; | ||
private boolean showNegBtn = false; | ||
|
||
public AlertDialog(Context context) { | ||
this.context = context; | ||
WindowManager windowManager = (WindowManager) context | ||
.getSystemService(Context.WINDOW_SERVICE); | ||
display = windowManager.getDefaultDisplay(); | ||
} | ||
|
||
public AlertDialog builder() { | ||
View view = LayoutInflater.from(context).inflate( | ||
R.layout.view_alert_dialog, null); | ||
|
||
lLayout_bg = (LinearLayout) view.findViewById(R.id.lLayout_bg); | ||
txt_title = (TextView) view.findViewById(R.id.txt_title); | ||
txt_msg = (TextView) view.findViewById(R.id.txt_msg); | ||
btn_neg = (Button) view.findViewById(R.id.btn_neg); | ||
btn_pos = (Button) view.findViewById(R.id.btn_pos); | ||
img_line = (ImageView) view.findViewById(R.id.img_line); | ||
setGone(); | ||
dialog = new Dialog(context, R.style.AlertDialogStyle); | ||
dialog.setContentView(view); | ||
lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display | ||
.getWidth() * 0.85), LayoutParams.WRAP_CONTENT)); | ||
|
||
return this; | ||
} | ||
|
||
public AlertDialog setGone() { | ||
if (lLayout_bg != null) { | ||
txt_title.setVisibility(View.GONE); | ||
txt_msg.setVisibility(View.GONE); | ||
btn_neg.setVisibility(View.GONE); | ||
btn_pos.setVisibility(View.GONE); | ||
img_line.setVisibility(View.GONE); | ||
|
||
} | ||
showTitle = false; | ||
showMsg = false; | ||
showPosBtn = false; | ||
showNegBtn = false; | ||
return this; | ||
} | ||
|
||
public AlertDialog setTitle(String title) { | ||
showTitle = true; | ||
if (TextUtils.isEmpty(title)) { | ||
txt_title.setText("提示"); | ||
} else { | ||
txt_title.setText(title); | ||
} | ||
return this; | ||
} | ||
|
||
public AlertDialog setMsg(String msg) { | ||
showMsg = true; | ||
if (TextUtils.isEmpty(msg)) { | ||
txt_msg.setText(""); | ||
} else { | ||
txt_msg.setText(msg); | ||
} | ||
return this; | ||
} | ||
|
||
public AlertDialog setCancelable(boolean cancel) { | ||
dialog.setCancelable(cancel); | ||
return this; | ||
} | ||
|
||
/** | ||
* 右侧按钮 | ||
* | ||
* @param text | ||
* @param listener | ||
* @return | ||
*/ | ||
public AlertDialog setPositiveButton(String text, | ||
final OnClickListener listener) { | ||
return setPositiveButton(text, -1, listener); | ||
} | ||
|
||
public AlertDialog setPositiveButton(String text, int color, | ||
final OnClickListener listener) { | ||
showPosBtn = true; | ||
if ("".equals(text)) { | ||
btn_pos.setText(""); | ||
} else { | ||
btn_pos.setText(text); | ||
} | ||
if (color == -1) { | ||
color = R.color.action_sheet_blue; | ||
} | ||
btn_pos.setTextColor(ContextCompat.getColor(context, color)); | ||
btn_pos.setOnClickListener(new OnClickListener() { | ||
@Override | ||
public void onClick(View v) { | ||
if (listener != null) | ||
listener.onClick(v); | ||
dialog.dismiss(); | ||
} | ||
}); | ||
return this; | ||
} | ||
|
||
/** | ||
* 左侧按钮 | ||
* | ||
* @param text | ||
* @param listener | ||
* @return | ||
*/ | ||
|
||
public AlertDialog setNegativeButton(String text, | ||
final OnClickListener listener) { | ||
|
||
return setNegativeButton(text, -1, listener); | ||
} | ||
|
||
public AlertDialog setNegativeButton(String text, int color, | ||
final OnClickListener listener) { | ||
showNegBtn = true; | ||
if ("".equals(text)) { | ||
btn_neg.setText(""); | ||
} else { | ||
btn_neg.setText(text); | ||
} | ||
if (color == -1) { | ||
color = R.color.action_sheet_blue; | ||
} | ||
btn_neg.setTextColor(ContextCompat.getColor(context, color)); | ||
|
||
btn_neg.setOnClickListener(new OnClickListener() { | ||
@Override | ||
public void onClick(View v) { | ||
if (listener != null) | ||
listener.onClick(v); | ||
dialog.dismiss(); | ||
} | ||
}); | ||
return this; | ||
} | ||
|
||
private void setLayout() { | ||
if (!showTitle && !showMsg) { | ||
txt_title.setText(""); | ||
txt_title.setVisibility(View.VISIBLE); | ||
} | ||
|
||
if (showTitle) { | ||
txt_title.setVisibility(View.VISIBLE); | ||
} | ||
|
||
if (showMsg) { | ||
txt_msg.setVisibility(View.VISIBLE); | ||
} | ||
|
||
if (!showPosBtn && !showNegBtn) { | ||
btn_pos.setText(""); | ||
btn_pos.setVisibility(View.VISIBLE); | ||
btn_pos.setBackgroundResource(R.drawable.alert_dialog_selector); | ||
btn_pos.setOnClickListener(new OnClickListener() { | ||
@Override | ||
public void onClick(View v) { | ||
dialog.dismiss(); | ||
} | ||
}); | ||
} | ||
|
||
if (showPosBtn && showNegBtn) { | ||
btn_pos.setVisibility(View.VISIBLE); | ||
btn_pos.setBackgroundResource(R.drawable.alert_dialog_right_selector); | ||
btn_neg.setVisibility(View.VISIBLE); | ||
btn_neg.setBackgroundResource(R.drawable.alert_dialog_left_selector); | ||
img_line.setVisibility(View.VISIBLE); | ||
} | ||
|
||
if (showPosBtn && !showNegBtn) { | ||
btn_pos.setVisibility(View.VISIBLE); | ||
btn_pos.setBackgroundResource(R.drawable.alert_dialog_selector); | ||
} | ||
|
||
if (!showPosBtn && showNegBtn) { | ||
btn_neg.setVisibility(View.VISIBLE); | ||
btn_neg.setBackgroundResource(R.drawable.alert_dialog_selector); | ||
} | ||
} | ||
|
||
public void show() { | ||
setLayout(); | ||
dialog.show(); | ||
} | ||
|
||
public boolean isShowing() { | ||
if (dialog != null) { | ||
if (dialog.isShowing()) | ||
return true; | ||
else | ||
return false; | ||
} | ||
return false; | ||
} | ||
|
||
public void dismiss() { | ||
dialog.dismiss(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package com.xp.mydialog; | ||
|
||
import android.support.v7.app.AppCompatActivity; | ||
import android.os.Bundle; | ||
import android.view.View; | ||
|
||
public class MainActivity extends AppCompatActivity implements View.OnClickListener { | ||
|
||
private AlertDialog myDialog; | ||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
setContentView(R.layout.activity_main); | ||
findViewById(R.id.show_one).setOnClickListener(this); | ||
findViewById(R.id.show_two).setOnClickListener(this); | ||
findViewById(R.id.show_title).setOnClickListener(this); | ||
myDialog = new AlertDialog(this).builder(); | ||
} | ||
|
||
@Override | ||
public void onClick(View v) { | ||
switch (v.getId()){ | ||
case R.id.show_one: | ||
myDialog.setGone().setMsg("仿iOS的弹窗,看看实际效果如何呢,仿iOS的弹窗,仿iOS的弹窗").setNegativeButton("取消",R.color.colorAccent,null).setPositiveButton("确定",R.color.colorAccent,null).show(); | ||
break; | ||
case R.id.show_two: | ||
myDialog.setGone().setMsg("仿iOS的弹窗").setPositiveButton("确定",null).show(); | ||
break; | ||
case R.id.show_title: | ||
myDialog.setGone().setTitle("提示").setMsg("仿iOS的弹窗").setNegativeButton("取消",null).setPositiveButton("确定",null).show(); | ||
break; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
xmlns:aapt="http://schemas.android.com/aapt" | ||
android:width="108dp" | ||
android:height="108dp" | ||
android:viewportHeight="108" | ||
android:viewportWidth="108"> | ||
<path | ||
android:fillType="evenOdd" | ||
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z" | ||
android:strokeColor="#00000000" | ||
android:strokeWidth="1"> | ||
<aapt:attr name="android:fillColor"> | ||
<gradient | ||
android:endX="78.5885" | ||
android:endY="90.9159" | ||
android:startX="48.7653" | ||
android:startY="61.0927" | ||
android:type="linear"> | ||
<item | ||
android:color="#44000000" | ||
android:offset="0.0" /> | ||
<item | ||
android:color="#00000000" | ||
android:offset="1.0" /> | ||
</gradient> | ||
</aapt:attr> | ||
</path> | ||
<path | ||
android:fillColor="#FFFFFF" | ||
android:fillType="nonZero" | ||
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z" | ||
android:strokeColor="#00000000" | ||
android:strokeWidth="1" /> | ||
</vector> |
Oops, something went wrong.