当前位置: 首页 > news >正文

垦利住房和城乡建设局网站sae storage wordpress

垦利住房和城乡建设局网站,sae storage wordpress,wordpress推特登陆,免费的软件下载安装Android 截图功能实现 简介效果图功能实现1. 截取当前可见范围屏幕2. 截取当前可见范围屏幕#xff08;不包含状态栏#xff09;3. 截取某个控件4. 截取ScrollView5. 长截图6. 截屏动画效果7. 显示截屏结果#xff0c;自动消失6. 完整代码 简介 在Android应用中开发截图功能… Android 截图功能实现 简介效果图功能实现1. 截取当前可见范围屏幕2. 截取当前可见范围屏幕不包含状态栏3. 截取某个控件4. 截取ScrollView5. 长截图6. 截屏动画效果7. 显示截屏结果自动消失6. 完整代码 简介 在Android应用中开发截图功能涉及到以下几个步骤获取屏幕内容、处理截图、保存截图等。 效果图 功能实现 1. 截取当前可见范围屏幕 /*** 截取当前可见范围屏幕*/ private void screenCapture() { // View decorView getWindow().getDecorView(); // decorView.setDrawingCacheEnabled(true);// 清空缓存可用于实时截图 // decorView.buildDrawingCache(); // Bitmap screenBitmap Bitmap.createBitmap(decorView.getDrawingCache()); // decorView.setDrawingCacheEnabled(false); // 清空缓存可用于实时截图View decorView getWindow().getDecorView();Bitmap screenBitmap Bitmap.createBitmap(decorView.getWidth(), decorView.getHeight(), Bitmap.Config.ARGB_8888);Canvas canvas new Canvas(screenBitmap);decorView.draw(canvas);updateImageCapture(screenBitmap); }2. 截取当前可见范围屏幕不包含状态栏 /*** 截取当前可见范围屏幕不包含状态栏*/ private void screenCaptureNoStatusBar() {View view getWindow().getDecorView();view.setDrawingCacheEnabled(true);view.buildDrawingCache();// 获取状态栏高度Rect rect new Rect();view.getWindowVisibleDisplayFrame(rect);int statusBarH rect.top;// 获取屏幕宽高int w view.getWidth();int h view.getHeight();// 去掉状态栏Bitmap bitmap Bitmap.createBitmap(view.getDrawingCache(), 0, statusBarH, w, h - statusBarH);// 销毁缓存信息view.destroyDrawingCache();updateImageCapture(bitmap); }3. 截取某个控件 /*** 截取某个控件* param view*/ private void screenCapture(View view) {Bitmap screenBitmap Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);Canvas canvas new Canvas(screenBitmap);view.draw(canvas);updateImageCapture(screenBitmap); }4. 截取ScrollView /*** 截取ScrollView* param view*/ private void screenCapture(ScrollView view) {int h 0;for (int i 0; i view.getChildCount(); i) {h view.getChildAt(i).getHeight();view.getChildAt(i).setBackgroundColor(Color.parseColor(#FFFFFF));}Bitmap screenBitmap Bitmap.createBitmap(view.getMeasuredWidth(), h, Bitmap.Config.ARGB_8888);Canvas canvas new Canvas(screenBitmap);view.draw(canvas);updateImageCapture(screenBitmap); }5. 长截图 /*** 滚屏截长图*/ private Runnable scrollRunnable new Runnable() {SuppressLint(NewApi)Overridepublic void run() {boolean isToBottom isScrollToEnd();if (isToBottom) {Log.i(TAG, run: to bottom);Thread.currentThread().interrupt();mHandler.removeCallbacks(scrollRunnable);screenCapture(scrollView);} else {// 未滑动到底部int off linearLayout.getMeasuredHeight() - scrollView.getHeight(); // 判断高度if (off 0) {scrollView.scrollBy(0, 6);if (scrollView.getScaleY() off) {Thread.currentThread().interrupt();mHandler.removeCallbacks(scrollRunnable);} else {mHandler.postDelayed(this, 10);}}}} };6. 截屏动画效果 截屏时有一个缩放的动画效果缩放到右上角。 动画效果文件/res/anim/scale_animation.xml文件。 ?xml version1.0 encodingutf-8? set xmlns:androidhttp://schemas.android.com/apk/res/androidscaleandroid:duration500android:fromXScale1.0android:fromYScale1.0android:pivotX90%android:pivotY15%android:toXScale0.35android:toYScale0.35/alphaandroid:duration200android:fromAlpha0.5android:toAlpha1.0//set代码中使用动画效果 mCardView.startAnimation(animation);7. 显示截屏结果自动消失 截屏完成会将截取的图片显示在界面中显示截屏3s后会自动消失。 /*** 显示截图3s后自动消失*/ private Runnable captureViewRunnable new Runnable() {SuppressLint(NewApi)Overridepublic void run() {mCardView.clearAnimation();mCardView.setVisibility(View.INVISIBLE);} };6. 完整代码 布局文件activity_screenshot.xml。 ?xml version1.0 encodingutf-8? androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.ScreenshotActivityButtonandroid:idid/btn_screenshotandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginStart60dpandroid:text截图app:layout_constraintTop_toTopOfparentapp:layout_constraintStart_toStartOfparent/Buttonandroid:idid/bnt_longandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text长截图android:layout_marginStart20dpapp:layout_constraintStart_toEndOfid/btn_screenshotapp:layout_constraintTop_toTopOfid/btn_screenshotapp:layout_constraintBottom_toBottomOfid/btn_screenshot/ScrollViewandroid:idid/scroll_viewandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentapp:layout_constraintTop_toBottomOfid/btn_screenshotLinearLayoutandroid:idid/linear_layoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationvertical//ScrollViewandroidx.cardview.widget.CardViewandroid:idid/cardViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:backgroundandroid:color/transparentapp:contentPadding3dpapp:cardCornerRadius15dpapp:cardElevation20dpapp:cardPreventCornerOverlaptrueapp:cardUseCompatPaddingtrueandroid:visibilityinvisibleapp:layout_constraintTop_toTopOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentImageViewandroid:idid/iv_captureandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparentapp:layout_constraintBottom_toBottomOfparent//androidx.cardview.widget.CardView/androidx.constraintlayout.widget.ConstraintLayoutActivity文件ScreenshotActivity.java。 public class ScreenshotActivity extends AppCompatActivity {private static final String TAG ScreenshotActivity;private ScrollView scrollView;private LinearLayout linearLayout;private ImageView ivScreenshots;private CardView mCardView;private Handler mHandler new Handler();// 截图动画private Animation animation;// 截图显示的时间超时后消失private static final int CAPTURE_SHOW_TIMEOUT 3000;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_screenshot);scrollView findViewById(R.id.scroll_view);linearLayout findViewById(R.id.linear_layout);ivScreenshots findViewById(R.id.iv_capture);mCardView findViewById(R.id.cardView);Button btnScreenshots findViewById(R.id.btn_screenshot);Button btnLong findViewById(R.id.bnt_long);animation AnimationUtils.loadAnimation(this, R.anim.scale_animation);animation.setFillAfter(true);// 动态添加textviewfor (int i 0; i 50; i) {TextView textView new TextView(this);textView.setText(item- (i 1));textView.setGravity(Gravity.CENTER);textView.setTextSize(16);linearLayout.addView(textView);}btnScreenshots.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) { // screenCapture(); // screenCapture(scrollView);screenCapture(scrollView); // screenCaptureNoStatusBar();}});btnLong.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {mHandler.post(scrollRunnable);}});animation.setAnimationListener(new Animation.AnimationListener() {Overridepublic void onAnimationStart(Animation animation) {}Overridepublic void onAnimationEnd(Animation animation) {mHandler.postDelayed(captureViewRunnable, CAPTURE_SHOW_TIMEOUT);}Overridepublic void onAnimationRepeat(Animation animation) {}});}Overrideprotected void onPause() {super.onPause();mHandler.removeCallbacks(scrollRunnable);mHandler.removeCallbacks(captureViewRunnable);}/*** 滚屏的线程*/private Runnable scrollRunnable new Runnable() {SuppressLint(NewApi)Overridepublic void run() {boolean isToBottom isScrollToEnd();if (isToBottom) {Log.i(TAG, run: to bottom);Thread.currentThread().interrupt();mHandler.removeCallbacks(scrollRunnable);screenCapture(scrollView);} else {// 未滑动到底部int off linearLayout.getMeasuredHeight() - scrollView.getHeight(); // 判断高度if (off 0) {scrollView.scrollBy(0, 6);if (scrollView.getScaleY() off) {Thread.currentThread().interrupt();mHandler.removeCallbacks(scrollRunnable);} else {mHandler.postDelayed(this, 10);}}}}};/*** 显示截图3s后自动消失*/private Runnable captureViewRunnable new Runnable() {SuppressLint(NewApi)Overridepublic void run() {mCardView.clearAnimation();mCardView.setVisibility(View.INVISIBLE);}};/*** 截取当前可见范围屏幕*/private void screenCapture() { // View decorView getWindow().getDecorView(); // decorView.setDrawingCacheEnabled(true);// 清空缓存可用于实时截图 // decorView.buildDrawingCache(); // Bitmap screenBitmap Bitmap.createBitmap(decorView.getDrawingCache()); // decorView.setDrawingCacheEnabled(false); // 清空缓存可用于实时截图View decorView getWindow().getDecorView();Bitmap screenBitmap Bitmap.createBitmap(decorView.getWidth(), decorView.getHeight(), Bitmap.Config.ARGB_8888);Canvas canvas new Canvas(screenBitmap);decorView.draw(canvas);updateImageCapture(screenBitmap);}/*** 截取某个控件* param view*/private void screenCapture(View view) {Bitmap screenBitmap Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);Canvas canvas new Canvas(screenBitmap);view.draw(canvas);updateImageCapture(screenBitmap);}/*** 截取ScrollView* param view*/private void screenCapture(ScrollView view) {int h 0;for (int i 0; i view.getChildCount(); i) {h view.getChildAt(i).getHeight();view.getChildAt(i).setBackgroundColor(Color.parseColor(#FFFFFF));}Bitmap screenBitmap Bitmap.createBitmap(view.getMeasuredWidth(), h, Bitmap.Config.ARGB_8888);Canvas canvas new Canvas(screenBitmap);view.draw(canvas);updateImageCapture(screenBitmap);}/*** 截取当前可见范围屏幕不包含状态栏*/private void screenCaptureNoStatusBar() {View view getWindow().getDecorView();view.setDrawingCacheEnabled(true);view.buildDrawingCache();// 获取状态栏高度Rect rect new Rect();view.getWindowVisibleDisplayFrame(rect);int statusBarH rect.top;// 获取屏幕宽高int w view.getWidth();int h view.getHeight();// 去掉状态栏Bitmap bitmap Bitmap.createBitmap(view.getDrawingCache(), 0, statusBarH, w, h - statusBarH);// 销毁缓存信息view.destroyDrawingCache();updateImageCapture(bitmap);}private void updateImageCapture(final Bitmap screenBitmap) {runOnUiThread(new Runnable() {Overridepublic void run() {mCardView.setVisibility(View.VISIBLE);ivScreenshots.setImageBitmap(screenBitmap);}});mCardView.startAnimation(animation);}/*** scrollview是否已经滑到底部* return*/private boolean isScrollToEnd() {// 获取 ScrollView 的可视高度int visibleHeight scrollView.getHeight() - scrollView.getPaddingTop() - scrollView.getPaddingBottom();// 获取 ScrollView 的子ViewView lastChild scrollView.getChildAt(scrollView.getChildCount() - 1);// 获取 ScrollView 可以滑动的范围int scrollRange scrollView.getChildAt(0).getHeight() - scrollView.getHeight();// 获取 ScrollView 的滚动位置int scrollY scrollView.getScrollY();// 计算ScrollView底部位置int scrollViewBottom scrollY visibleHeight;// 获取ScrollView的子View的底部位置int lastChildBottom lastChild.getBottom();// 判断 ScrollView 是否滚动到底部if (scrollY scrollRange) {// 已滑动到底部return true;} else if (scrollViewBottom lastChildBottom) {// scrollTo 和 scrollTo 不是同时回调所以添加两个逻辑都可可根据需要决定是否需要使用两个逻辑组合// 已滑动到底部return true;} else {return false;}}}截图动画文件scale_animation.xml。 ?xml version1.0 encodingutf-8? set xmlns:androidhttp://schemas.android.com/apk/res/androidscaleandroid:duration500android:fromXScale1.0android:fromYScale1.0android:pivotX90%android:pivotY15%android:toXScale0.35android:toYScale0.35/alphaandroid:duration200android:fromAlpha0.5android:toAlpha1.0//set
http://wiki.neutronadmin.com/news/131115/

相关文章:

  • 网站开发时间seo优化包括哪些内容
  • 漳州最专业的网站建设公司建国外网站买完域名后怎么做
  • 清水河网站建设wordpress主题站
  • 网站建设大小python wordpress采集器
  • 网站视觉优化的意义网站建设公司包括哪些
  • 云南百度智能建站免费制作h5的小程序
  • 网站建设流程域名申请网站建设万户网络
  • 网站开发 打标签中国空间站最新动态
  • 昆山品牌网站建设拼多多关键词排名查询工具
  • 建南沙做网站公司有什么网站建设类岗位
  • 阿里云网站更换域名网站设计工具更好的做网站
  • 做爰午夜福利全过程视频网站厦门网站建设哪家好
  • 哪个公司的网站做得好织梦调用网站类型
  • 沈阳工程建设信息网站教务处网站建设要求
  • 网站建设基地关闭WordPress自动文章摘要
  • 有没有教做帽子的网站wordpress文章链接带问号
  • 1核1g可以做几个网站服务好质量好的app开发
  • seo优化就业前景seo搜索引擎优化培训班
  • 北京高端网站开发防恶意点击软件
  • 柳州哪里有网站建设夏都西宁吧
  • 网站空间提供网站如何提升用户体验
  • 域名备案时网站名称外包公司有前途吗
  • 手机网站编程合肥网站设计制作
  • 庄河城乡建设管理局网站宁德做网站
  • 网站地图怎么做的安徽元鼎建设工程网站
  • 河北省建设机械协会网站织梦软件网站模板下载地址
  • 网站 需求分析营销型企业网站包括哪些类型
  • html5 房地产网站案例网站微信认证费用多少
  • 龙岗建设网站wordpress创建短代码
  • 芍药居网站建设公司金华企业网站建设