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

哪里有网站推广软件免费推广seo策略方法

哪里有网站推广软件,免费推广seo策略方法,睢宁建设局网站,网站建设哪家好首选万维科技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://www.zqtcl.cn/news/720437/

相关文章:

  • 阿里云备案网站 网站名称怎么写京icp备案查询
  • 网站开发岗位思维导图alexa排名
  • 自适应网站建设济南济南网站建设公司
  • 巴州网站建设库尔勒网站建设钟爱网络杭州微信网站制作
  • 52做网站南京市住房城乡建设门户网站
  • 网站开发精品课程贵阳市白云区官方网站
  • seo整站优化服务会计培训班一般收费多少
  • 批量网站访问检测怎么做好手机网站开发
  • 深圳网站建设公司哪家比较好shortcodes wordpress
  • 网站内链越多越好嘛可以做3d电影网站
  • 企业网站需求文档微商引流客源最快的方法
  • 交互式网站备案业务网站在线生成
  • 自建网站百度个人网站如何在百度上做推广
  • 如何安装wordpress模板竞价网站做seo
  • 做论坛网站如何赚钱电子商务营销推广
  • 想要自己做一个网站怎么做济宁百度网站建设
  • 海会网络建设网站wordpress刷不出图片
  • 一个人做商城网站网站推广的几个阶段
  • 做国学类网站合法吗html5教程pdf下载
  • 云南省文化馆网站建设二级域名分发平台
  • 网站版面布局结构图网站收录批量查询
  • 网站开发手机模拟器常州到丹阳
  • 淮南医院网站建设班级网站开发报告
  • 东莞营销网站建设哪家好微信api接口
  • 凡科建站怎么导出网页wordpress视频采集插件
  • 个人介绍网站源码云主机上传网站
  • app推广平台网站系统登录入口
  • 做公司宣传册的网站成crm网
  • 新乡公司做网站军事新闻内容摘抄
  • 讯美智能网站建设泰安网络科技有限公司电话