精华内容
下载资源
问答
  • Android TextView富文本显示图文混排,图片可以点击放大查看并解决连续多张图片时点击错位问题 首先,textView富文本实现图文混排效果网上一搜一大把,我写这篇文章的目的也是为了有需要的伙伴少浪费点时间,毕竟...

    Android TextView富文本显示图文混排,图片可以点击放大查看并解决连续多张图片时点击错位问题

    首先,textView富文本实现图文混排效果网上一搜一大把,我写这篇文章的目的也是为了有需要的伙伴少浪费点时间,毕竟当时我为了完成这个需求不知道查了多少文档,看了N位大神的博客,也出现了各种bug,各种尝试,不知道走了多少弯路,都想跟产品经理说这个需求做不了了,不过最后还是实现了产品的需求,希望能帮到大家。
    当时产品的需求是后台返回一串富文本字符串,App端展示图文混排,并且实现图片能够点击放大查看。
    我这里的富文本数据都是后台返回的,App端并没有写死的数据,后台返回的就是一串带有Html标签的字符串,下面就是一段富文本数据:

    <p>\r\n\t是地方法规水电费<img src=\"http:\/\/tu.chdesign.cn\/test\/pics\/report\/2019\/01\/21\/07c01b29b2874864bec1cd67e2f8b2e4.png?x-oss-process=image\/resize,w_800\" title=\"from clipboard\" alt=\"from clipboard\" \/>防守打法上我的号跟我聊天<img src=\"http:\/\/tu.chdesign.cn\/test\/pics\/report\/2019\/01\/21\/0f82cab339824cb588f4a3b04d83b515.png?x-oss-process=image\/resize,w_800\" title=\"from clipboard\" alt=\"from clipboard\" \/>\r\n<\/p>\r\n<p>\r\n\t就好玩了问题已经荣誉沃\r\n<\/p>\r\n<p>\r\n\t<img src=\"http:\/\/tu.chdesign.cn\/test\/pics\/report\/2019\/01\/21\/323b66b0a1ed44088a8f0e2b2c9334b0.png?x-oss-process=image\/resize,w_800\" title=\"from clipboard\" alt=\"from clipboard\" \/>尔特顾问是现代化和是否官方时候给水电费嘎达\r\n<\/p>\r\n<p>\r\n\t<img src=\"http:\/\/tu.chdesign.cn\/test\/pics\/report\/2019\/01\/21\/6c300aa2e32b4c129a0a3cfa529156c2.png?x-oss-process=image\/resize,w_800\" title=\"from clipboard\" alt=\"from clipboard\" \/>\r\n<\/p>"
    

    我们这里使用Android自带的Html.fromHtml来解析Html标签:

     textview.setText(Html.fromHtml(source, imageGetter, tagHandler));
    

    查看源码:

      /**
         * Returns displayable styled text from the provided HTML string with the legacy flags
         * {@link #FROM_HTML_MODE_LEGACY}.
         *
         * @deprecated use {@link #fromHtml(String, int, ImageGetter, TagHandler)} instead.
         */
        @Deprecated
        public static Spanned fromHtml(String source, ImageGetter imageGetter, TagHandler tagHandler) {
            return fromHtml(source, FROM_HTML_MODE_LEGACY, imageGetter, tagHandler);
        }
    

    这边的三个参数的意思:第一个参数就是那一串富文本字符串了,第二个参数就是解析Html标签中的图片信息了,第三个就是自定义标签,各种Span标签都可以在这里自定义实现,我们的图片点击事件就是在第三个参数中实现的。一般来说,如果只要实现图文混排效果而不要点击图片的话使用前两个参数就可以了,最后一个给null就好。
    首先,我们需要重写ImageGetter 类,获取图片并展示:

    package 自己的包名;
    
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.graphics.Matrix;
    import android.graphics.drawable.BitmapDrawable;
    import android.graphics.drawable.Drawable;
    import android.text.Html;
    import android.view.View;
    import android.widget.TextView;
    
    import com.nostra13.universalimageloader.core.ImageLoader;
    import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
    
    /**
     * HTML.fromHtml解析图片标签
     * <p>
     * Created by 
     */
    
    public class UrlImageGetter implements Html.ImageGetter {
        private Context context;
        private TextView textview;
        private int width;
    
        public UrlImageGetter(Context c, TextView t) {
            this.context = c;
            this.textview = t;
            width = c.getResources().getDisplayMetrics().widthPixels;
        }
    
        @Override
        public Drawable getDrawable(String source) {
            final UrlDrawable urlDrawable = new UrlImageGetter.UrlDrawable();
            ImageLoader.getInstance().loadImage(source,
                    new SimpleImageLoadingListener() {
                        @Override
                        public void onLoadingComplete(String imageUri, View view,
                                                      Bitmap loadedImage) {
                            // 计算缩放比例(去掉控件左右间距)
                            float scaleWidth = ((float) (width - textview.getLeft() * 2)) / loadedImage.getWidth();
    
                            // 取得想要缩放的matrix参数
                            Matrix matrix = new Matrix();
                            matrix.postScale(scaleWidth, scaleWidth);
                            loadedImage = Bitmap.createBitmap(loadedImage, 0, 0,
                                    loadedImage.getWidth(), loadedImage.getHeight(),
                                    matrix, true);
                            urlDrawable.bitmap = loadedImage;
                            urlDrawable.setBounds(0, 0, loadedImage.getWidth(),
                                    loadedImage.getHeight());
    
                            if (textview != null) {
                                textview.invalidate();
                                textview.setText(textview.getText());  // 解决图文重叠
                            }
                        }
                    });
    
            return urlDrawable;
        }
    
        @SuppressWarnings("deprecation")
        public class UrlDrawable extends BitmapDrawable {
            protected Bitmap bitmap;
    
            @Override
            public void draw(Canvas canvas) {
                // override the draw to facilitate refresh function later
                if (bitmap != null) {
                    canvas.drawBitmap(bitmap, 0, 0, getPaint());
                }
            }
        }
    }
    

    这里用的是第三方图片加载器ImageLoader,实际根据自己项目需求解析图片就好。
    到这里其实我们已经实现图文混排效果了:

     //声明
     private UrlImageGetter imgGetter;  
     // 在OnCreate中实例化对象
     imgGetter = new UrlImageGetter(context, textview);  
     //在请求获取到富文本数据后使用
     String content = "富文本字符串";  
     textview.setText(Html.fromHtml(content, imgGetter, null));
    

    textview就是显示富文本的控件,此时,图片应该已经可以显示出来了,不过还不能点击,不需要点击的到这里就可以结束了。要实现点击事件就要使用第三个参数TagHandler,重写TagHandler:

    package 自己的包名;
    
    import android.content.Context;
    import android.content.Intent;
    import android.text.Editable;
    import android.text.Html;
    import android.text.Spanned;
    import android.text.style.ClickableSpan;
    import android.text.style.ImageSpan;
    import android.view.View;
    import org.xml.sax.XMLReader;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Locale;
    
    /**
     * HTML.fromHtml解析图片标签
     * 字符串中的img标签 对其添加点击事件
     * Created by 
     */
    
    public class URLTagHandler implements Html.TagHandler {
    
        private Context mContext;
        private ArrayList<String> urlList = new ArrayList<>();
    
        public URLTagHandler(Context context) {
            mContext = context.getApplicationContext();
        }
    
        @Override
        public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {
            // 处理标签<img>
            if (tag.toLowerCase(Locale.getDefault()).equals("img")) {
                // 获取长度
                int len = output.length();
                // 获取图片地址
                ImageSpan[] images = output.getSpans(len - 1, len, ImageSpan.class);
                String imgURL = images[0].getSource();
                //图片路径有可能是缩略图路径,变成原图路径(截取?前面的字符串)
                if (imgURL.contains("?")) {
                    int index = imgURL.indexOf("?");
                    if (index > 0) {
                        // 记录所有图片地址
                        urlList.add(imgURL.substring(0, index));
                    }
                } else {
                    // 记录所有图片地址
                    urlList.add(imgURL);
                }
                // 记录是第几张图片
                int urlPosition = urlList.size() - 1;
                // 使图片可点击并监听点击事件
                output.setSpan(new ClickableImage(mContext, imgURL, urlPosition), len - 1, len, 
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    
            }
        }
    
        private class ClickableImage extends ClickableSpan {
            private Context context;
            //  private String url;  //点击图片的地址
            private int currPosition = 0;
    
            private ClickableImage(Context context, String url, int position) {
                this.context = context;
                //(url测试的时候用的,不要可以不传)
                //  this.url = url;
                this.currPosition = position;
            }
    
            @Override
            public void onClick(View view) {
                // 进行图片点击之后的处理
                //    ToastUtils.showBottomToast("点击图片的地址" + url);
                if (context != null) {
                    Intent intent = new Intent(context, PictureReference_Activity.class);
                    intent.putExtra("position", currPosition);
                    intent.putStringArrayListExtra("urlListKey", urlList);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    context.startActivity(intent);
                }
    
            }
        }
    
    }
    

    上面的PictureReference_Activity就是查看大图的Activity页面,urlList就是图片路径集合,currPosition当前图片的角标。最后在显示富文本的页面

     String content = "富文本字符串";  
     textview.setText(Html.fromHtml(content, imgGetter, new URLTagHandler(context)));
     //设置这个图片才能点击
     textview.setMovementMethod(LinkMovementMethod.getInstance());
    

    到这里图片就可以点击了,是不是很简单,刚开始我也以为ok了,但是(划重点,要考的),测试后发现,当有连续多张图片中间没有文字空格之类的隔开的时候,点击图片会出现错位问题(就是从第二张开始点击图片放大查看,显示的居然是上一张图片),一口老血都要喷出来了。

    然后就走上了改bug的路程了,心塞塞,后来发现只要图片与图片之间有文字或者有空格之类的隔开,就不会出现错位问题,所以我就很开心的跟后台写接口的同事说,是你们后台数据返回有问题,给图片加点文字描述什么的或者给个空格就好了,结果产品经理说不行,就是纯图片,中间没有文字的,排版显得好看,我擦,想死的心都有了,又是各种查资料,也试过网上博客里面的各种方法,都会出现这种问题,在Github上面找到的开源库也不行真的要绝望了,甚至都要跟产品经理说做不了了。

    后来也是无意中看到这行代码 textview.setMovementMethod(LinkMovementMethod.getInstance()); 既然在TagHandler 上改不了,看看能不能在控件TextView上做文章,又是各种查文档,没想到真的无意中在一篇文章中找到了启发(ps:本来想放上那篇文章的链接的可是忘记那个标题了现在怎么也找不到,后面找到的话会放进来的,不好意思了,万分感谢啊。。。),解决方法就是重写OnTouchListener监听事件:

    package 自己的包名;
    
    import android.text.Layout;
    import android.text.Spanned;
    import android.text.style.ClickableSpan;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.TextView;
    
    /**
     * 解决连续多张图时ClickableSpan错位的问题
     * Created by 
     */
    
    public class LinkMovementMethodOverride implements View.OnTouchListener {
    
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            TextView widget = (TextView) v;
            Object text = widget.getText();
            if (text instanceof Spanned) {
                Spanned buffer = (Spanned) text;
                int action = event.getAction();
                if (action == MotionEvent.ACTION_UP
                        || action == MotionEvent.ACTION_DOWN) {
                    int x = (int) event.getX();
                    int y = (int) event.getY();
    
                    x -= widget.getTotalPaddingLeft();
                    y -= widget.getTotalPaddingTop();
    
                    x += widget.getScrollX();
                    y += widget.getScrollY();
    
                    Layout layout = widget.getLayout();
                    int line = layout.getLineForVertical(y);
                    int off = layout.getOffsetForHorizontal(line, x);
                    /**
                     * 下面这几行就是解决图片点击错位的
                     */
                    float xLeft = layout.getPrimaryHorizontal(off);
                    if (xLeft < x) {
                        off += 1;
                    }
    //                else {
    //                    off -= 1;
    //                }
    
                    ClickableSpan[] link = buffer.getSpans(off, off, ClickableSpan.class);
    
                    if (link.length != 0) {
                        if (action == MotionEvent.ACTION_UP) {
                            link[0].onClick(widget);
                        } else if (action == MotionEvent.ACTION_DOWN) {
                            // Selection only works on Spannable text. In our case setSelection doesn't work on spanned text
                            //Selection.setSelection(buffer, buffer.getSpanStart(link[0]), buffer.getSpanEnd(link[0]));
                        }
                        return true;
                    }
                }
    
            }
    
            return false;
        }
    
    }
    

    原来那篇博客上是这样的:

      /**
        * 下面这几行就是解决图片点击错位的
        */
      float xLeft = layout.getPrimaryHorizontal(off);
          if (xLeft < x) {
                off += 1;
          } else {
                off -= 1;
         }
    

    经过测试发现,前面的图片点击都没有问题,就是最后一张图片点击时居然是前一张的图片,经过调试之后修改为:

      /**
        * 下面这几行就是解决图片点击错位的
        */
      float xLeft = layout.getPrimaryHorizontal(off);
          if (xLeft < x) {
                off += 1;
          } 
      //    else {
      //          off -= 1;
      //   }
    

    完美解决!!!啊哈哈哈哈哈哈。
    额,不好意思,还没说怎么用:

     String content = "富文本字符串";  
     textview.setText(Html.fromHtml(content, imgGetter, new URLTagHandler(context)));
     //设置这个图片才能点击
    // textview.setMovementMethod(LinkMovementMethod.getInstance()); //这个不要了,改成下面那个
    textview.setOnTouchListener(new LinkMovementMethodOverride());
    

    至此,大功告成!!!经测试,完美。产品经理:OK,发布!
    希望对大家有所帮助。

    展开全文
  • 崩溃发现是这样的,在维护项目过程中,有个地图的功能,在地图上会添加很多的标注物,但是我在测试过程中发现只要快速操作,比如连续点击放大地图,就会出现崩溃现象。 崩溃点在dispatch_sync上面,使用同步县城 ...

    崩溃发现是这样的,在维护项目过程中,有个地图的功能,在地图上会添加很多的标注物,但是我在测试过程中发现只要快速操作,比如连续点击放大地图,就会出现崩溃现象。

    崩溃点在dispatch_sync上面,使用同步县城

    dispatch_sync(dispatch_get_main_queue(), ^{
            @try {
                [self.mapView removeAnnotations:removeArray];
                [self.mapView addAnnotations:addArray];
            } @catch (NSException *exception) {
                NSLog(@"%@", exception);
            }
    }

    后来修改成了

    dispatch_async(dispatch_get_main_queue(), ^{
            @try {
                [self.mapView removeAnnotations:removeArray];
                [self.mapView addAnnotations:addArray];
            } @catch (NSException *exception) {
                NSLog(@"%@", exception);
            }
    }

    恰好在查找过程中看到一道面试题,和我这个崩溃点是一样的。

    请看下面这道面试题,输出结果会是什么了?

    - (void)viewDidLoad {
        [super viewDidLoad];
        NSLog(@"1");
        dispatch_sync(dispatch_get_main_queue(), ^{
            NSLog(@"2");
            dispatch_async(dispatch_get_main_queue(), ^{
                NSLog(@"3");
            });
            NSLog(@"4");
        });
        NSLog(@"5");
    }
    

    这道面试题,是在主线程中先进行同步操作打印@"2",然后异步操作打印@"3",那么输出结果是什么呢。

    答案是和我之前遇到的问题一样崩溃在了同步操作上。

    出现这个问题的主要原因是,在同步线程里面执行dispatch_get_main_queue()时会发送线程卡死的现象。

    我们都是在主队列中去更新UI,即我们的界面都是由系统在主队列中维护的,我们在viewDidLoad方法中使用如下GCD方法

     dispatch_sync(dispatch_get_main_queue(), ^{
            });

    就会出错,我们知道同步线程不会去创建新的线程。 验证一下。

    - (void)viewDidLoad {
        [super viewDidLoad];
        for (int i = 0; i <10; i++)
        {
            dispatch_sync(dispatch_get_global_queue(0, 0), ^{
               
                NSLog(@"  %@", [NSThread currentThread]);
                
            });
        }
    }

    输出结果

    2017-08-28 16:28:00.431 测试Demo[68568:1922504] <NSThread: 0x608000076b00>{number = 1, name = main}
    2017-08-28 16:28:00.432 测试Demo[68568:1922504] <NSThread: 0x608000076b00>{number = 1, name = main}
    2017-08-28 16:28:00.434 测试Demo[68568:1922504] <NSThread: 0x608000076b00>{number = 1, name = main}
    2017-08-28 16:28:00.434 测试Demo[68568:1922504] <NSThread: 0x608000076b00>{number = 1, name = main}
    2017-08-28 16:28:00.434 测试Demo[68568:1922504] <NSThread: 0x608000076b00>{number = 1, name = main}
    2017-08-28 16:28:00.435 测试Demo[68568:1922504] <NSThread: 0x608000076b00>{number = 1, name = main}

    显示的线程都是在main主队列下。

    所以我们是和UI在同一个线程里面,并且再次去执行一个主队列任务。我们知道dispatch_get_main_queue()这个主队列是一个串行的队列,而串行队列的基础法则时FIFO(先进先出)。所以这时我们就找到了卡死的问题点了:系统维护的dispatch_get_main_queue()这个队列里面在执行viewDidLoad方法,在viewDidLoad中又再次在dispatch_get_main_queue()这个相同的队列里面执行block方法。由于串行队列FIFO原则,系统维护的dispatch_get_main_queue()先进栈,所以要先执行完毕后,再执行后进栈的队列任务,而系统维护的dispatch_get_main_queue()执行完的条件时viewDidLoad方法执行完毕。

    所以系统维护的dispatch_get_main_queue()会等待dispatch_sync调用的dispatch_get_main_queue()执行完毕,dispatch_sync调用的ispatch_get_main_queue()又在等待先进栈的系统维护的dispatch_get_main_queue()执行完毕,这样就陷入死循环

    所以我们得出一个结论:在同一个线程里面,调用同一个串行队列会发送死锁现象



    作者:Hardy_Hu
    链接:https://www.jianshu.com/p/c39c1db05305
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    展开全文
  • 函数连续性的无穷小定义

    千次阅读 2018-07-12 16:48:42
    点击网址www.wqxwjf.com,进入微积分专业网站“无穷小微积分”,对准网页“ElementaryCalculus”按钮,等待数秒钟,无穷小微积分就会飘然而至,然后,打开第三章,用鼠标滚轮,滚至125页吗,就会看到“连续性”的...

    点击网址www.wqxwjf.com,进入微积分专业网站“无穷小微积分”,对准网页“ElementaryCalculus”按钮,等待数秒钟,无穷小微积分就会飘然而至,然后,打开第三章,用鼠标滚轮,滚至125页吗,就会看到“连续性”的简明定义,而且下方配有显微镜的放大景象,令人启发。

    如果将这段文字翻译成中文,那么,恐怕就不是原汁原味了。

    容易想象,一带一路国家的来华留学生,怎么会不喜欢这种无穷小微积分(PDF)电子教材呢?·

    袁萌 7月12日

    展开全文
  • 连续变化的字号

    2009-10-20 10:37:00
    在文章页,我们经常会看到字号变化的选项,常见的是 [大] [中] [小] 这样的形式,还有一种就是可以在一定的范围内连续变化,控制按钮如下:,当不可用状态的时候 按钮需要变灰,以提示用户字体不可再放大或者缩小。...
    在文章页,我们经常会看到字号变化的选项,常见的是 [大] [中] [小] 这样的形式,还有一种就是可以在一定的范围内连续变化,控制按钮如下:
      ,当不可用状态的时候 按钮需要变灰,以提示用户字体不可再放大或者缩小。根据这些功能,写了一个小程序来控制字体变化和可用状态的切换。
    主要原理是 用一个数组来存储所有的控制字号和 可用状态的class,然后随着+ 或者 - 号的点击,来读取相应的数组元素,计算类名并施加到相应受控容器:
    fstp:["fmin","fstp1","fstp2","fstp3","fstp4","fstp5","fstp6","fstp7","fstp8","fmax"], //字号数组
    fctl:$("#artbox"), //受控容器

     其中fmin 和 fmax 除了控制字号,还控制了+ - 按钮的可用和不可用状态:

    .fmax .func a.add{ background-position:0 0;} /*不可用状态的样式*/
    .fmin  .text p
    { font-size:1em;}
    .fstp1 .text p
    { font-size:1.1em;}
    .fstp2 .text p
    { font-size:1.2em;}
    .fstp3 .text p
    { font-size:1.3em;}
    .fstp4 .text p
    { font-size:1.4em;}
    .fstp5 .text p
    { font-size:1.5em;}
    .fstp6 .text p
    { font-size:1.6em;}
    .fstp7 .text p
    { font-size:1.7em;}
    .fstp8 .text p
    { font-size:1.8em;}
    .fmax .text p
    { font-size:2em;}
    .fmin .func a.dec
    { background-position:0 -34px;} /*不可用状态的样式*/

     完成的代码如下 也可查看DEMO:

    $(function(){
        
    var fsize; //Steping Font Size 
        if(!fsize) fsize={};
        fsize
    ={
            fidx:
    2//起始字号序列
            fstp:["fmin","fstp1","fstp2","fstp3","fstp4","fstp5","fstp6","fstp7","fstp8","fmax"], //字号数组
            fctl:$("#artbox"), //受控容器
            fcls:"artbox "//受控容器原有class
            fup :function(){ //字号增加
                fsize.fidx++;
                
    if(fsize.fidx>=fsize.fstp.length-1)  fsize.fidx=fsize.fstp.length-1;
                
    var cls=fsize.fcls+fsize.fstp[fsize.fidx];
                fsize.fctl.attr(
    "class",cls);
                },
            fdown:
    function(){ //字号减小
                fsize.fidx--;
                
    if(fsize.fidx<=0)  fsize.fidx=0;
                
    var cls=fsize.fcls+fsize.fstp[fsize.fidx];
                fsize.fctl.attr(
    "class",cls);
                }    
            }
        
        
    //fsize.fup();
        $(".add").click(function(){fsize.fup();})
        $(
    ".dec").click(function(){fsize.fdown();})
        $(
    ".add,.dec").focus(function(e){$(e.target).blur()}) //取消a标签的聚焦虚线框
        })

    转载于:https://www.cnblogs.com/trance/archive/2009/10/20/1586769.html

    展开全文
  • 点击上方,选择星标或置顶,不定期资源大放送!阅读大概需要8分钟Follow小博主,每天更新前沿干货无须高考、面向全球招生、初三学生也可入学,采取‘3+2’+3”培养模式,从本科连续培养至...
  • 有主要的放大缩小功能。还有最后做的点击3D旋转、倾斜视角的效果。今天这篇文章来记录一下高德地图的5种地图类型。 (其实是4种类型,加上离线地图) 5种地图类型各自是: 常规地图模式(又...
  • 新手程序员一枚,现在需要我要做一个连续不断的波形图,因为要实现手势操作,所以采用了mpandroidchart ,我在示例代码上面进行改动的,但是我无论如何只能实现一次动画效果。求大神们帮助,现在附上代码 public ...
  • 9、放大播放第一轮图像会显示缩略图,连续第二轮重新播放则不显示缩略图,重新点击放大图像之后则又显示缩略图,同样第二轮重新播放则不显示。播放flash之后,则不再显示缩略图,重新打开则显示。 10、原图像尺寸...
  • 9、放大播放第一轮图像会显示缩略图,连续第二轮重新播放则不显示缩略图,重新点击放大图像之后则又显示缩略图,同样第二轮重新播放则不显示。播放flash之后,则不再显示缩略图,重新打开则显示。 10、原图像尺寸...
  • 8、放大播放第一轮图像会显示缩略图,连续第二轮重新播放则不显示缩略图,重新点击放大图像之后则又显示缩略图,同样第二轮重新播放则不显示。播放flash之后,则不再显示缩略图,重新打开则显示。9、原图像尺寸不要...
  • 单次点击的时候切换暂停/播放状态,连续多次点击每次在点击位置出现一个爱心,随机旋转一个角度,爱心先放大再变透明消失。 原因分析: 要求判断点击手势效果 单次点击的时候切换暂停/播放状态 连续多次点击...
  • 编写Applet,包含两个按钮,一个按钮...连续点击可不断放大或缩小。import java.awt.*; import java.awt.event.*; public class WindowMenu extends WindowAdapter implements ActionListener{ private Frame f;...
  • 连续点击某个控制按钮时,图片伴随着按钮的点击进行正反面切换  对整个效果进行VCD分解,如下图:  按照计算机能理解的方式来分解案例。  •View视觉 : HTML + css 基本界面模板 •Controller : Javascript ...
  • 数学手册计算器

    千次阅读 2017-09-23 10:41:37
    数学手册计算器 具有机器学习的功能,...在数学手册网上输入数学公式,连续点击计算微积分,解方程,给出分析解和数值解和图解, 制图互动放大,用鼠标滚轮放大图形。可以在手机上使用,随时随地学习计算和开发。
  • CSS3+JS 实现超炫的散列画廊特效

    千次阅读 2015-06-15 20:47:44
    下面来介绍下我按照慕课网上的视频讲解实现的照片墙效果图。 首先看下最终实现的效果。效果包括如下: (1)当点击某张图片时,该图片移到中间区域...当连续点击某个控制按钮时,图片伴随着按钮的点击进行正反面切换。
  • 功能列表:1. 增加下载SVG转PNG功能,图片尺寸超出可视区域也能够下载全部显示出来2.... 增加鼠标点击画布增加节点功能,支持批量添加并取消连续点击连续添加的功能8. 增加右键删除节点和左侧工具栏删除节...
  • 既有e^x又有sinx或cosx的积分题的解法

    千次阅读 2017-08-21 19:14:00
    楼上三位,一致对e^x情有独钟,他们都是对的.通常,这类题既有e^x又有sinx或cosx的积分题,一般的解法是:1、选定e^x,或选定sinx、cosx,就得“从一而终”,用分部积分的...下图用两种方法(点击放大、荧屏放大再放大) ...

空空如也

空空如也

1 2 3 4 5 6
收藏数 115
精华内容 46
关键字:

连续点击放大