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

那些网站做推广自动app优化下载

那些网站做推广,自动app优化下载,专业做礼品团购的网站,php网站服务器架设用系统的Progressbar,设置图片drawable作为进度条会出现图片长度不好控制,容易被截断,或者变形的问题。而我有个需求,使用图片背景,和图片进度,而且在进度条头部有个闪光点效果。 如下图: 找了…

用系统的Progressbar,设置图片drawable作为进度条会出现图片长度不好控制,容易被截断,或者变形的问题。而我有个需求,使用图片背景,和图片进度,而且在进度条头部有个闪光点效果。

如下图:

1605e545fb19408284eb6b6bda03fd28.jpeg

找了两个小时,国内外,百度,github搜遍了,全网都没有找到一个现成的。

最后只好自己写一个。本来我用自己代码写的用颜色值的进度条,很容易就实现了。

产品要用设计师的图片。谁知道啊,这么个小功能却这么麻烦,为这么个进度条的功能加班到晚上11点。

package com.alisajidapps.watermarkpdfss.view;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;import com.alisajidapps.watermarkpdfss.R;public class CustomProgressBar extends View {private Paint paint;private Bitmap progressBarImage;private Bitmap backgroundImage;private Bitmap progressPointerBitmap;private Rect srcRect;private Rect dstRect;private int progress;//手机宽度private int screenWidth;private int progressWidth;private int progressHeight;//缩放后的进度条宽度private int progressBarWidthNew;private Rect pointerRect;private Rect pointerDstRect;public CustomProgressBar(Context context) {super(context);init();}public CustomProgressBar(Context context, AttributeSet attrs) {super(context, attrs);init();}public CustomProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}private void init() {paint = new Paint();progressBarImage = BitmapFactory.decodeResource(getResources(), R.drawable.update_progress); // 你的进度条图片资源backgroundImage = BitmapFactory.decodeResource(getResources(), R.drawable.update_progress_bg); // 你的进度条图片资源progressPointerBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.update_progress_seek); // 你的进度条图片资源DisplayMetrics displayMetrics = getResources().getDisplayMetrics();screenWidth = displayMetrics.widthPixels;scale = (float) (screenWidth*0.7/backgroundImage.getWidth());progressWidth =  progressBarImage.getWidth();progressHeight = progressBarImage.getHeight();progressBarWidthNew = (int) (progressBarImage.getWidth()*scale);srcRect = new Rect();dstRect = new Rect();backRect=new Rect();backDstRect=new Rect();pointerRect = new Rect();pointerDstRect = new Rect();progress =10;}public void setProgress(int progress) {this.progress = progress;invalidate(); // 重绘视图}Rect backRect;Rect backDstRect;float scale;@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);Log.e("xxx","scrrenWidth:"+screenWidth);//第一步,画背景backRect.left =0;backRect.top = 0;backRect.right = backgroundImage.getWidth();backRect.bottom = backgroundImage.getHeight();Log.e("xxx",scale+"");Log.e("xxx","backgroundImageWidth:"+backgroundImage.getWidth()+"");backDstRect.top =20;backDstRect.left = (int) (screenWidth/2 - (backgroundImage.getWidth() * scale/2));backDstRect.right = (int) (screenWidth/2 + (backgroundImage.getWidth() * scale/2));backDstRect.bottom = (int) (backgroundImage.getHeight() * scale)+20;// 绘制缩放后的位图,dstRect缩放后,画进去的图片就是缩放的。canvas.drawBitmap(backgroundImage, backRect, backDstRect, paint);//第二步,画进度条srcRect.left = 0;srcRect.top = 0;srcRect.right = progressWidth;srcRect.bottom = progressHeight;Log.e("xxx","progressWidth:"+progressWidth);Log.e("xxx","progressHeight:"+progressHeight);Log.e("xxx","progressbarWidth:"+progressBarImage.getWidth());progressWidth = (int) (progressBarWidthNew *progress / 100 ); // 假设进度是0到100//dstRect  等比例缩放了,画进去的图片就会等比例缩放dstRect.top =30;dstRect.left = (int) (screenWidth/2 -  progressBarWidthNew/2);dstRect.right = dstRect.left+ progressWidth;dstRect.bottom = (int) (progressBarImage.getHeight() * scale+30);canvas.drawBitmap(progressBarImage, srcRect, dstRect, paint);Log.e("xxx","怎么没有绘制:"+progressWidth);//第三步,画进度条前面的指针效果pointerRect.left = 0;pointerRect.top = 0;pointerRect.right = progressPointerBitmap.getWidth();pointerRect.bottom = progressPointerBitmap.getHeight();pointerDstRect.left = dstRect.right-15;pointerDstRect.top = 0;pointerDstRect.right = (int) (dstRect.right+ progressPointerBitmap.getWidth()*scale-15);pointerDstRect.bottom = (int) (progressPointerBitmap.getHeight()*scale);canvas.drawBitmap(progressPointerBitmap,pointerRect,pointerDstRect,paint);}
}

使用时只需要调用setProgressBar就行。

上图就是代码实现的效果。

 

知识总结:

1,基本的绘制图片方法

drawBitmap(Bitmap bitmap, float left, float top, Paint paint)

参数://Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置

 

2, drawBitmap( Bitmap bitmap, Rect src, Rect dst, Paint paint);

 

这里由2个Rect,第一个Rect --src 代表要裁剪的bitmap的区域,如传null,表示需要绘制整个图片,

 

第二个Rect ---det表示需要将bitmap,绘制在屏幕上的位置,不可为空,并且大于src则把src的裁截区放大,小于src则把src的裁截区缩小。

 

 Bitmap bitmap = BitmapFactory.decodeResource(getContext().getResources(),R.drawable.ic_logo);

        //绘制方法1:---原图,制作偏移

        canvas.drawBitmap(bitmap,100,100,mPaint);//将图片从(0,0)位置向左偏移100,向右偏移100

 

        Rect srcRect = new Rect(0,0,bitmap.getWidth()/2,bitmap.getHeight()/2);//截取图片左上1/4的区域

 

        Rect dstRect = new Rect(500,500,800,800);//图片需要绘制的矩形区域

        //绘制方法2:--先裁剪再展示

        canvas.drawBitmap(bitmap,srcRect,dstRect, mPaint);

http://www.ritt.cn/news/10205.html

相关文章:

  • 企业网站建设单位营业推广策划方案
  • 论述营销型网站的评价标准如何网络推广
  • 做一网站困难吗外链大全
  • 网站开发论文中的开发环境百度seo优化分析
  • 快速开发企业网站东莞seo网络优化
  • 惠州网站制作找哪家网站建站价格
  • dreamweaver网站制作教程seo类目链接优化
  • 网站跳转是什么意思产品如何推广
  • wordpress托管国内访问很慢关键词排名优化方法
  • 网站建设泉州效率网络企业网站的网络营销功能
  • 一个完整网站开发需要什么技术上海的重大新闻
  • 乡村振兴网站建设新品推广计划与方案
  • java开源商城系统源码seo站长工具 论坛
  • 长沙专业做网站较好的公司seo排名的公司
  • 网站流量共享电商代运营十大公司排名
  • 做视频网站技术壁垒在哪里事件营销的概念
  • 数码公司网站建设调查友情连接
  • 为某网站做一则广告语网站搜索引擎优化的基本内容
  • wordpress mo po在seo优化中
  • 注册安全工程师考试科目长沙seo网站推广
  • 做仿网站的书成都高新seo
  • 学校网站推广策划书申请自媒体平台注册
  • 给别人做网站被诉侵权网络营销是指
  • 动易网站地图google官网入口手机版
  • 养生门户网站源码宁德市公共资源交易中心
  • 企业做网站须要注意些什么付费推广
  • 做类似360手赚那样的网站重庆镇海seo整站优化价格
  • ninaszjs wordpressaso关键词排名优化是什么
  • 2345浏览器官网下载福州seo代理商
  • 中信建设有限责任公司发债公告武汉网络推广优化