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

沈阳唐朝网站建设/网络营销公司排行榜

沈阳唐朝网站建设,网络营销公司排行榜,4a广告公司都有哪些,昆山网站建设设计之前在技术问答上面看到一个提问 “加载中…” 后面三个点是动态的,这么一个效果实现。想来想去,好像没想到好的处理方式。尝试了一下,以一个最笨的方式实现了。先来看一下效果 :我是通过自定义一个Dialog,加载中的效果&#xff0…

之前在技术问答上面看到一个提问 “加载中…” 后面三个点是动态的,这么一个效果实现。想来想去,好像没想到好的处理方式。

尝试了一下,以一个最笨的方式实现了。先来看一下效果 :

a6c2c61e75cec663523a3730f4ecb77c.gif

我是通过自定义一个Dialog,加载中的效果,是在Dialog内部实现的,进度还是从Activity里面控制的。

下面是Dialog实现类:

public class CustomDialog extends AlertDialog {

public CustomDialog(Context context) {

super(context);

}

private TextView tv_loading;

private ProgressBar progressBar;

private Timer timer;

private int count = 1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.dialog_progress);

tv_loading = (TextView) findViewById(R.id.tv_loading);

progressBar = (ProgressBar) findViewById(R.id.pb);

// 设置Dialog显示的宽度,

Display d = getWindow().getWindowManager().getDefaultDisplay();

WindowManager.LayoutParams lp = getWindow().getAttributes();

//这里设置为屏幕宽度的百分之八十

lp.width = (int) (d.getWidth() * 0.8);

getWindow().setAttributes(lp);

timer = new Timer();

timer.schedule(new TimerTask() {

@Override

public void run() {

handler.sendEmptyMessage(0);

}

}, 300, 300);

setOnDismissListener(new OnDismissListener() {

@Override

public void onDismiss(DialogInterface dialog) {

if (timer != null) {

timer.cancel();

}

}

});

}

Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

count++;

if (count > 3) {

count = 1;

}

switch (count) {

case 1:

tv_loading.setText("加载中.");

break;

case 2:

tv_loading.setText("加载中..");

break;

case 3:

tv_loading.setText("加载中...");

break;

}

}

};

public void setProgress(int progress) {

progressBar.setProgress(progress);

if (progress == 100) {

this.dismiss();

}

}

}

布局文件就一个TextView,一个ProgressBar,

dialog_progress.xml

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/shape_dialog_bg"

android:orientation="vertical"

android:padding="10dp">

android:id="@+id/tv_loading"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_margin="20dp"

android:text="加载中..."

android:textSize="16sp" />

android:id="@+id/pb"

style="@android:style/Widget.ProgressBar.Horizontal"

android:layout_width="match_parent"

android:layout_height="10dp"

android:max="100"

android:progressDrawable="@drawable/layer_list_progress_drawable" />

因为没想到其他的思路,所以,只能通过Timer 来计时改变TextView的显示。。(这里也希望各位大神能指点一下,目前确实想不到其他思路)

ProgressBar的样式,上一篇Android 自定义水平进度条的圆角进度里面有详细介绍,这里就不重复了。

Dialog就是这样。然后就是调用了:

MainActivity.class

public class MainActivity extends FragmentActivity {

private CustomDialog customDialog;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

customDialog = new CustomDialog(this);

}

private int count = 0;

public void tvClick(View view) {

customDialog.show();

final Timer timer = new Timer();

timer.schedule(new TimerTask() {

@Override

public void run() {

count += 10;

runOnUiThread(new Runnable() {

@Override

public void run() {

if (customDialog != null && customDialog.isShowing()) {

customDialog.setProgress(count);

}

}

});

if (count >= 100) {

timer.cancel();

}

}

}, 0, 500);

customDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {

@Override

public void onDismiss(DialogInterface dialog) {

if (timer != null) timer.cancel();

count = 0;

}

});

}

}

这里也是用的Timer来模拟加载进度,(写的过程中感觉Timer的定时操作比其他两种方式用起来方便多了)。

点击事件我是通过在xml里面直接调用的。

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:clickable="true"

android:onClick="tvClick"

android:padding="10dp"

android:text="点击弹框" />

clickable属性不加上的话,有些手机系统默认是没法调用的(之前遇到过小米的,不加这个属性,不触发click事件)

另外,这种click事件的写法在Fragment是不可用的,只能通过setOnClickListener来触发。

更新一种实现方式:

感谢 IT-hero ,又 get 一个 属性动画的用法。

下面是 自定义Dialog 里的一些调整 :

private String[] scoreText = {". ", ".. ", "..."};

ValueAnimator valueAnimator;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.dialog_progress);

tv_loading = (TextView) findViewById(R.id.tv_loading);

progressBar = (ProgressBar) findViewById(R.id.pb);

// 设置Dialog显示的宽度,

Display d = getWindow().getWindowManager().getDefaultDisplay();

WindowManager.LayoutParams lp = getWindow().getAttributes();

//这里设置为屏幕宽度的百分之八十

lp.width = (int) (d.getWidth() * 0.8);

getWindow().setAttributes(lp);

if (valueAnimator == null) {

valueAnimator = ValueAnimator.ofInt(0, 3).setDuration(1000);

valueAnimator.setRepeatCount(ValueAnimator.INFINITE);

valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator animation) {

int i = (int) animation.getAnimatedValue();

tv_loading.setText("加载中" + scoreText[i % scoreText.length]);

}

});

}

valueAnimator.start();

}

//代码省略...

因为没找到 CSDN编辑上传资源 的方式,所以这里 Demo 里面就没有添加这个属性动画的代码,有需要的朋友可以直接从这里copy。

点击下载:源码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

http://www.lbrq.cn/news/1107901.html

相关文章:

  • 老外做汉字网站/品牌互动营销案例
  • 揭阳seo快速排名/新网站 seo
  • dz插件网站和自己做的网站区别/网站制作多少钱
  • 网站建设开发方式/广告文案
  • 服装网站建设目的作用是什么/代写文章多少钱
  • 网站程序是什么意思/自媒体是什么
  • 沈阳优化网站关键词/竞价托管外包代运营
  • 人事代理网站建设/百度企业推广怎么收费
  • 手绘教学网站/windows优化大师会员兑换码
  • 男女做那个的网站/3分钟搞定网站seo优化外链建设
  • 有个专门做gif的网站/网络营销职业规划300字
  • 一个网站一年多少钱/广告传媒公司经营范围
  • 福州免费做网站/百度指数搜索热度大学
  • 政府网站建设管理情况总结/服务营销策划方案
  • 沈阳网站seo优化哪家好/百度竞价广告
  • 政府门户网站建设内容/免费的api接口网站
  • 以做网站为毕设/惠州seo管理
  • 华丽的网站模板/深圳优化seo
  • 做网站流量钱谁给/广州企业推广
  • 做dm素材网站/seo网站推广优化
  • 公司做网站的流程作图的步骤/百度推广广告公司
  • 网站架构设计师月薪多少/网络推广哪家做得比较好
  • 成都网站建设v/北京疫情最新数据
  • 金币交易网站开发/电商网站建设公司哪家好
  • 网站做中秋专题怎么弄/谷歌关键词搜索排名
  • 门户网站开发解决方案/临沂seo代理商
  • 网站建设预算方案模板/网站建设策划
  • 北京网络公司哪家好/重庆百度推广关键词优化
  • 达州做网站/seo外包公司费用
  • 南昌网站设计网站开发/营销型网站制作成都
  • Flowable31动态表单-----------------------终章
  • 从零开始学Tailwind CSS : 颜色配置原理与实践
  • Linux常用指令大全
  • 智慧资产管理系统需求文档
  • 如何用Python并发下载?深入解析concurrent.futures 与期物机制
  • 某邮生活旋转验证码逆向