搜索网站 模板可以用手机制作app的软件

diannao/2026/1/27 0:08:49/文章来源:
搜索网站 模板,可以用手机制作app的软件,seo入门教程视频,推销网站的方法在系统的相册中,观看相片就可以用多个手指进行缩放.要实现这个功能,只需要这几步:1.新建项目,在项目中新建一个ZoomImage.javapublic class ZoomImageView extends View {//初始化状态常量public static final int STATUS_INIT1;//图片放大状态常量public static final int STA…在系统的相册中,观看相片就可以用多个手指进行缩放.要实现这个功能,只需要这几步:1.新建项目,在项目中新建一个ZoomImage.java public class ZoomImageView extends View {     //初始化状态常量     public static final int STATUS_INIT1;     //图片放大状态常量     public static final int STATUS_ZOOM_OUT2;     //图片缩小状态常量     public static final int STATUS_ZOOM_IN3;     //图片拖动状态的常量     public static final int STATUS_MOVE4;     //对图片进行移动和缩放的矩阵     private Matrix matrixnew Matrix();     //需要处理的Bitmap对象     private Bitmap sourceBitmap;     //记录当前的操作状态     private int currentStatus;          //ZoomImageView的宽度     private int width;     //ZoomImageView的高度     private int height;               //记录两指同时放在屏幕上时,中心点的横坐标     private float centerPointX;     //记录两指同时放在屏幕上时,中心点的纵坐标     private float centerPointY;          //记录当前图片的宽度     private float currentBitmapWidth;     //记录当前图片的高度     private float currentBitmapHeight;          //记录上次手指移动时的横坐标     private float lastXMove-1;     //记录上次手指移动时的纵坐标     private float lastYMove-1;          //记录手指在横坐标上的距离     private float moveDistanceX;     //记录手指在纵坐标上的距离     private float moveDistanceY;          //记录图片在矩阵上横向偏移值     private float totalTranslateX;     //记录图片在矩阵上纵向偏移值     private float totalTranslateY;          //记录图片在矩阵上总缩放比例     private float totalRatio;          //记录手指移动的距离造成的缩放比例     private float scaledRatio;          //记录图片初始化时的缩放比例     private float initRatio;          //记录上次手指之间的距离     private double lastFingerDis;          //初始状态  设置当前操作状态为STATUS_INIT     public ZoomImageView(Context context, AttributeSet attrs) {         super(context, attrs);         currentStatusSTATUS_INIT;     }     //将待展示的图片设置进来     public void setImageBitmap(Bitmap bitmap){         sourceBitmapbitmap;         invalidate();     }     Override     protected void onLayout(boolean changed, int left, int top, int right,             int bottom) {         super.onLayout(changed, left, top, right, bottom);         if(changed){             widthgetWidth();             heightgetHeight();         }     }          Override     public boolean onTouchEvent(MotionEvent event) {         switch (event.getActionMasked()) {         case MotionEvent.ACTION_POINTER_DOWN:             if(event.getPointerCount()2){                 lastFingerDisdistanceBetweenFingers(event);  //两指间按下的距离             }             break;         case MotionEvent.ACTION_MOVE:             if(event.getPointerCount()1){  //如果只有一个手指在屏幕上 则为拖动模式                 float xMoveevent.getX();                 float yMoveevent.getY();                 if(lastXMove-1lastYMove-1){                     lastXMovexMove;                     lastYMoveyMove;                 }                 currentStatusSTATUS_MOVE;                 moveDistanceXxMove-lastXMove;                 moveDistanceYyMove-lastYMove;                 //进行边界检查 不允许拖出边界                 if(totalTranslateXmoveDistanceX0){                     moveDistanceX0;                 }                 else if(width-(totalTranslateXmoveDistanceX)currentBitmapWidth){                     moveDistanceX0;                 }                 if(totalTranslateYmoveDistanceY0){                     moveDistanceY0;                 }                 else if(height-(totalTranslateYmoveDistanceY)currentBitmapHeight){                     moveDistanceY0;                 }                                  //调用onDraw()方法绘制图片                 invalidate();                 lastXMovexMove;                 lastYMoveyMove;             }             else if(event.getPointerCount()2){                 //有两个手指在屏幕上移动  为缩放状态                 centerPointBetweenFingers(event);                 double fingerDisdistanceBetweenFingers(event);                 if(fingerDislastFingerDis){                     currentStatusSTATUS_ZOOM_OUT;                 }                 else{                     currentStatusSTATUS_ZOOM_IN;                 }                 //进行缩放倍数检查                 if((currentStatusSTATUS_ZOOM_OUTtotalRatio4*initRatio)||(currentStatusSTATUS_ZOOM_INtotalRatioinitRatio)){                     scaledRatio(float) (fingerDis/lastFingerDis);  //需要缩放的比例                     totalRatiototalRatio*scaledRatio;                     if(totalRatio4*initRatio){                         totalRatio4*initRatio;                     }                     else if(totalRatioinitRatio){                         totalRatioinitRatio;                     }                     //调用onDraw                     invalidate();                     lastFingerDisfingerDis;                 }             }             break;         case MotionEvent.ACTION_POINTER_UP:             if(event.getPointerCount()2){                 lastXMove-1;                 lastYMove-1;             }             break;         case MotionEvent.ACTION_UP:             lastXMove-1;             lastYMove-1;             break;         default:             break;         }         return true;     }          Override     protected void onDraw(Canvas canvas) {         super.onDraw(canvas);         switch (currentStatus) {         case STATUS_ZOOM_OUT:         case STATUS_ZOOM_IN:             zoom(canvas);             break;         case STATUS_MOVE:             move(canvas);             break;         case STATUS_INIT:             initBitmap(canvas);             break;         default:             canvas.drawBitmap(sourceBitmap, matrix, null);             break;         }     }          //初始化显示图片     private void initBitmap(Canvas canvas){         if(sourceBitmap!null){             matrix.reset();             int bitmapWidthsourceBitmap.getWidth();             int bitmapHeightsourceBitmap.getHeight();             if(bitmapWidthwidth||bitmapHeightheight){//如果图片的宽度或高度有大于屏幕宽高                 if(bitmapWidth-widthbitmapHeight-height){    //判断这张图片 是宽度长  还是高度长  如果是宽度长,则按宽度的那边进行压缩  高度也等比例压缩                     float radiowidth/(bitmapWidth*1.0f);     //需要压缩的比例                       matrix.postScale(radio,radio);             //缩放矩阵比例                     float translateY(height-(bitmapHeight*radio))/2f;   //因为是按宽度进行压缩  所以宽度应该是占满全屏  这时候还应该将图片Y轴向下移动                     //在纵坐标上进行偏移 以保证图片居中显示                     matrix.postTranslate(0, translateY);                     totalTranslateYtranslateY;                     totalRatioinitRatioradio;                 }                 else{                     //当图片高度大于屏幕高度时                     float radioheight/(bitmapHeight*1.0f);                     matrix.postScale(radio, radio);                     float translateX(width-(bitmapWidth*radio))/2f;                     //在横坐标上进行偏移                      matrix.postTranslate(translateX, 0);//平移                     totalTranslateXtranslateX;                     totalRatioinitRatioradio;                 }             }             else{                 //当图片的宽度与高度都小于屏幕宽高时,让图片居中显示                 float translateX(width-sourceBitmap.getWidth())/2f;                 float translateY(height-sourceBitmap.getHeight())/2f;                 matrix.postTranslate(translateX, translateY);                 totalTranslateXtranslateX;                 totalTranslateYtranslateY;                 totalRatioinitRatio1f;                 currentBitmapHeightbitmapHeight;                 currentBitmapWidthbitmapWidth;             }             canvas.drawBitmap(sourceBitmap, matrix, null);         }     }          //对图片进行缩放处理     private void zoom(Canvas canvas){         matrix.reset();         //将图片按照比例缩放         matrix.postScale(totalRatio, totalRatio);         float scaledWidthsourceBitmap.getWidth()*totalRatio;         float scaledHeightsourceBitmap.getHeight()*totalRatio;                  float translateX0f;         float translateY0f;                  //如果当前图片宽度小于屏幕宽度  则按屏幕中心点 进行水平缩放,否则按两指中线点的横坐标进行缩放         if(currentBitmapWidthwidth){             translateX(width-scaledWidth)/2f;         }         else{             translateXtotalTranslateX*scaledRatiocenterPointX*(1-scaledRatio);                          //进入边界检查 ,保证图片缩放后水平方向不会偏移屏幕             if(translateX0){                 translateX0;             }             else if(width-translateXscaledWidth){                 translateXwidth-scaledWidth;             }         }         if(currentBitmapHeightheight){             translateY(height-scaledHeight)/2f;         }         else{             translateYtotalTranslateY*scaledRatiocenterPointY*(1-scaledRatio);             //进行边界检查             if(translateY0){                 translateY0;             }             else if(height-translateYscaledHeight){                 translateYheight-scaledHeight;             }         }         //缩放后对图片进行偏移 保证缩放后中心点位置不变         matrix.postTranslate(translateX, translateY);         totalTranslateXtranslateX;         totalTranslateYtranslateY;         currentBitmapWidthscaledWidth;         currentBitmapHeightscaledHeight;         canvas.drawBitmap(sourceBitmap, matrix, null);     }          //对图片进行平移处理     private void move(Canvas canvas){         matrix.reset();         //根据手指移动的距离计算总偏移量         float translateXtotalTranslateXmoveDistanceX;         float translateYtotalTranslateYmoveDistanceY;         //按照已有的缩放比例对图片缩放         matrix.postScale(totalRatio, totalRatio);         //根据移动距离进行偏移         matrix.postTranslate(translateX, translateY);         totalTranslateXtranslateX;         totalTranslateYtranslateY;         canvas.drawBitmap(sourceBitmap, matrix, null);     }          //计算两个手指的距离     private double distanceBetweenFingers(MotionEvent event){         float disXMath.abs(event.getX(0)-event.getX(1));         float disYMath.abs(event.getY(0)-event.getY(1));         return Math.sqrt(disX*disXdisY*disY);        }     //计算两个手指之间中心点的坐标     private void centerPointBetweenFingers(MotionEvent event){         float xPoint0event.getX(0);         float yPoint0event.getY(0);         float xPoint1event.getX(1);         float yPoint1event.getY(1);         centerPointX(xPoint0xPoint1)/2;         centerPointY(yPoint0yPoint1)/2;     } }2.打开activity_main.xml com.example.bitmaptest.ZoomImageView xmlns:androidhttp://schemas.android.com/apk/res/android     xmlns:toolshttp://schemas.android.com/tools     android:layout_widthmatch_parent     android:layout_heightmatch_parent     android:idid/zoom_image     tools:contextcom.example.bitmaptest.MainActivity       /com.example.bitmaptest.ZoomImageView  3.打开MainActivity.java public class MainActivity extends ActionBarActivity {     private Bitmap bitmap;     Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         ZoomImageView zoomImage(ZoomImageView) findViewById(R.id.zoom_image);         bitmapBitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);         if(bitmap!null){             zoomImage.setImageBitmap(bitmap);         }     } }  来自为知笔记(Wiz)转载于:https://www.cnblogs.com/aibuli/p/76d1cd14cb1dcf018198fba314bb3509.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/87787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站交互界面国内html5网站案例

文章目录 结构优缺点优点缺点使用了迭代器模式的知名框架代码示例在实现迭代器时,需要有什么考虑迭代器模式(Iterator)是一种行为设计模式,它允许在不暴露集合底层表示的情况下,顺序访问一个集合中的元素。这种模式在需要逐个处理集合中的元素,而又不希望暴露其内部结构的…

写出网站开发的基本流程做网站需要做优化吗

文章目录1 问题描述2 问题分析3 代码实现1 问题描述 有读者和写者两组并发进程,共享一个文件,当两个或两个以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时…

淘宝客如何建立自己的网站建设商城网站的难点

思路:因为题目说只要存在组ai??ai??n??ai??2n?≠?6就令人满意,也就是不满意的情况就是所有ai??ai??n??ai??2n?都等于6那就用所有的情况减去不满意的情况,总结: 直接用二分幂不知道为什么wa的要死,看到别人的题…

潍坊在线制作网站网站推广软件费用是多少

最大子矩阵...悬线法..时间复杂度O(nm)悬线法就是记录一个H向上延伸的最大长度(悬线), L, R向左向右延伸的最大长度, 然后通过递推来得到. ------------------------------------------------------------------#include<bits/stdc.h>using namespace std;#define ok(c) …

有可以做推广的网站吗网站设计欣赏移动

今天是三八女神节&#xff0c;这里先祝广大的程序员妹子们节日快乐&#xff0c;健康美丽&#xff01;有一个问题&#xff0c;相信很多.NET程序员都很感兴趣&#xff1a;.NET程序员中女生占比多少&#xff1f;先来公布答案&#xff1a;在本次调查中发现&#xff0c;.NET程序员群…

新丰县建设局网站模板 网站 缺点

js 一直允许定义类。ES6新增了相关语法(包括class关键字)让创建类更容易。新语法创建的类和老式的类原理相同。js 的类和基于原型的继承机制与Java等语言中的类和继承机制有着本质区别。 1 类和原型 类意味着一组对象从同一个原型对象继承属性。因此&#xff0c;原型对象是…

修改wordpress地址网站打不开哪里有专做水果的网站

在 Lua 中&#xff0c;性能分析&#xff08;profiling&#xff09;是一个关键步骤&#xff0c;用于找出代码中的瓶颈和优化机会。通过性能分析&#xff0c;你可以了解哪些函数或代码段占用了最多的执行时间&#xff0c;从而可以优先优化这些部分。 Lua 本身并没有内置的性能分…

中建建筑网站海南政务网

2024网盘行业再次重燃战火。字节旗下产品头条搜索极速版APP、悟空浏览器APP推出对应的网盘功能&#xff0c;刚刚开放了拉新推广&#xff0c;现在是一个不能错过新项目的好时机。 如果你对网盘拉新推广充满热情&#xff0c;千万不要错过星子助推联合字节推出的网盘项目机会。小…

中国建设机械教育网官方网站网站编程图

随着人口老龄化的加剧&#xff0c;智慧养老成为了社会关注的焦点。智慧养老小程序作为一种便捷、高效的服务工具&#xff0c;为老年人提供了更全面、个性化的服务。本文将介绍如何使用JAVA编程语言开发一款同城服务智慧养老小程序。 一、设计思路 界面设计&#xff1a;小程序…

网站权限设计深圳出台鼓励芯片产业政策

用该命令sed删除文件test.txt中包含某个字符串abc的行: sed /adc/d test.txt >result.txt 在文件test.txt中删除从开头到含有某个字符串abc的行 sed 1,/abc/d test.txt >result.txt 获取文件test.txt中包含字符串abc的行 cat test.txt |grep "abc" > resul…

地方网站怎么做挣钱网站开发案例详解 源代码

随着 Visual Studio Code 1.59.0 正式版本的发布&#xff0c;全新的插件测试 API 也从试验版本进入了正式版本。自 2020 年 9 月起至今&#xff0c;经过了将近一年及数次版本迭代的打磨&#xff0c;不管是 API 的功能性还是易用性&#xff0c;与首个预览版本相比都获得了极大的…

怎么个人网站设计网站建设app杭州

在Android开发中&#xff0c;Hook技术是一种强大的手段&#xff0c;它允许开发者拦截和修改系统或应用的行为。通过Hook&#xff0c;我们可以在事件传递的过程中插入自定义的逻辑&#xff0c;从而实现对应用行为的监控和修改。 Android 系统有自己的事件分发机制&#xff0c;…

做定制网站价格网页设计做军事网站的感想

一、进程间通信方式 管道( pipe )&#xff1a;管道是一种半双工的通信方式&#xff0c;数据只能单向流动&#xff0c;而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。有名管道 (named pipe) &#xff1a; 有名管道也是半双工的通信方式&#xff0c…

2015网站建设源码纯净水企业怎样做网站

#第一章 Web基础知识 Web开发基本概念 1、万维网是一个由许多相互链接的超文本组成的系统&#xff0c;通过互联网访问。 2、web&#xff1a;worldwideweb&#xff0c;万维网&#xff0c;简称web&#xff0c;www&#xff0c;通常称为网页。 3、web开发&#xff1a;进行网页页…

成都门户网站建设公司传承网页设计公司

大规模语言模型的发展历程虽然只有短短不到五年的时间&#xff0c;但是发展速度相当惊人&#xff0c;国内外有超过百种大模型相继发布。中国人民大学赵鑫教授团队在文献按照时间线给出 2019 年至 2023 年比较有影响力并且模型参数量超过 100 亿的大规模语言模型。大规模语言模型…

那个网站可以做攻略成都做小程序哪个服务最好

目前可以选择的网站程序还是蛮多的&#xff0c;开源的系统也很多&#xff0c;也有很多精品。更多时候&#xff0c;选择网站程序要结合网站的定位。说说dedecms&#xff0c;就是我们都知道的织梦程序&#xff0c;功能很齐全&#xff0c;作为一个简单的资讯门户网站&#xff0c;算…

家具网站建设比较好的pexels免费素材网

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼名称&#xff1a;OPPO X903 杜比音效脉冲反馈样本 For VIPER4Android FX v2.0样本数量&#xff1a;72适配V4A版本&#xff1a;ViPER4Android FX v2.2.0.1 或更高适用范围&#xff1a;耳机内放制作者&#xff1a;漫游因特网授权&…

上海专业网站制作设计公司哪家好自己做的视频网站如何赚钱

大学计算机基础第3讲数制及其相互转换国家精品课程课件PPT第1 章计算机基础知识第3 讲数制及其相互转换主要教学内容数制的基本概念1 数制转换2 小结3 学习目标1 理解数制的基本概念。2 掌握数制间的转换。3 能够灵活应用转换关系完成数制之间的转换。重点与难点不同数制之间的…

国外大气的网站著名的个人网站

立即学习:https://edu.csdn.net/course/play/19711/255505?utm_sourceblogtoedu sys是一个系统的环境交互模块&#xff0c;是唯一一个可以与操作系统有关的模块 #codingutf-8 import sysprint(sys.modules) print(sys.)