当前位置: 移动技术网 > IT编程>移动开发>Android > Android 手势 正则匹配图片实例代码

Android 手势 正则匹配图片实例代码

2019年07月24日  | 移动技术网IT编程  | 我要评论

新课标第一网数学,造梦西游2苍生挂饰,冬天里的白玫瑰简谱

为没有手势的控件(viewflipper) 添加手势

xml

<?xml version="1.0" encoding="utf-8"?>
<linearlayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  android:layout_height="match_parent" tools:context="com.example.mygesture.mainactivity">
    <viewflipper
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/vf_main_one"
    ></viewflipper>
</linearlayout>

activity

控件中,我放入的是手机内存中的所有图片,所有必须先获取读取的权限

在 androidmanifest.xml 文件中获取权限 

<uses-permission android:name="android.permission.read_external_storage"></uses-permission>
package com.example.mygesture;
import android.graphics.bitmap;
import android.graphics.bitmapfactory;
import android.os.environment;
import android.os.patternmatcher;
import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.util.log;
import android.view.gesturedetector;
import android.view.motionevent;
import android.widget.imageview;
import android.widget.toast;
import android.widget.viewflipper;
import java.io.inputstream;
import java.util.linkedlist;
import java.util.list;
import java.util.regex.matcher;
import java.util.regex.pattern;
public class mainactivity extends appcompatactivity {
  private viewflipper viewflipper;
  private list<imageview> list=new linkedlist<>();
  private gesturedetector jc;
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
//取到控件
viewflipper = (viewflipper)findviewbyid(r.id.vf_main_one);
 //判断内存卡,是否可用    if(environment.getexternalstoragestate().equals(environment.media_mounted)){
 //取到内存卡的绝对路径
      string abspath=environment.getexternalstoragedirectory().getabsolutepath();
     //建立文件对象
      file file=new file(abspath);
      //取到内存卡内的所有文件、文件夹
      file [] filetwo=file.listfiles();
      for (file file1 : filetwo) {
        try {
         //调用文件的递归方法
          traversalsearch(file1);
        } catch (ioexception e) {
          e.printstacktrace();
        }
      }
    }
    //集合中的图片是,内存卡内的所有图片
    for (imageview imageview : list) {
    //把集合中的所有图片加入到(viewflipper)控件中
      viewflipper.addview(imageview);
    }
   //建立手势检测器,参数一:上下文 参数二 检测器的检测事件
    jc = new gesturedetector(this,new gesturedetector.ongesturelistener(){
      @override
      public boolean ondown(motionevent e) {
        //按下触发
        return false;
      }
      @override
      public void onshowpress(motionevent e) {
      }
      @override
      public boolean onsingletapup(motionevent e) {
         //轻按触发
        return false;
      }
      @override
      public boolean onscroll(motionevent e1, motionevent e2, float distancex, float distancey) {
        //移动触发
        return false;
      }
      @override
      public void onlongpress(motionevent e) {
         //常按 触发
      }
      @override //滑动完后,触发
      public boolean onfling(motionevent e1, motionevent e2, float velocityx, float velocityy) {
//本方法,参数一:起始位置 参数二:结束位置 ,参数三四:x轴 y轴      
        if(e2.getx()-e1.getx()>200){
          //显示上一张
          viewflipper.showprevious();
          toast.maketext(mainactivity.this, "   001", toast.length_short).show();
        }
        if(e1.getx()-e2.getx()>200){
          //显示下一张
          viewflipper.shownext();
          toast.maketext(mainactivity.this, "   004", toast.length_short).show();
        }
        return false;
      }
    });
  }
  @override //重写 触摸 回调函数
  public boolean ontouchevent(motionevent event) {
    //给手势检测器设定触摸函数,必写!
    return jc.ontouchevent(event);
  }
// 查询所有文件的递归方法
  public void traversalsearch(file file) throws ioexception {
    if(file.isdirectory()){
      file [] filetwo=file.listfiles();
      for (file file1 : filetwo) {
         traversalsearch(file1);
       }
    }else{
      string name=file.getname();
      //图片格式
      string regstr = "[gg][ii][ff]|[jj][pp][gg]|[bb][mm][pp]|[jj][pp][ee][gg]";
      //把正则 匹配的格式放入 类中
      pattern pattern = pattern.compile(regstr);
      //把需要匹配的,放入
      matcher matcher = pattern.matcher(name);
      //匹配结果,符合为true 反之false
      if(matcher.find()){
        imageview image=new imageview(this);
//通过绘图工厂,利用文件路径取到,文件 
bitmap bitmap= bitmapfactory.decodefile(file.getabsolutepath().trim()); 
     //把图片文件设置入图片控件内
        image.setimagebitmap(bitmap);
        if(list.size()<20){ 
        //我只加入二十个图片,过多,内存溢出
          list.add(image);
        }
      }
    }
  }
}

以上所述是小编给大家介绍的android 手势 正则匹配图片实例代码,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网