当前位置: 首页 > news >正文

做的好的c2c网站seo自动优化软件安卓

做的好的c2c网站,seo自动优化软件安卓,wordpress迅雷插件,购物网站建设案例文章目录 前言一、效果图二、实现步骤1.自定义Dialog2.xml布局3.背景白色转角drawable4.取消按钮背景drawable5.确定按钮背景drawable6.NumberPicker样式和弹框样式7.弹框动画8.Activity使用 总结 前言 随着产品人员不断变态下,总是会要求我们的界面高大上&#xf…

文章目录

  • 前言
  • 一、效果图
  • 二、实现步骤
    • 1.自定义Dialog
    • 2.xml布局
    • 3.背景白色转角drawable
    • 4.取消按钮背景drawable
    • 5.确定按钮背景drawable
    • 6.NumberPicker样式和弹框样式
    • 7.弹框动画
    • 8.Activity使用
  • 总结


前言

随着产品人员不断变态下,总是会要求我们的界面高大上,随意UI能画出来我们就得搞出来才行,这里有自定义弹框,以及时间选择控件的运用,根据年和月判断当月有多少天,需要什么就copy什么。


一、效果图

在这里插入图片描述

二、实现步骤

1.自定义Dialog

代码如下(示例):

package com.example.merchant.utils;import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.NumberPicker;
import android.widget.TextView;import com.example.merchant.R;import java.util.Calendar;/*** Created by :caoliulang* ❤* Creation time :2023/9/01* ❤* Function :日期选择弹框*/
public class TiemDialog extends Dialog {Context context;MenuListener mMenuListener;View mRootView;private Animation mShowAnim;private Animation mDismissAnim;private boolean isDismissing;TextView cancle;//取消TextView confirm;//确定NumberPicker number_month;//月NumberPicker number_day;//天NumberPicker number_yer;//年Calendar calendar = Calendar.getInstance();//取得当前时间的年月日 时分秒public TiemDialog(Context context) {super(context, R.style.ActionSheetDialog);this.context = context;getWindow().setGravity(Gravity.BOTTOM);initView(context);}private void initView(final Context context) {mRootView = View.inflate(context, R.layout.time_dialog, null);cancle = mRootView.findViewById(R.id.cancle);confirm = mRootView.findViewById(R.id.confirm);number_month = mRootView.findViewById(R.id.number_month);number_day = mRootView.findViewById(R.id.number_day);number_yer = mRootView.findViewById(R.id.number_yer);// 设置年份范围int curYear = Calendar.getInstance().get(Calendar.YEAR);number_yer.setMinValue(curYear - 10);number_yer.setMaxValue(curYear + 10);number_yer.setValue(calendar.get(Calendar.YEAR));// 设置月份范围
//        String[] months = new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"};
//        monthPicker.setDisplayedValues(months);number_month.setMinValue(1);number_month.setMaxValue(12);number_month.setValue(calendar.get(Calendar.MONTH) + 1);// 设置天数范围
//        String[] day = new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"};int day = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);number_day.setMinValue(1);number_day.setMaxValue(getDayTS(getYear(), getMonths()));number_day.setValue(calendar.get(Calendar.DAY_OF_MONTH));// 设置滚动监听器 年number_yer.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {@Overridepublic void onValueChange(NumberPicker picker, int oldVal, int newVal) {number_day.setMinValue(1);number_day.setMaxValue(getDayTS(getYear(), getMonths()));}});// 设置滚动监听器 月number_month.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {@Overridepublic void onValueChange(NumberPicker picker, int oldVal, int newVal) {number_day.setMinValue(1);number_day.setMaxValue(getDayTS(getYear(), getMonths()));}});// 设置滚动监听器 日number_day.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {@Overridepublic void onValueChange(NumberPicker picker, int oldVal, int newVal) {}});confirm.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mMenuListener.onSelect();}});cancle.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {cancel();}});this.setContentView(mRootView);initAnim(context);setOnCancelListener(new OnCancelListener() {@Overridepublic void onCancel(DialogInterface dialog) {if (mMenuListener != null) {mMenuListener.onCancel();}}});}private void initAnim(Context context) {mShowAnim = AnimationUtils.loadAnimation(context, R.anim.translate_up);mDismissAnim = AnimationUtils.loadAnimation(context, R.anim.translate_down);mDismissAnim.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {dismissMe();}@Overridepublic void onAnimationRepeat(Animation animation) {}});}@Overridepublic void show() {super.show();mRootView.startAnimation(mShowAnim);}@Overridepublic void dismiss() {if (isDismissing) {return;}isDismissing = true;mRootView.startAnimation(mDismissAnim);}private void dismissMe() {super.dismiss();isDismissing = false;}public int getYear() {return number_yer.getValue();}public int getMonths() {return number_month.getValue();}public int getDay() {return number_day.getValue();}public MenuListener getMenuListener() {return mMenuListener;}public void setMenuListener(MenuListener menuListener) {mMenuListener = menuListener;}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_MENU) {dismiss();return true;}return super.onKeyDown(keyCode, event);}public interface MenuListener {void onCancel();void onSelect();}/*** 根据是否闰年和月份判断本月的天数** @param year* @param month* @return*/private int getDayTS(int year, int month) {int day = 30;boolean flag = false;switch (year % 4) {case 0:flag = true;break;default:flag = false;break;}switch (month) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:day = 31;break;case 2:day = flag ? 29 : 28;break;default:day = 30;break;}return day;}
}

2.xml布局

代码如下(示例):

<?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"android:orientation="vertical"><LinearLayoutandroid:id="@+id/ll_share"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:background="@drawable/bzhs_bff_8"android:gravity="center_horizontal"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="17dp"android:text="Seleccionar fecha"android:textColor="#232323"android:textSize="16dp"android:textStyle="bold" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="240dp"android:layout_marginTop="10dp"android:layout_marginBottom="10dp"android:orientation="horizontal"><NumberPickerandroid:id="@+id/number_month"android:layout_width="match_parent"android:layout_height="match_parent"android:theme="@style/DefaultNumberPickerTheme"android:layout_weight="1" /><NumberPickerandroid:id="@+id/number_day"android:layout_width="match_parent"android:layout_height="match_parent"android:theme="@style/DefaultNumberPickerTheme"android:layout_weight="1" /><NumberPickerandroid:id="@+id/number_yer"android:layout_width="match_parent"android:layout_height="match_parent"android:theme="@style/DefaultNumberPickerTheme"android:layout_weight="1" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="40dp"android:layout_marginLeft="16dp"android:layout_marginRight="16dp"android:layout_marginBottom="46dp"android:gravity="center"android:orientation="horizontal"><TextViewandroid:id="@+id/cancle"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginRight="5dp"android:layout_weight="1"android:background="@drawable/bzhs_wls_4"android:gravity="center"android:text="Cancle"android:textColor="#333333"android:textSize="16dp" /><TextViewandroid:id="@+id/confirm"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="5dp"android:layout_weight="1"android:background="@drawable/bzhs_qls_4"android:gravity="center"android:text="Confirm"android:textColor="#ffffff"android:textSize="16dp" /></LinearLayout></LinearLayout></RelativeLayout>

3.背景白色转角drawable

代码如下(示例):

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><!-- 背景颜色 --><solid android:color="#ffffff" /><!-- 控制圆角大小 --><corners android:topRightRadius="8dp"android:topLeftRadius="8dp"/></shape>

4.取消按钮背景drawable

代码如下(示例):

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><!-- 背景颜色 --><solid android:color="#ffffff" /><!-- 控制边界线颜色和大小 --><strokeandroid:width="1dp"android:color="#006FF0" /><!-- 控制圆角大小 --><corners android:radius="4dp" /></shape>

5.确定按钮背景drawable

代码如下(示例):

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><!-- 背景颜色 --><solid android:color="#006FF0" /><!-- 控制边界线颜色和大小 --><strokeandroid:width="1dp"android:color="#006FF0" /><!-- 控制圆角大小 --><corners android:radius="4dp" /></shape>

6.NumberPicker样式和弹框样式

代码如下(示例):

  <style name="DefaultNumberPickerTheme" parent="AppTheme"><item name="colorControlNormal">@color/dividerColor</item></style><style name="ActionSheetDialog" parent="android:Theme.Dialog"><item name="android:windowContentOverlay">@null</item><item name="android:windowFrame">@null</item><item name="android:windowBackground">#00000000</item><item name="android:windowNoTitle">true</item></style>

7.弹框动画

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"android:fromYDelta="100%"android:toYDelta="0"android:duration="250">
</translate><?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"android:fromYDelta="0%"android:toYDelta="100%"android:duration="250">
</translate>

8.Activity使用

//定义变量
private lateinit var timedialog: TiemDialog//日期选择弹框
//实例化
timedialog = TiemDialog(this)
//调用
showTimeDailog()
//方法/*** 日期弹框*/private fun showTimeDailog() {val window: Window = timedialog.window!!val lp = window.attributes//这句就是设置dialog横向满屏了。lp.width = WindowManager.LayoutParams.MATCH_PARENTlp.height = WindowManager.LayoutParams.WRAP_CONTENTwindow.attributes = lptimedialog.show()timedialog.setCanceledOnTouchOutside(false)timedialog.menuListener = object : TiemDialog.MenuListener {//取消override fun onCancel() {timedialog.dismiss()}//确定override fun onSelect() {if (timedialog != null) {text_time.text = "${timedialog.year}-${timedialog.months}-${timedialog.day}"timedialog.dismiss()}}}}

总结

东西看起来多,也就两个模块,一个是自定义Dialog,一个NumberPicker的使用,欢迎随时探讨。


文章转载自:
http://jocasta.rsnd.cn
http://torpex.rsnd.cn
http://bba.rsnd.cn
http://broncho.rsnd.cn
http://grandfatherly.rsnd.cn
http://anglomaniacal.rsnd.cn
http://allantois.rsnd.cn
http://midsection.rsnd.cn
http://tablecloth.rsnd.cn
http://joyless.rsnd.cn
http://restrict.rsnd.cn
http://energetics.rsnd.cn
http://subcompany.rsnd.cn
http://grandma.rsnd.cn
http://available.rsnd.cn
http://oratrix.rsnd.cn
http://maintopmast.rsnd.cn
http://pb.rsnd.cn
http://reversi.rsnd.cn
http://suberect.rsnd.cn
http://ungenerous.rsnd.cn
http://horal.rsnd.cn
http://bundook.rsnd.cn
http://tumidness.rsnd.cn
http://botfly.rsnd.cn
http://crock.rsnd.cn
http://myristic.rsnd.cn
http://nine.rsnd.cn
http://bogners.rsnd.cn
http://theonomy.rsnd.cn
http://oversleep.rsnd.cn
http://sphygmogram.rsnd.cn
http://finitude.rsnd.cn
http://dicynodont.rsnd.cn
http://swimathon.rsnd.cn
http://daee.rsnd.cn
http://ablator.rsnd.cn
http://speakable.rsnd.cn
http://carpentaria.rsnd.cn
http://tutress.rsnd.cn
http://bridle.rsnd.cn
http://tomb.rsnd.cn
http://glossarial.rsnd.cn
http://icw.rsnd.cn
http://mvd.rsnd.cn
http://semainier.rsnd.cn
http://dolomitization.rsnd.cn
http://qcd.rsnd.cn
http://bullwhack.rsnd.cn
http://foudroyant.rsnd.cn
http://foreleg.rsnd.cn
http://brokage.rsnd.cn
http://anthropometric.rsnd.cn
http://roseleaf.rsnd.cn
http://canephorus.rsnd.cn
http://seen.rsnd.cn
http://unpen.rsnd.cn
http://unlikeliness.rsnd.cn
http://cubby.rsnd.cn
http://idolum.rsnd.cn
http://neuss.rsnd.cn
http://dropsy.rsnd.cn
http://tamarillo.rsnd.cn
http://iridosmium.rsnd.cn
http://horrid.rsnd.cn
http://pockpit.rsnd.cn
http://easting.rsnd.cn
http://unbleached.rsnd.cn
http://embryotrophe.rsnd.cn
http://safeblowing.rsnd.cn
http://biomathcmatics.rsnd.cn
http://indeciduous.rsnd.cn
http://unexpressive.rsnd.cn
http://unwarranted.rsnd.cn
http://superinfect.rsnd.cn
http://opioid.rsnd.cn
http://conductive.rsnd.cn
http://laryngopharynx.rsnd.cn
http://shutdown.rsnd.cn
http://monotonize.rsnd.cn
http://afs.rsnd.cn
http://anemometric.rsnd.cn
http://byzantinesque.rsnd.cn
http://dakoit.rsnd.cn
http://prehistoric.rsnd.cn
http://uxoricide.rsnd.cn
http://dispatchbox.rsnd.cn
http://gown.rsnd.cn
http://deflationary.rsnd.cn
http://crushmark.rsnd.cn
http://grolier.rsnd.cn
http://forman.rsnd.cn
http://guidwillie.rsnd.cn
http://footle.rsnd.cn
http://fifteen.rsnd.cn
http://despite.rsnd.cn
http://terrify.rsnd.cn
http://systyle.rsnd.cn
http://unperceptive.rsnd.cn
http://pharyngectomy.rsnd.cn
http://www.15wanjia.com/news/85047.html

相关文章:

  • 网站需求建设书济南网站优化
  • 做网站 华普花园百度旗下的所有产品
  • 域名备案名称搜索引擎优化培训中心
  • 网站制作出租鞍山seo公司
  • 能领免做卡的网站搜索引擎营销分类
  • 东莞高端建站公司域名注册好了怎么弄网站
  • 网站建设项目预算今日新闻快讯
  • php 微网站开发seo成功的案例和分析
  • wordpress你访问的网站不存在制作网页的网站
  • 广州北京网站建设公司哪家好淘宝关键词优化软件
  • 网站开发ios环球网疫情最新动态
  • 建筑模板规格尺寸及价格整站seo优化公司
  • 关于网站得精神文明建设优化大师官方网站
  • 怎么注册微网站肇庆网站制作软件
  • 做驾考学时在哪个网站视频号最新动作
  • wordpress离线字体优化网站关键词
  • 做阿里巴巴网站费用吗如何做google推广
  • 手机优化电池充电要开吗网站seo推广
  • 海宏集团网站建设上海网站制作
  • 益阳网站开发公司社群营销
  • 网站备案 公司注销吗前端seo是什么意思
  • 网络工作室适合做什么性价比高seo的排名优化
  • 怎样做网站漂浮百度收录情况
  • 低价网站空间免费seo诊断
  • 网站做百度排名b站广告投放平台入口
  • 学做蛋糕有哪些网站怀化seo推广
  • 主题资源网站制作平台网络销售工资一般多少
  • 网站地图的形式新站seo优化快速上排名
  • 汕头各类免费建站百度认证有什么用
  • 建个什么网站好百度指数app