Android Studio获取SHA1值实例

 更新时间:2017年7月6日 23:19  点击:1684
本篇文章为大家介绍了Android Studio获取SHA1值实例详解的相关资料,有需要的朋友可以参考一下。

Android Studio获取SHA1值实例详解

前言

使用百度地图的小伙伴们都会知道获取百度地图的密钥需要SHA1和包名,在Eclipse中,我们可以很方便的得知SHA1值,如下图:

这里写图片描述

但是在Android Studio中,该怎么获取SHA1的值呢?不要着急,马上呈上~

Android Studio获取SHA1值

强大的Android Studio为我们提供了Terminal这个工具,我们可以通过他进行相应命令从而获取所需内容。

Java中提供了Keytool工具去让我们管理证书,那么接下来我们将通过他获取我们所需要的SHA1值。

使用命令如下:

 代码如下复制代码

keytool -list -v -keystore 证书地址

PS:如果需要获取debug版本的证书,按如下例子查找即可

keytool -list -v -keystore C:\Users\HLQ\ .android\debug.keystore

默认密码为:android

关于证书地址,给大家举个例子,例如LZ证书直接在桌面,那么我们就可以按下面这么写:

 代码如下复制代码

C:\Users\HLQ\Desktop\hlq_test.jks

具体实践如下:

这里写图片描述

2017年6月2日23:16:33更新如下内容:

突然想起赵小贱某天贱兮兮的告诉我,还有一种非常快捷可以查看debug的sha1值,感觉很方便,下面截图为大家奉上,稍后会跟随相关步骤~

这里写图片描述

1.运行你的demo,点击AS展开右侧Gradle功能区;

2.点击项目名,点击Tasks,点击android,用力双击signingReport,在下方Run区域查看自己想要的东西~

原文链接:http://blog.csdn.net/u012400885/article/details/68945498

 

本文介绍了Android Studio中引入Lambda表达式的方法,非常实用,有兴趣的同学快来看看吧

方法如下:

依次点击 【File】【Other Settings】【Default Project Structure】确保当前项目使用的JDK版本是1.8。

 

打开项目(Project)的build.gradle,在dependencies节点添加

classpath 'me.tatarka:gradle-retrolambda:3.2.0'

 

打开项目(Module)的build.gradle,在根节点添加

 代码如下复制代码
apply plugin: 'me.tatarka.retrolambda'

在android节点增加

 

 代码如下复制代码

compileOptions {

 sourceCompatibility JavaVersion.VERSION_1_8

 targetCompatibility JavaVersion.VERSION_1_8

}

 

最后对比下使用 Lambda表达式前后代码的变化

本文介绍了Android实现图片拖动效果的教程,非常实用,有兴趣的同学快来看看吧

要求:

1.通过手指移动来拖动图片 

2.控制图片不能超出屏幕显示区域

技术点:

1.MotionEvent处理

2.对View进行动态定位(layout)

activity_main.xml:

 

 代码如下 复制代码

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"

 xmlns:tools="http://schemas.android.com/tools"

 android:layout_width="match_parent"

 android:layout_height="match_parent">

 <ImageView

  android:id="@+id/iv_main"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:src="@drawable/test"/>

</RelativeLayout>

 

MainActivity:

 

 代码如下 复制代码

publicclassMainActivityextendsActivityimplementsOnTouchListener {

 privateImageView iv_main;

 privateRelativeLayout parentView;

 @Override

 protectedvoidonCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  iv_main = (ImageView) findViewById(R.id.iv_main);

  parentView = (RelativeLayout) iv_main.getParent();

  /*

  int right = parentView.getRight(); //0

  int bottom = parentView.getBottom(); //0

  Toast.makeText(this, right+"---"+bottom, 1).show();

  */

  //设置touch监听

  iv_main.setOnTouchListener(this);

 }

 privateintlastX;

 privateintlastY;

 privateintmaxRight;

 privateintmaxBottom;

 @Override

 publicbooleanonTouch(View v, MotionEvent event) {

  //得到事件的坐标

  inteventX = (int) event.getRawX();

  inteventY = (int) event.getRawY();

  switch(event.getAction()) {

  caseMotionEvent.ACTION_DOWN:

   //得到父视图的right/bottom

   if(maxRight==0) {//保证只赋一次值

    maxRight = parentView.getRight();

    maxBottom = parentView.getBottom();

   }

   //第一次记录lastX/lastY

   lastX =eventX;

   lastY = eventY;

   break;

  caseMotionEvent.ACTION_MOVE:

   //计算事件的偏移

   intdx = eventX-lastX;

   intdy = eventY-lastY;

   //根据事件的偏移来移动imageView

   intleft = iv_main.getLeft()+dx;

   inttop = iv_main.getTop()+dy;

   intright = iv_main.getRight()+dx;

   intbottom = iv_main.getBottom()+dy;

   //限制left >=0

   if(left<0) {

    right += -left;

    left =0;

   }

   //限制top

   if(top<0) {

    bottom += -top;

    top =0;

   }

   //限制right <=maxRight

   if(right>maxRight) {

    left -= right-maxRight;

    right = maxRight;

   }

   //限制bottom <=maxBottom

   if(bottom>maxBottom) {

    top -= bottom-maxBottom;

    bottom = maxBottom;

   }

   iv_main.layout(left, top, right, bottom);

   //再次记录lastX/lastY

   lastX = eventX;

   lastY = eventY;

   break;

  default:

   break;

  }

  returntrue;//所有的motionEvent都交给imageView处理

 }

}

 

本文介绍了Android AsyncTask的缺陷和问题总结,非常实用,有兴趣的同学快看看吧

Android  AsyncTask的缺陷和问题总结

在Android开发中,AsyncTask可以使得用户避免直接使用Thread类和Handler  来处理后台操作,适用于需要异步处理数据并将数据更新到界面上的情况。AsyncTask适用于后台操作只有几秒的短时操作。但是AsyncTask本身存在很多糟糕的问题,如果使用中不注意,将会影响程序的健壮性。

1、生命周期

        很多开发者会认为一个在Activity中创建的AsyncTask会随着Activity的销毁而销毁。然而事实并非如此。AsyncTask会一直执行,  直到doInBackground()方法执行完毕。然后,如果 cancel(boolean)被调用, 那么onCancelled(Result  result) 方法会被执行;否则,执行onPostExecute(Result result)  方法。如果我们的Activity销毁之前,没有取消  AsyncTask,这有可能让我们的AsyncTask崩溃(crash)。因为它想要处理的view已经不存在了。所以,我们总是必须确保在销毁活动之前取消任务。总之,我们使用AsyncTask需要确保AsyncTask正确地取消。

       另外,即使我们正确地调用了cancle() 也未必能真正地取消任务。因为如果在doInBackgroud里有一个不可中断的操作,比如BitmapFactory.decodeStream(),那么这个操作会继续下去。

2、内存泄漏

         如果AsyncTask被声明为Activity的非静态的内部类,那么AsyncTask会保留一个对创建了AsyncTask的Activity的引用。如果Activity已经被销毁,AsyncTask的后台线程还在执行,它将继续在内存里保留这个引用,导致Activity无法被回收,引起内存泄露。

3、结果丢失

       屏幕旋转或Activity在后台被系统杀掉等情况会导致Activity的重新创建,之前运行的AsyncTask会持有一个之前Activity的引用,这个引用已经无效,这时调用onPostExecute()再去更新界面将不再生效。

4、并行还是串行

      在Android  1.6之前的版本,AsyncTask是串行的,在1.6至2.3的版本,改成了并行的。在2.3之后的版本又做了修改,可以支持并行和串行,当想要串行执行时,直接执行execute()方法,如果需要并行执行,则要执行executeOnExecutor(Executor)。

[!--infotagslink--]

相关文章

  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • php获取一个文件夹的mtime的程序

    php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • Rstudio中安装package出现的问题及解决

    这篇文章主要介绍了Rstudio中安装package出现的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • jquery如何获取元素的滚动条高度等实现代码

    主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • jquery获取div距离窗口和父级dv的距离示例

    jquery中jquery.offset().top / left用于获取div距离窗口的距离,jquery.position().top / left 用于获取距离父级div的距离(必须是绝对定位的div)。 (1)先介绍jquery.offset().top / left css: 复制代码 代码如下: *{ mar...2013-10-13
  • Jquery 获取指定标签的对象及属性的设置与移除

    1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • Visual Studio 2015下载和安装图文教程

    这篇文章主要为大家详细介绍了Visual Studio 2015下载和安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • C#获取字符串后几位数的方法

    这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25