Android实现图片放大缩小

Android实现图片放大缩小   

package com.min.Test_Gallery;  
 
import Android.app.Activity;  
import android.graphics.Bitmap;  
import android.graphics.BitmapFactory;  
import android.graphics.Color;  
import android.graphics.Matrix;  
import android.os.Bundle;  
import android.util.DisplayMetrics;  
import android.util.Log;  
import android.view.GestureDetector;  
import android.view.KeyEvent;  
import android.view.MotionEvent;  
import android.view.View;  
import android.view.GestureDetector.OnGestureListener;  
import android.view.View.OnTouchListener;  
import android.widget.Button;  
import android.widget.FrameLayout;  
import android.widget.ImageView;  
import android.widget.LinearLayout;  
import android.widget.Toast;  
 
public class DisplayImage extends Activity implements OnTouchListener, OnGestureListener  {  
    private static final String TAG = "DisplayImage";  
    private static final int FLING_MIN_DISTANCE = 100;  
    private static final int FLING_MIN_VELOCITY = 200;  
      
      
    /* 相关变量声明 */ 
    private ImageView mImageView;  
    private Button mButton01;  
    private Button mButton02;  
    private FrameLayout layout1;  
    private LinearLayout layoutImage;  
    private Bitmap bmp;  
    private int id=0;  
    private int displayWidth;  
    private int displayHeight;  
    private float scaleWidth=1;  
    private float scaleHeight=1;  
    private GestureDetector mGestureDetector;  
      
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState)    {  
        super.onCreate(savedInstanceState);  
        /* 加载display.xml Layout */ 
        setContentView(R.layout.display);  
          
        /* 取得屏幕分辨率大小 */ 
        DisplayMetrics dm=new DisplayMetrics();  
        getWindowManager().getDefaultDisplay().getMetrics(dm);  
        displayWidth=dm.widthPixels;  
        displayHeight=dm.heightPixels;   
          
        /* 初始化相关变量 */ 
        Bundle bundle = this.getIntent().getExtras();  
        Integer imageId = bundle.getInt("imageId");  
        Log.i(TAG, "onCreate, imageId = " + imageId);  
                       
        bmp=BitmapFactory.decodeResource(getResources(), imageId);   
        mImageView = (ImageView)findViewById(R.id.myImageView);  
        mImageView.setImageBitmap(bmp);  
        mImageView.setOnTouchListener(this);  
        mImageView.setLongClickable(true);  
          
        layout1 = (FrameLayout)findViewById(R.id.layout1);  
        layoutImage = (LinearLayout)findViewById(R.id.layoutImage);  
        mButton01 = (Button)findViewById(R.id.myButton1);  
        mButton02 = (Button)findViewById(R.id.myButton2);   
          
        /* 缩小按钮onClickListener */ 
        mButton01.setOnClickListener(new Button.OnClickListener() {  
            @Override 
            public void onClick(View v) {  
                small();   
            }  
        });  
          
        /* 放大按钮onClickListener */ 
        mButton02.setOnClickListener(new Button.OnClickListener() {  
            @Override         
            public void onClick(View v) {  
                big();  
            }   
        });  
    }    
      
    // 用户轻触触摸屏,由1个MotionEvent ACTION_DOWN触发  
    @Override 
    public boolean onDown(MotionEvent e) {  
        // TODO Auto-generated method stub  
//      Toast.makeText(this, "onDown", Toast.LENGTH_SHORT).show();      
        Log.i(TAG, "onDown...");  
          
        return false;  
    }  
 
    /* 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN,  
     * 多个ACTION_MOVE, 1个ACTION_UP触发 
     * 参数解释:  
     * e1:第1个ACTION_DOWN MotionEvent  
     * e2:最后一个ACTION_MOVE MotionEvent  
     * velocityX:X轴上的移动速度,像素/秒  
     * velocityY:Y轴上的移动速度,像素/秒  
     * 触发条件 :  
     * X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒 
     * @see android.view.GestureDetector$OnGestureListener#onFling(android.view.MotionEvent, android.view.MotionEvent, float, float) 
     */ 
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,  
            float velocityY) {  
        // TODO Auto-generated method stub  
        Log.i(TAG, "onFling...");  
          
        if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE      
                 && Math.abs(velocityX) > FLING_MIN_VELOCITY) {      
            // Fling left   
 
             Toast.makeText(this, "Fling Left", Toast.LENGTH_SHORT).show();      
         } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE      
                 && Math.abs(velocityX) > FLING_MIN_VELOCITY) {      
 
             // Fling right   
 
             Toast.makeText(this, "Fling Right", Toast.LENGTH_SHORT).show();      
         }    
          
        return false;  
    }  
 
    // 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发   
    @Override 
    public void onLongPress(MotionEvent e) {  
        // TODO Auto-generated method stub  
        Log.i(TAG, "onLongPress...");  
          
    }  
 
    // 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发  
    @Override 
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,  
            float distanceY) {  
        // TODO Auto-generated method stub  
        Log.i(TAG, "onScroll...");  
          
        return false;  
    }  
 
    // 用户轻触触摸屏,尚未松开或拖动,由一个1个MotionEvent ACTION_DOWN触发  
    // 注意和onDown()的区别,强调的是没有松开或者拖动的状态  
    @Override 
    public void onShowPress(MotionEvent e) {  
        // TODO Auto-generated method stub  
        Log.i(TAG, "onShowPress...");  
          
    }  
 
    // 用户(轻触触摸屏后)松开,由一个1个MotionEvent ACTION_UP触发  
    @Override 
    public boolean onSingleTapUp(MotionEvent e) {  
        // TODO Auto-generated method stub  
        Log.i(TAG, "onSingleTapUp...");  
          
        return false;  
    }  
 
    @Override 
    public boolean onTouch(View v, MotionEvent event) {  
        // TODO Auto-generated method stub  
        Log.i(TAG, "onTouch...");  
          
        // Set button visible  
        mButton01.setVisibility(View.VISIBLE);  
        mButton02.setVisibility(View.VISIBLE);  
          
        return  mGestureDetector.onTouchEvent(event);      
    }  
 
//  @Override  
//  public boolean onTouchEvent(MotionEvent event) {  
//      // TODO Auto-generated method stub  
//      super.onTouchEvent(event);  
//        
//      Log.i(TAG, "onTouchEvent");  
//      // Set button visible  
//      mButton01.setVisibility(View.VISIBLE);  
//      mButton02.setVisibility(View.VISIBLE);  
//        
//      return true;  
//  }  
      
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) {  
        // TODO Auto-generated method stub  
        super.onKeyDown(keyCode, event);  
          
        Log.i(TAG, "onKeyDown...");  
        // Set button visible  
        mButton01.setVisibility(View.VISIBLE);  
        mButton02.setVisibility(View.VISIBLE);  
          
        return true;  
    }  
 
    /* 图片缩小的method */ 
    private void small()    {  
        int bmpWidth=bmp.getWidth();   
        int bmpHeight=bmp.getHeight();  
          
        Log.i(TAG, "bmpWidth = " + bmpWidth + ", bmpHeight = " + bmpHeight);  
          
        /* 设置图片缩小的比例 */ 
        double scale=0.8;  
        /* 计算出这次要缩小的比例 */   
        scaleWidth=(float) (scaleWidth*scale);   
        scaleHeight=(float) (scaleHeight*scale);   
        /* 产生reSize后的Bitmap对象 */ 
        Matrix matrix = new Matrix();  
        matrix.postScale(scaleWidth, scaleHeight);  
        Bitmap resizeBmp = Bitmap.createBitmap(bmp,0,0,bmpWidth,   
                bmpHeight,matrix,true);   
          
        if(id==0)      {  
            /* 如果是第一次按,就删除原来默认的ImageView */ 
            layoutImage.removeView(mImageView);  
        } else {  
            /* 如果不是第一次按,就删除上次放大缩小所产生的ImageView */ 
            layoutImage.removeView((ImageView)findViewById(id));  
        }   
          
        /* 产生新的ImageView,放入reSize的Bitmap对象,再放入Layout中 */ 
        id++;  
        ImageView imageView = new ImageView(this);  
        imageView.setId(id);  
        imageView.setImageBitmap(resizeBmp);  
        layoutImage.addView(imageView);  
        Log.i(TAG, "imageView.getWidth() = " + imageView.getWidth()  
                + ", imageView.getHeight() = " + imageView.getHeight());  
        setContentView(layout1);  
        /* 因为图片放到最大时放大按钮会disable,所以在缩小时把它重设为enable */   
        mButton02.setEnabled(true);  
        mButton02.setTextColor(Color.MAGENTA);  
    }  
      
    /* 图片放大的method */ 
    private void big() {  
        int bmpWidth=bmp.getWidth();  
        int bmpHeight=bmp.getHeight();  
          
        Log.i(TAG, "bmpWidth = " + bmpWidth + ", bmpHeight = " + bmpHeight);  
          
        /* 设置图片放大的比例 */ 
        double scale=1.25;  
        /* 计算这次要放大的比例 */ 
        scaleWidth=(float)(scaleWidth*scale);  
        scaleHeight=(float)(scaleHeight*scale);  
        /* 产生reSize后的Bitmap对象 */ 
        Matrix matrix = new Matrix();  
        matrix.postScale(scaleWidth, scaleHeight);  
        Bitmap resizeBmp = Bitmap.createBitmap(bmp,0,0,bmpWidth,   
                bmpHeight,matrix,true);  
          
        if(id==0) {  
            /* 如果是第一次按,就删除原来设置的ImageView */ 
            layoutImage.removeView(mImageView);  
        } else {  
            /* 如果不是第一次按,就删除上次放大缩小所产生的ImageView */   
            layoutImage.removeView((ImageView)findViewById(id));  
        }  
          
        /* 产生新的ImageView,放入reSize的Bitmap对象,再放入Layout中 */ 
        id++;  
        ImageView imageView = new ImageView(this);  
        imageView.setId(id);  
        imageView.setImageBitmap(resizeBmp);  
        layoutImage.addView(imageView);  
        setContentView(layout1);  
        /* 如果再放大会超过屏幕大小,就把Button disable */ 
        if( scaleWidth * scale * bmpWidth > bmpWidth * 3 ||  
            scaleHeight * scale * bmpHeight > bmpWidth * 3 ||  
            scaleWidth * scale * bmpWidth > displayWidth * 5 ||  
            scaleHeight * scale * bmpHeight > displayHeight * 5) {  
                mButton02.setEnabled(false);  
                mButton02.setTextColor(Color.GRAY);  
            } else {  
                mButton02.setEnabled(true);  
                mButton02.setTextColor(Color.MAGENTA);  
            }  
        }   
      

package com.min.Test_Gallery;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Matrix;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.GestureDetector.OnGestureListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;

public class DisplayImage extends Activity implements OnTouchListener, OnGestureListener  {
 private static final String TAG = "DisplayImage";
 private static final int FLING_MIN_DISTANCE = 100;
 private static final int FLING_MIN_VELOCITY = 200;
 
 
 /* 相关变量声明 */
 private ImageView mImageView;
 private Button mButton01;
 private Button mButton02;
 private FrameLayout layout1;
 private LinearLayout layoutImage;
 private Bitmap bmp;
 private int id=0;
 private int displayWidth;
 private int displayHeight;
 private float scaleWidth=1;
 private float scaleHeight=1;
 private GestureDetector mGestureDetector;
 
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState)    {
  super.onCreate(savedInstanceState);
  /* 加载display.xml Layout */
  setContentView(R.layout.display);
  
  /* 取得屏幕分辨率大小 */
  DisplayMetrics dm=new DisplayMetrics();
  getWindowManager().getDefaultDisplay().getMetrics(dm);
  displayWidth=dm.widthPixels;
  displayHeight=dm.heightPixels;
  
  /* 初始化相关变量 */
  Bundle bundle = this.getIntent().getExtras();
  Integer imageId = bundle.getInt("imageId");
  Log.i(TAG, "onCreate, imageId = " + imageId);
                   
  bmp=BitmapFactory.decodeResource(getResources(), imageId);
  mImageView = (ImageView)findViewById(R.id.myImageView);
  mImageView.setImageBitmap(bmp);
  mImageView.setOnTouchListener(this);
  mImageView.setLongClickable(true);
  
  layout1 = (FrameLayout)findViewById(R.id.layout1);
  layoutImage = (LinearLayout)findViewById(R.id.layoutImage);
  mButton01 = (Button)findViewById(R.id.myButton1);
  mButton02 = (Button)findViewById(R.id.myButton2);
  
  /* 缩小按钮onClickListener */
  mButton01.setOnClickListener(new Button.OnClickListener() {
   @Override
   public void onClick(View v) {
    small();
   }
  });
  
  /* 放大按钮onClickListener */
  mButton02.setOnClickListener(new Button.OnClickListener() {
   @Override      
   public void onClick(View v) {
    big();
   }
  });
 } 
 
 // 用户轻触触摸屏,由1个MotionEvent ACTION_DOWN触发
 @Override
 public boolean onDown(MotionEvent e) {
  // TODO Auto-generated method stub
//  Toast.makeText(this, "onDown", Toast.LENGTH_SHORT).show();   
  Log.i(TAG, "onDown...");
  
  return false;
 }

 /* 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN,
  * 多个ACTION_MOVE, 1个ACTION_UP触发
  * 参数解释:
  * e1:第1个ACTION_DOWN MotionEvent
  * e2:最后一个ACTION_MOVE MotionEvent
  * velocityX:X轴上的移动速度,像素/秒
  * velocityY:Y轴上的移动速度,像素/秒
  * 触发条件 :
  * X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒
  * @see android.view.GestureDetector$OnGestureListener#onFling(android.view.MotionEvent, android.view.MotionEvent, float, float)
  */
 @Override
 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
   float velocityY) {
  // TODO Auto-generated method stub
  Log.i(TAG, "onFling...");
  
  if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE   
              && Math.abs(velocityX) > FLING_MIN_VELOCITY) {   
   // Fling left

          Toast.makeText(this, "Fling Left", Toast.LENGTH_SHORT).show();   
      } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE   
              && Math.abs(velocityX) > FLING_MIN_VELOCITY) {   

       // Fling right

          Toast.makeText(this, "Fling Right", Toast.LENGTH_SHORT).show();   
      } 
  
  return false;
 }

 // 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发
 @Override
 public void onLongPress(MotionEvent e) {
  // TODO Auto-generated method stub
  Log.i(TAG, "onLongPress...");
  
 }

 // 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发
 @Override
 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
   float distanceY) {
  // TODO Auto-generated method stub
  Log.i(TAG, "onScroll...");
  
  return false;
 }

 // 用户轻触触摸屏,尚未松开或拖动,由一个1个MotionEvent ACTION_DOWN触发
 // 注意和onDown()的区别,强调的是没有松开或者拖动的状态
 @Override
 public void onShowPress(MotionEvent e) {
  // TODO Auto-generated method stub
  Log.i(TAG, "onShowPress...");
  
 }

 // 用户(轻触触摸屏后)松开,由一个1个MotionEvent ACTION_UP触发
 @Override
 public boolean onSingleTapUp(MotionEvent e) {
  // TODO Auto-generated method stub
  Log.i(TAG, "onSingleTapUp...");
  
  return false;
 }

 @Override
 public boolean onTouch(View v, MotionEvent event) {
  // TODO Auto-generated method stub
  Log.i(TAG, "onTouch...");
  
  // Set button visible
  mButton01.setVisibility(View.VISIBLE);
  mButton02.setVisibility(View.VISIBLE);
  
  return  mGestureDetector.onTouchEvent(event);   
 }

// @Override
// public boolean onTouchEvent(MotionEvent event) {
//  // TODO Auto-generated method stub
//  super.onTouchEvent(event);
//  
//  Log.i(TAG, "onTouchEvent");
//  // Set button visible
//  mButton01.setVisibility(View.VISIBLE);
//  mButton02.setVisibility(View.VISIBLE);
//  
//  return true;
// }
 
 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  // TODO Auto-generated method stub
  super.onKeyDown(keyCode, event);
  
  Log.i(TAG, "onKeyDown...");
  // Set button visible
  mButton01.setVisibility(View.VISIBLE);
  mButton02.setVisibility(View.VISIBLE);
  
  return true;
 }

 /* 图片缩小的method */
 private void small()    {
  int bmpWidth=bmp.getWidth();
  int bmpHeight=bmp.getHeight();
  
  Log.i(TAG, "bmpWidth = " + bmpWidth + ", bmpHeight = " + bmpHeight);
  
  /* 设置图片缩小的比例 */
  double scale=0.8;
  /* 计算出这次要缩小的比例 */
  scaleWidth=(float) (scaleWidth*scale);
  scaleHeight=(float) (scaleHeight*scale);
  /* 产生reSize后的Bitmap对象 */
  Matrix matrix = new Matrix();
  matrix.postScale(scaleWidth, scaleHeight);
  Bitmap resizeBmp = Bitmap.createBitmap(bmp,0,0,bmpWidth,
    bmpHeight,matrix,true);
  
  if(id==0)      {
   /* 如果是第一次按,就删除原来默认的ImageView */
   layoutImage.removeView(mImageView);
  } else {
   /* 如果不是第一次按,就删除上次放大缩小所产生的ImageView */
   layoutImage.removeView((ImageView)findViewById(id));
  }
  
  /* 产生新的ImageView,放入reSize的Bitmap对象,再放入Layout中 */
  id++;
  ImageView imageView = new ImageView(this);
  imageView.setId(id);
  imageView.setImageBitmap(resizeBmp);
  layoutImage.addView(imageView);
  Log.i(TAG, "imageView.getWidth() = " + imageView.getWidth()
    + ", imageView.getHeight() = " + imageView.getHeight());
  setContentView(layout1);
  /* 因为图片放到最大时放大按钮会disable,所以在缩小时把它重设为enable */
  mButton02.setEnabled(true);
  mButton02.setTextColor(Color.MAGENTA);
 }
 
 /* 图片放大的method */
 private void big() {
  int bmpWidth=bmp.getWidth();
  int bmpHeight=bmp.getHeight();
  
  Log.i(TAG, "bmpWidth = " + bmpWidth + ", bmpHeight = " + bmpHeight);
  
  /* 设置图片放大的比例 */
  double scale=1.25;
  /* 计算这次要放大的比例 */
  scaleWidth=(float)(scaleWidth*scale);
  scaleHeight=(float)(scaleHeight*scale);
  /* 产生reSize后的Bitmap对象 */
  Matrix matrix = new Matrix();
  matrix.postScale(scaleWidth, scaleHeight);
  Bitmap resizeBmp = Bitmap.createBitmap(bmp,0,0,bmpWidth,
    bmpHeight,matrix,true);
  
  if(id==0) {
   /* 如果是第一次按,就删除原来设置的ImageView */
   layoutImage.removeView(mImageView);
  } else {
   /* 如果不是第一次按,就删除上次放大缩小所产生的ImageView */
   layoutImage.removeView((ImageView)findViewById(id));
  }
  
  /* 产生新的ImageView,放入reSize的Bitmap对象,再放入Layout中 */
  id++;
  ImageView imageView = new ImageView(this);
  imageView.setId(id);
  imageView.setImageBitmap(resizeBmp);
  layoutImage.addView(imageView);
  setContentView(layout1);
  /* 如果再放大会超过屏幕大小,就把Button disable */
  if( scaleWidth * scale * bmpWidth > bmpWidth * 3 ||
   scaleHeight * scale * bmpHeight > bmpWidth * 3 ||
   scaleWidth * scale * bmpWidth > displayWidth * 5 ||
   scaleHeight * scale * bmpHeight > displayHeight * 5) {
    mButton02.setEnabled(false);
    mButton02.setTextColor(Color.GRAY);
   } else {
    mButton02.setEnabled(true);
    mButton02.setTextColor(Color.MAGENTA);
   }
  }
 
}

display.xml文件

view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/layout1" 
    > 
 
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"     
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"   
        android:layout_weight="19" 
        android:scrollbars="vertical" 
        android:fadingEdge="vertical"> 
    <HorizontalScrollView   
        android:layout_height="fill_parent" 
        android:layout_width="wrap_content"> 
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android
            android:orientation="horizontal" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:gravity="center" 
            android:id="@+id/layoutImage" 
            > 
            <ImageView 
                android:id="@+id/myImageView" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content" 
                android:layout_weight="19" 
                android:paddingTop="5dip" 
                android:paddingBottom="5dip" 
                /> 
        </LinearLayout> 
    </HorizontalScrollView > 
    </ScrollView>   
 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        > 
        <Button 
            android:id="@+id/myButton1" 
            android:layout_width="45dip" 
            android:layout_height="30dip" 
            android:layout_alignParentLeft="true" 
            android:gravity="left" 
            style="@style/my_style_button" 
            android:visibility="gone" 
            android:text="缩小" 
            /> 
        <Button 
            android:id="@+id/myButton2" 
            android:layout_width="45dip" 
            android:layout_height="30dip" 
            android:layout_alignParentRight="true" 
            android:gravity="right" 
            style="@style/my_style_button" 
            android:visibility="gone" 
            android:text="放大" 
            /> 
    </RelativeLayout> 
</FrameLayout> 

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

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

相关文章

matlab散点图折线图_什么是散点图以及何时使用

matlab散点图折线图When you were learning algebra back in high school, you might not have realized that one day you would need to create a scatter plot to demonstrate real-world results.当您在高中学习代数时&#xff0c;您可能没有意识到有一天需要创建一个散点图…

java判断题_【Java判断题】请大神们进来看下、这些判断题你都知道多少~

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼、判断改错题(每题2分&#xff0c;共20分)(正确的打√&#xff0c;错误的打并说明原因)1、 Java系统包提供了很多预定义类,我们可以直接引用它们而不必从头开始编写程序。 ( )2、 程序可以用字符‘*’替代一个TextField中的每个字…

PoPo数据可视化第8期

PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域&#xff0c;发现可视化领域有意思的内容。不想错过可视化领域的精彩内容, 就快快关注我们吧 :) 微信订阅号&#xff1a;popodv_com谷歌决定关闭云可视化服务 Fusion Tables谷歌宣布即将关闭其 Fusion Tables 云服务&#x…

AC自动机题单

AC自动机题目 真的超级感谢xzy 真的帮到我很多 题单 [X] [luogu3808]【模板】AC自动机&#xff08;简单版&#xff09; https://www.luogu.org/problemnew/show/P3808[X] [luogu3796]【模板】AC自动机&#xff08;加强版&#xff09;https://www.luogu.org/problemnew/show/P37…

java list用法_Java List 用法详解及实例分析

Java List 用法详解及实例分析Java中可变数组的原理就是不断的创建新的数组&#xff0c;将原数组加到新的数组中,下文对Java List用法做了详解。List:元素是有序的(怎么存的就怎么取出来&#xff0c;顺序不会乱)&#xff0c;元素可以重复(角标1上有个3&#xff0c;角标2上也可以…

python字符串和List:索引值以 0 为开始值,-1 为从末尾的开始位置;值和位置的区别哦...

String&#xff08;字符串&#xff09;Python中的字符串用单引号 或双引号 " 括起来&#xff0c;同时使用反斜杠 \ 转义特殊字符。 字符串的截取的语法格式如下&#xff1a; 变量[头下标:尾下标]索引值以 0 为开始值&#xff0c;-1 为从末尾的开始位置。[一个是值&#x…

逻辑回归 python_深入研究Python的逻辑回归

逻辑回归 pythonClassification techniques are an essential part of machine learning and data science applications. Approximately 70% of problems in machine learning are classification problems. There are lots of classification problems that are available, b…

spring定时任务(@Scheduled注解)

&#xff08;一&#xff09;在xml里加入task的命名空间 xmlns:task"http://www.springframework.org/schema/task" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd&#xff08;二&#xff09;启用注…

net user 用户名 密码 /add 建立用户

net user 用户名 密码 /add 建立用户 other: net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接 net use h: \\ip\c$ "密码" /user:"用户名" 直接登陆后映…

JavaScript是如何工作的:与WebAssembly比较及其使用场景

*摘要&#xff1a;** WebAssembly未来可期。 原文&#xff1a;JavaScript是如何工作的&#xff1a;与WebAssembly比较及其使用场景作者&#xff1a;前端小智Fundebug经授权转载&#xff0c;版权归原作者所有。 这是专门探索 JavaScript及其所构建的组件的系列文章的第6篇。 如果…

友元 java_C++ 友元关系详解

在C中&#xff0c;在某些情况下&#xff0c;允许特定的非成员函数访问一个类的私有成员&#xff0c;同时仍然阻止一般的访问&#xff0c;这是很方便做到的。例如&#xff0c;被重载的操作符&#xff0c;如输入或输出操作符&#xff0c;经常需要访问类的私有数据成员。这些操作符…

Matplotlib中的“ plt”和“ ax”到底是什么?

Indeed, as the most popular and fundamental data visualisation library, Matplotlib is kind of confusing in some perspectives. It is usually to see that someone asking about的确&#xff0c;作为最受欢迎的基础数据可视化库&#xff0c;Matplotlib在某些方面令人困…

【数据库的备份与还原】 .

差异备份,日志备份还原 IF DB_ID(db) IS NOT NULL DROP DATABASE db GO CREATE DATABASE db GO CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1)); GO BACKUP DATABASE db TO DISKd:/1.bak WITH FORMAT GO INSERT INTO db.dbo.T DEFAULT VALUES GO BACKUP DATAB…

方法 数组

方法的特点: 定义方法可以将功能代码进行封装 封装:两方面含义: 1.将有特定逻辑的多条代码组合成一个整体!! 2.方便维护&#xff0c;提高代码的复用性(联想变量的作用域问题) 方法只有被调用才会被执行!!(方法调用的流程) 方法的重载: 两同一不同: 同类,同方法名 形参列表不同 …

java 控制jsp_JSP学习之Java Web中的安全控制实例详解

普通用户界面修改登录的Servlet&#xff0c;修改后的代码如下&#xff1a;LoginProcess.java代码&#xff1a;package servlet;import javabean.User;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.Ser…

PHP 基础 自动类型转换之比较运算符

<?php var_dump( 123fg456>122); var_dump(some string 0); var_dump(123.0 123d456); var_dump(0 "a"); var_dump("1" "01"); var_dump("1" "1e0"); 当数字与字符串进行比较运算时&#xff0c;字符串会自动转…

java的多线程访问共享变量_java多线程通信之共享变量

(1)当访问共同的代码的时候&#xff1a;可以使用同一个Runnable对象&#xff0c;这个Runnable对象中有这个共享数据&#xff0c;比如卖票系统就可以这么做。或者这个共享数据封装在一个对象当中&#xff0c;然后对这个对象加锁&#xff0c;也可以实现数据安全访问。public clas…

2018年阿里云NoSQL数据库大事盘点

2019独角兽企业重金招聘Python工程师标准>>> NoSQL一词最早出现在1998年。2009年Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论&#xff0c;来自Rackspace的Eric Evans再次提出了NoSQL概念&#xff0c;这时的NoSQL主要是指非关系型、分布式、不提供…

cayenne:用于随机模拟的Python包

TL;DR; We just released v1.0 of cayenne, our Python package for stochastic simulations! Read on to find out if you should model your system as a stochastic process, and why you should try out cayenne.TL; DR; 我们刚刚发布了 cayenne v1.0 &#xff0c;这是我们…

java 如何将word 转换为ftl_使用 freemarker导出word文档

近日需要将人员的基本信息导出&#xff0c;存储为word文档&#xff0c;查阅了很多资料&#xff0c;最后选择了使用freemarker&#xff0c;网上一共有四种方式&#xff0c;效果都一样&#xff0c;选择它呢是因为使用简单&#xff0c;再次记录一下,一个简单的demo&#xff0c;仅供…