仿xss網(wǎng)站搭建個(gè)人網(wǎng)站制作
安卓對話框是的實(shí)現(xiàn)需要用到?AlertDialog.Builder?實(shí)例對象
之后我們就用這個(gè)對象的以下方法
下面列舉幾個(gè)常用的方法
setTitle():設(shè)置 標(biāo)題 setview():設(shè)置 自定義頁面(下面會(huì)細(xì)講自定義頁面) setPositiveButton():一般用于確定功能 setNegativeButton():一般用于取消功能 setOnShowListener():對話框出現(xiàn) setOnCancelListener():對話框消失
show():用于展示對話框? 注意:如果沒有這句話你的對話框不會(huì)顯示
一般我們在自定義頁面的時(shí)候不會(huì)都寫在一個(gè)頁面中,造成代碼雜糅
往往都需要新建一個(gè)頁面,在此是不需要新建新的Activity,只需要一個(gè)Layout布局頁面
這里簡單寫一個(gè)
?代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><EditTextandroid:id="@+id/ed_ip"android:layout_width="269dp"android:layout_height="83dp"android:layout_marginTop="28dp"android:layout_marginEnd="68dp"android:ems="10"android:gravity="center"android:hint="請輸入IP,例如192.168.1.1"android:inputType="textPersonName"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /><EditTextandroid:id="@+id/ed_port"android:layout_width="261dp"android:layout_height="86dp"android:layout_marginTop="120dp"android:layout_marginEnd="72dp"android:ems="10"android:gravity="center"android:hint="請輸入端口,例如8080"android:inputType="textPersonName"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>
那么我們?nèi)绾渭尤氲紸lertDialog中呢
通過使用 setview():設(shè)置 自定義頁面
View?view=LayoutInflater.from(IntroductoryActivity.this).inflate(R.layout.ipconfig,null); ip = view.findViewById(R.id.edit_ip); port = view.findViewById(R.id.edit_port); setview(view);
注意:在這里與我們平時(shí)拿控件的方法不同,一定要加上view. 再加上控件
? ? ? ? ? ?否則會(huì)造成空指針報(bào)錯(cuò)
以下附上全部代碼示例(該實(shí)例是一個(gè)引導(dǎo)頁,其中涉及到數(shù)據(jù)存儲的知識點(diǎn),可以看我的其他博客)
?
MainActivity:默認(rèn)代碼,無任何功能
package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}
}
MainActivity對應(yīng)的Layout文件:同樣為默認(rèn)代碼?
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>
GuideActivity :引導(dǎo)頁主界面?
package com.example.myapplication;import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;import java.util.ArrayList;
import java.util.List;public class GuideActivity extends AppCompatActivity {private ViewPager vp;private List<ImageView> imageViews;private int[] imgs = {R.drawable.y0, R.drawable.y1, R.drawable.y2, R.drawable.y3};private Button btn, btn2;private EditText ed_ip, ed_port;private ImageView[] dotViews;private GuideAdapter adapter;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);getSupportActionBar().hide();setContentView(R.layout.activity_guide);vp = findViewById(R.id.guide_vp);btn = findViewById(R.id.guide_btn);btn2 = findViewById(R.id.guide_btn2);//初始化圖片initImgs();//初始化底部圓點(diǎn)指示器initDots();adapter = new GuideAdapter(imageViews);vp.setAdapter(adapter);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {SharedPreferences.Editor editor = getSharedPreferences("data", MODE_PRIVATE).edit();editor.putString("isFirst", "1");editor.apply();Intent intent = new Intent(GuideActivity.this, MainActivity.class);startActivity(intent);finish();}});btn2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {View view = LayoutInflater.from(GuideActivity.this).inflate(R.layout.ipconfig, null);ed_ip = view.findViewById(R.id.ed_ip);ed_port = view.findViewById(R.id.ed_port);AlertDialog.Builder builder = new AlertDialog.Builder(GuideActivity.this);SharedPreferences sp = getSharedPreferences("demo1", MODE_PRIVATE);ed_ip.setText(sp.getString("ip", ""));ed_port.setText(sp.getString("port", ""));builder.setTitle("端口設(shè)置").setView(view).setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {SharedPreferences.Editor editor = sp.edit();editor.putString("ip", ed_ip.getText().toString());editor.putString("port", ed_port.getText().toString());editor.apply();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(GuideActivity.this, "取消端口設(shè)置", Toast.LENGTH_SHORT).show();}}).show();}});vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Overridepublic void onPageSelected(int position) {for (int i = 0; i < dotViews.length; i++) {if (position == i) {dotViews[i].setImageResource(R.drawable.guide_selector);} else {dotViews[i].setImageResource(R.drawable.guide_white);}if (position == dotViews.length - 1) {btn.setVisibility(View.VISIBLE);btn2.setVisibility(View.VISIBLE);} else {btn.setVisibility(View.GONE);btn2.setVisibility(View.GONE);}}}@Overridepublic void onPageScrollStateChanged(int state) {}});}/*** 初始化底部圓點(diǎn)指示器*/private void initDots() {LinearLayout layout = findViewById(R.id.guide_ll);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20);params.setMargins(10, 0, 10, 0);dotViews = new ImageView[imgs.length];for (int i = 0; i < imageViews.size(); i++) {ImageView imageView = new ImageView(this);imageView.setLayoutParams(params);imageView.setImageResource(R.drawable.guide_white);if (i == 0) {imageView.setImageResource(R.drawable.guide_selector);} else {imageView.setImageResource(R.drawable.guide_white);}dotViews[i] = imageView;final int finalI = i;dotViews[i].setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {vp.setCurrentItem(finalI);}});layout.addView(imageView);}}/*** 初始化圖片*/private void initImgs() {ViewPager.LayoutParams params = new ViewPager.LayoutParams();imageViews = new ArrayList<ImageView>();for (int i = 0; i < imgs.length; i++) {ImageView imageView = new ImageView(this);imageView.setLayoutParams(params);imageView.setImageResource(imgs[i]);imageView.setScaleType(ImageView.ScaleType.FIT_XY);imageViews.add(imageView);}}}
activity_guide.xml:引導(dǎo)頁layout文件?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><androidx.viewpager.widget.ViewPagerandroid:id="@+id/guide_vp"android:layout_width="match_parent"android:layout_height="match_parent" /><LinearLayoutandroid:id="@+id/guide_ll"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="100dp"android:orientation="horizontal" /><Buttonandroid:id="@+id/guide_btn"android:layout_width="100dp"android:layout_height="40dp"android:layout_above="@id/guide_ll"android:layout_centerHorizontal="true"android:layout_marginBottom="10dp"android:background="#2990E3"android:text="開始體驗(yàn)"android:textColor="#ffffff"android:visibility="invisible" /><Buttonandroid:id="@+id/guide_btn2"android:layout_width="100dp"android:layout_height="40dp"android:layout_alignRight="@id/guide_vp"android:layout_centerHorizontal="true"android:layout_marginBottom="10dp"android:background="#2990E3"android:text="端口設(shè)置"android:textColor="#ffffff"android:visibility="invisible"/></RelativeLayout>
GuideAdapter :引導(dǎo)頁適配器?
package com.example.myapplication;import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;import java.util.List;public class GuideAdapter extends PagerAdapter {private final List<ImageView> imageViews;public GuideAdapter(List<ImageView> imageViews) {this.imageViews= imageViews;}/*** 獲取當(dāng)前要顯示對象的數(shù)量*/@Overridepublic int getCount() {return imageViews.size();}/*** 判斷是否用對象生成界面*/@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object o) {return view== o;}/*** 從ViewGroup中移除當(dāng)前對象*/@Overridepublic void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {container.removeView(imageViews.get(position));}/*** 當(dāng)前要顯示的對象*/@NonNull@Overridepublic Object instantiateItem(@NonNull ViewGroup container, int position) {container.addView(imageViews.get(position));return imageViews.get(position);}}
ipconfig.xml:ip配置界面?
?
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><EditTextandroid:id="@+id/ed_ip"android:layout_width="269dp"android:layout_height="83dp"android:layout_marginTop="28dp"android:layout_marginEnd="68dp"android:ems="10"android:gravity="center"android:hint="請輸入IP,例如192.168.1.1"android:inputType="textPersonName"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /><EditTextandroid:id="@+id/ed_port"android:layout_width="261dp"android:layout_height="86dp"android:layout_marginTop="120dp"android:layout_marginEnd="72dp"android:ems="10"android:gravity="center"android:hint="請輸入端口,例如8080"android:inputType="textPersonName"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>
?guide_white.xml:未選擇白色圓點(diǎn)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="oval"><size android:height="20dp" android:width="20dp"/><solid android:color="#fff"/>
</shape>
guide_selector.xml?:選擇藍(lán)色圓點(diǎn)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="oval"><size android:height="20dp" android:width="20dp"/><solid android:color="#0687ED"/>
</shape>
引導(dǎo)頁的4張圖片自己加就可以了?