在做项目时遇到了需要把年份(String)转换为int类型,对年份进行比较,顺便提取为方法,保存下来方便以后使用。...public class ConvertUtil { //把String转化为float public static float convertToFloat(String number, float...double convertToDouble(String number, double defaultValue) { if (TextUtils.isEmpty(number)) { return...defaultValue; } } } 使用时只需调用上面的方法即可(第二个参数是默认值): int yeatInt = ConvertUtil.convertToInt("2017",2015); 以上这篇Android...String类型转换为float、double和int的工具类方法就是小编分享给大家的全部内容了,希望能给大家一个参考。
;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Path;import android.graphics.PathMeasure...;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.DashPathEffect;...atan2 (double y, double x) 虽然atan()方法可以用于求一个反正切值,但是他传入的是一个角度,所以我们使用atan2()方法: Math.atan2()函数返回点(x,y)...; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import...4.gif 只不过这里在绘制的时候,使用了一些Trick,先通过canvas.translate方法将原点移动的圆心,同时,通过canvas.rotate将运动趋势的角度转换为画布的旋转,这样每次绘制切线
Android 图片添加水印的实现方法 实现效果图: ? 手机端打水印(文字和图片)使用的是Bitmap、Matrix和Canvas类的一些方法, 可以实现拉伸、旋转、位移等等效果。...添加全屏斜着45度的文字 / public static Bitmap drawCenterLable(Context context, Bitmap bmp, String text) { float...canvas.rotate(45); //顺时针转45度 Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(Color.argb...beginX = (bmp.getHeight()/2 - rectText.width()/2) * 1.4; //45度角度值是1.414 double beginY = (bmp.getWidth...(BitmapFactory.java:501) 手机端使用Android原生方法打水印, 应该先将压缩分辨率, 避免OOM的情况, 但是影响清晰度; 大部分app都是将原图传到服务器, 在后台打水印。
; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import...); canvas.drawBitmap(bmpSrc, rect, rect, null); } return bmpDest; } /** * bitmap转字节码 */ public static...; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import...float rotation(MotionEvent event) { double delta_x = (event.getX(0) - event.getX(1)); double delta_y...= (event.getY(0) - event.getY(1)); double radians = Math.atan2(delta_y, delta_x); return (float) Math.toDegrees
本文实例为大家分享了Android BitmapUtils工具类的具体代码,供大家参考,具体内容如下 public final class BitmapUtils { public static final...scaleWidht = ((float) w / width); float scaleHeight = ((float) h / height); matrix.postScale(scaleWidht...matrix.preScale(1, -1);//镜像缩放 Bitmap reflectionBitmap = Bitmap.createBitmap( bitmap,0 , (int)(height*(1-region))//从哪个点开始绘制...KB double mid = b.length / 1024; // 获取bitmap大小 是允许最大大小的多少倍 double i = mid / maxSize; // 判断bitmap占用空间是否大于允许最大空间...(bitmap, 0, 0, width, height, matrix, true); } } /** * YUV视频流格式转bitmap * @param data YUV视频流格式 * @return
g, b)); } }); } } 可以发现,这里自定义控件并没有直接在布局文件使用,原因是因为需要用户根据不同的需求通过自定义控件的构造函数传递给控件,所以通过ViewGroup.add()将ColorPickerView...; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.LinearGradient...density = getContext().getResources().getDisplayMetrics().density; double Zoom = (double) (density /...)); mRedrawHSV = true; } @Override protected void onDraw(Canvas canvas) { canvas.translate(CenterX, CenterY...Zoom)), paintGrayShadow); canvas.drawRect(new RectF(CenterX + (float) (15 * Zoom), -CenterY, CenterX
; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas...canvas) { super.onDraw(canvas); int count=canvas.save(); float tranX=(getWidth()-getValueByLine(getWidth...,lEndPointY; float lControlPointX,lControlPointY; //角度转弧度 float angle=mTangentAngle*mTanentAngleInterpolator.getInterpolation...(progress); double radian=Math.toRadians(angle); float x=(float) (Math.sin(radian)*cRadius); float y=...代码 import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import
distance(double x1, double y1, double x2, double y2) { return Math.sqrt(Math.abs(x1 - x2) * Math.abs...LocusPassWordView.java 九宫格自定义控件 import android.content.Context; import android.graphics.Canvas; import...android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View...); } } private void drawLine(Point start, Point end, Canvas canvas, Paint paint) { double d = MathUtil.distance...end.y-ry, paint); } private void drawArrow(Canvas canvas, Paint paint, Point start, Point end, float
/ 2; // PN点的 x,y 坐标 float nextX = mX + Double.valueOf(r * Math.cos(alpha)).floatValue(); float nextY...= my + Double.valueOf(r * Math.sin(alpha)).floatValue(); 当然我们这里以可以用 canvas 的 translate 方法来移动。...i = 0; i <= number; i++) { // - 0.5 : Turn 90 ° counterclockwise float alpha = Double.valueOf...(((2f / number) * i - 0.5) * Math.PI).floatValue(); float nextX = mX + Double.valueOf(r * Math.cos...(alpha)).floatValue(); float nextY = my + Double.valueOf(r * Math.sin(alpha)).floatValue();
只需要一个球形的图片,从下往上裁剪,通过设置setLevel从0到10000,就可以实现进度球从0到进度100的效果了。...canvas = new Canvas(dstBitmap);//设置画布 clipDrawable.draw(canvas);//绘制 return dstBitmap;//将bitmap...<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com...准备知识 二阶贝塞尔曲线 贝塞尔曲线是用一系列点来控制曲线状态的,将这些点简单分为两类: ? 二阶贝塞尔曲线的路径由给定点P0、P1、P2的函数B(t)函数方程如下: ?...public void quadTo (float x1, float y1, float x2, float y2) 其中(x1,y1)是上图中控制点p1的坐标,(x2,
c/c++的那些事 Android的JNI【实战教程】2⃣️–AS下NDK环境配置及第一个工程 Android的JNI【实战教程】3⃣️–Java调用C代码 Android的JNI【实战教程】4⃣️...calculateX(float r, double angle) { angle = angle * ((2 * Math.PI) / 360); Log.e(TAG...); double xFinal = centerX + x; return (float) xFinal; } /** * 根据半径和角度计算...y坐标 */ private float calculateY(float r, double angle) { angle = angle * ((2 * Math.PI...y = r * Math.cos(angle); double yFinal = centerY - y; return (float) yFinal; }
:id="@+id/waveView1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight...实现原理 我们视觉上看到的是水波纹,实际上只是一个正弦波和余弦波向左位移,然后将三角函数的周期加长,在一个view中不显示整个三角函数的的波形,这样从视觉上来说就是水波纹效果啦。...根据上面的分析,我们知道我们需要计算一个正弦波和一个余弦波,并且根据时间的推移将正弦波或者余弦波向左或者向右平移,最后每次计算完波形图的时候绘制下来就完成啦。...下面我们来看下WaveView中的关键代码: private void drawWave(Canvas canvas, int width, int height) { setPaint(); double...lineX = 0; double lineY1 = 0; double lineY2 = 0; for (int i = 0; i < width; i += mStrokeWidth) {
; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint...private float mTxtWidth; // 描述文本的宽度 private float mTxtWidth2; // 文本的高度 private float mTxtHeight; //...百分数文本的大小 private float mTxtSize; // 总成绩 private int mTotalProgress = 100; // 个人的正确率 private double mInnerProgress...(oval, -90, ((float)mInnerProgress / mTotalProgress) * 360, false, mRingPaint); // // canvas.drawCircle...;//个人的正确率 private double cAccuracy;//班级的正确率 private double mCurrentProgress; private LinearLayout btn_black
导语 Android开发中,收集一些常用的代码工具类是非常重要的。现在Android开发技术已经很成熟了,很多代码大牛已经写出了很多框架和工具类,我们现在应该要站在巨人的肩膀上做开发了。...px 的工具类 public class DisplayUtil { /** * 将px值转换为dip或dp值,保证尺寸大小不变 */ public...(dipValue * scale + 0.5f); } /** * 将px值转换为sp值,保证文字大小不变 * * @param pxValue * @param...; return (int) (pxValue / fontScale + 0.5f); } /** * 将sp值转换为px值,保证文字大小不变...canvas = new Canvas(bitmap); drawable.setBounds(0, 0, w, h); drawable.draw(canvas);
Bitmap createBitmap (Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter) 从原始位图剪切图像...; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory...; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff..._8888); Canvas canvas = new Canvas(creBitmap); Paint paint = new Paint(); float roundPx = pixels;...* * @param bitmap * 需要转的bitmap * @param pixels * 转圆角的弧度 * @return 转圆角的bitmap */ public static
; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix...getChildAt(selected) : null; } @Override protected void onDraw(Canvas canvas) {...g = canvas; canvas.rotate(0, circleWidth / 2, circleHeight / 2); g.drawBitmap...getAngle(double xTouch, double yTouch) { double x = xTouch - (circleWidth / 2d); double...* @param view 将视图旋转到中心 * @param fromRunnable 如果这个方法是从runnable中调用的,它会对旋转进行动画化 *
,大致有以下特点 随机运动粒子从圆周向圆心运动,并与切线方向有正负30°的角度差,粒子透明度、半径、运动速度随机,运动超过一定距离或者时间消失 背景圆有一个从内到外的渐变色 计时模式下圆环有一个颜色渐变的顺时针...radius; /** * 粒子初始位置的角度 */ private double anger; /** * 一帧移动的速度 */...~255 */ private int alpha = 153; /** * 随机偏移角度 */ private double randomAnger...= 1F; double moveAnger = anger + randomAnger; mX = (float) (mX - distance * Math.cos...canvas) { super.onDraw(canvas); canvas.save(); canvas.translate(mCenterX, mCenterY
; import android.animation.ValueAnimator; import android.content.Context; import android.graphics.Canvas...(canvas); } /** * 绘制圆 * * @param canvas */ private void drawCircle(Canvas canvas) { //获取每个小圆间隔的角度 float...double angle = rotateAngle * i + mBigCircleRotateAngle; //这里加上大圆旋转的角度是为了带动小圆一起旋转 //计算每个小圆的圆心坐标 float...= mDiagonalDist - mBgStrokeCircleRadius;//线宽从对角线的1/2 ~ 0 mBgPaint.setStrokeWidth(strokeWidth); float...radius = mBgStrokeCircleRadius + strokeWidth / 2;//半径从对角线的1/4 ~ 1/2 canvas.drawCircle(mBigCenterPoint.x
图片效果在下方, import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas...private float marxArcStorkeWidth = 6; //设置进度条圆点的宽度 private float circularDotWidth=15; /** * 画笔对象的引用...canvas) { // TODO 自动生成的方法存根 super.onDraw(canvas); float width = getWidth(); float height = getHeight...jindu = ((float) progress * 1.8f); canvas.drawPoint(bangjing - ((float) (Math.sin((Math.PI / (double...(double) 180) * (double) (jindu <= 90 ?
* 记录图片初始化时的缩放比例 */ private float initRatio; /** * 记录上次两指之间的距离 */ private double lastFingerDis...event.getPointerCount() == 2) { // 有两个手指按在屏幕上移动时,为缩放状态 centerPointBetweenFingers(event); double...* * @param canvas */ private void zoom(Canvas canvas) { matrix.reset(); // 将图片按总缩放比例进行缩放...canvas) { matrix.reset(); // 根据手指移动的距离计算出总偏移值 float translateX = totalTranslateX + movedDistanceX...* * @param event * @return 两个手指之间的距离 */ private double distanceBetweenFingers(MotionEvent event
领取专属 10元无门槛券
手把手带您无忧上云