Android开发之Activity的中部或底部回到顶部

 更新时间:2016年9月20日 19:53  点击:1518
Activity中经常会要做到返回顶部或一些功能了,今天我们就一起来看一个关于Android开发之Activity的中部或底部回到顶部的例子,具体操作如下.

我们浏览淘宝商品详情的时候会遇到回到顶部这个功能,下面就说说这个功能的简单实现


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ScrollView
android:id="@+id/sc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<WebView
android:id="@+id/wb"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</WebView>
</LinearLayout>
</ScrollView>
 
<Button
android:id="@+id/bt"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@android:color/black"
android:layout_gravity="bottom"
android:text="点我向上"
android:textColor="#ffffff"
/>
 
</FrameLayout>

布局最外层使用FrameLayout,然后套上ScrollView,但是一定要注意ScrollView的高只能是wrap_content,要不然点击回到底部没效果。

代码如下

public class MainActivity extends AppCompatActivity {
private ScrollView sc;
private WebView wb;
private Button bt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sc=(ScrollView)findViewById(R.id.sc);
wb=(WebView)findViewById(R.id.wb);
bt=(Button)findViewById(R.id.bt);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sc.post(new Runnable() {
@Override
public void run() {
sc.post(new Runnable() {
public void run() {
// 回到顶部
sc.fullScroll(ScrollView.FOCUS_UP);
}
});
}
});
}
});
initView();
}
 
private void initView() {
String url = "https://www.111cn.net/";
WebSettings webSettings = wb.getSettings();
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
webSettings.setJavaScriptEnabled(true); //设置WebView属性执行Javascript脚本
//设置可以访问文件
webSettings.setAllowFileAccess(true);
webSettings.setBuiltInZoomControls(false);// 设置是否显示缩放工具
wb.loadUrl(url);
wb.setWebViewClient(new WebViewClient());
 
}
}


2015-12-10_164558

实现效果如图,我这里是使用webView链接百度的网页,换成其他的控件也是一样的

GestureDetector在android开发中使用到比较的多了,我们下面一起来看一篇关于安卓开发使用GestureDetector手势滑动界面的例子,具体细节如下所示.

用惯了苹果的人都知道在在APP中只需要手指左右滑动就可以进行页面的转换,但是在Android中大部分软件还只是使用返回键来进行界面的更替,其实Android很早很早以前就支持手势去更新操作,只是很多APP中没有使用到GestureDetector,下面就简单说说通过GestureDetector来进行界面的更替,下面只给出关键代码,直接使用即可。


GestureDetector  detector = 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) {
if (e1.getX() - e2.getX() > 120) {//向左滑动,在这里可以进行界面间的更新,你想怎么干就怎么干
Intent intent = new Intent();
intent.setClass(MainActivity.this, Two.class);
startActivity(intent);
return true;
} else if (e1.getX() - e2.getX() < -120) {//向右滑动
MainActivity.this.finish();
return true;
}
return false;
}
});
 
@Override
public boolean onTouchEvent(MotionEvent event) {//一定要在activity中重写onTouchEvent方法才能使手势生效
detector.onTouchEvent(event);
return super.onTouchEvent(event);
}
 
上面是在正常情况下的滑动,当你在ListView等本身带有滑动的控件使用手势绝对会冲突,下面只给出最简单最粗暴的解决方式—— 改变系统的 onTouchEvent 事件的顺序,重写dispatchTouchEvent方法

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
 this.detector.onTouchEvent(ev);
 return super.dispatchTouchEvent(ev);
}

以上就是通过GestureDetector手势来进行界面间的转换,对动画研究透彻的童鞋可以在界面交替时加上动画效果!GestureDetector还有很多功能,有兴趣的可以继续研究

安卓开发之Picasso框架了解不多了,小编今天来为各位介绍两个关于安卓开发之Picasso框架例子,希望这两个例子能够帮助到各位。

之前一直使用imageloader这个框架加载图片,觉得配置很麻烦,觉得使用Picasso这个框架。

什么是Picasso我就不多说了,大家可以去官网看,http://square.github.io/picasso/。

Picasso使用的方法汇总:

 代码如下 复制代码


Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
Picasso.with(context).load(url).into(view);
Picasso.with(context).load(url) .resize(50, 50).centerCrop().into(imageView)
//这里的placeholder将resource传入通过getResource.getDrawable取资源,所以可以是张图片也可以是color id
Picasso.with(context).load(url).placeholder(R.drawable.user_placeholder).error(R.drawable.user_placeholder_error).into
 
(imageView);
 
Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);
Picasso.with(context).load(new File(...)).into(imageView3);
//这里显示notification的图片
Picasso.with(activity).load(Data.URLS[new Random().nextInt(Data.URLS.length)]).resizeDimen
 
(R.dimen.notification_icon_width_height,R.dimen.notification_icon_width_height).into(remoteViews, R.id.photo,
 
NOTIFICATION_ID, notification);
//这里是通过设置tag标签,就是当前传过来的context,这样就可以根据这个context tag来pause和resume显示了
Picasso.with(context).load(url).placeholder(R.drawable.placeholder).error(R.drawable.error).fit().tag(context).into
 
(view);
//监听onScrollStateChanged的时候调用执行
picasso.resumeTag(context);
picasso.pauseTag(context);
 
Picasso.with(context).load(contactUri).placeholder(R.drawable.contact_picture_placeholder).tag(context).into
 
(holder.icon);
//这个onpause方法里的这段代码还是很有意思的
@Override protected void onPause() {
    super.onPause();
    if (isFinishing()) {
      // Always cancel the request here, this is safe to call even if the image has been loaded.
      // This ensures that the anonymous callback we have does not prevent the activity from
      // being garbage collected. It also prevents our callback from getting invoked even after the
      // activity has finished.
      Picasso.with(this).cancelRequest(imageView);
    }
  }
// Trigger the download of the URL asynchronously into the image view.
    Picasso.with(context)
        .load(url)
        .placeholder(R.drawable.placeholder)
        .error(R.drawable.error)
        .resizeDimen(R.dimen.list_detail_image_size, R.dimen.list_detail_image_size)
        .centerInside()
        .tag(context)
        .into(holder.image);
//Picasso.with使用的是单例模式

Picasso.with(this).cancelTag(this);

然后呢,Picasso还提供了debug的标示,调用picasso的setIndicatorsEnabled方法,true是debug模式,跟踪代码其实就是在最后生成的
PicassoDrawable类的ondraw里绘制了个左上角小三角,根据

 代码如下 复制代码

public enum LoadedFrom {
MEMORY(Color.GREEN),
DISK(Color.BLUE),
NETWORK(Color.RED);

枚举里的不同值标示不同加载来源,这对分析图片加载有好处。

在Picasso.with()的时候会将执行所需的所有必备元素创建出来,如缓存cache、执行executorService、调度dispatch等,在load()时创建Request,在into()中创建action、bitmapHunter,并最终交给dispatcher执行。


Picasso创建圆形图像

上篇介绍了Picasso这个框架,git地址是https://github.com/square/picasso。怎么实现各种各样的图片样式呢,在Picasso里提供了Transformation这个接口,我们可以自己实现。下面是一个实现圆形图片的demo;

 代码如下 复制代码

public class CircleTransform implements Transformation {
@Override
public Bitmap transform(Bitmap source) {
int size = Math.min(source.getWidth(), source.getHeight());
 
int x = (source.getWidth() - size) / 2;
int y = (source.getHeight() - size) / 2;
 
Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size);
if (squaredBitmap != source) {
source.recycle();
}
 
Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig());
 
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
BitmapShader shader = new BitmapShader(squaredBitmap,
BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
paint.setShader(shader);
paint.setAntiAlias(true);
 
float r = size / 2f;
canvas.drawCircle(r, r, r, paint);
 
squaredBitmap.recycle();
return bitmap;
}
 
@Override
public String key() {
return "circle";
}
}

使用它:

Picasso.with(activity).load(mayorShipImageLink).transform(new CircleTransform()).into(ImageView);
 

下面我们一起来看一篇关于android studio、eclipse分别导入运行qq Android sdk 第三方登录的例子,希望此例子能够帮助到大家。

这里我是先导入eclipse,然后到处为gradle buid files ,再导入 android studio。
 
要是对gradle编译脚本熟悉的,可以直接导入,然后手动写gradle的配置文件。

1.下载qq android sdk

选择:

1.jpg

2. 解压后得到的目录结构为:

1.jpg

3.将上面的sample文件夹导入的Eclipse,目录结构如下:

1.jpg

修改项目的编码为UTF-8:

1.jpg

4.修复库依赖关系

 代码显示有错误,那是因为我们没有将qq的sdk jar包放到libs目录下。

点击项目右键&mdash;&mdash;Properities&mdash;&mdash;Android,将错误的依赖关系删除:

1.jpg

5.导入sdk jar库

将下载的qq android sdk包下的 jar/目录下的 两个jar包 复制到 项目的libs目录:

1.jpg

 

此时项目的目录结构如下:

1.jpg

然后clean  ,再重新编译。代码就没有报错了。

6.将项目导入到Android studio

最关键的一步,如何将eclipse中的项目导入到Android studio中:

右键项目,选择&ldquo;export&rdquo;&mdash;&mdash;android&mdash;&mdash;generate gradle build files &mdash;&mdash;然后选中要到处都项目,得到导出的项目包。

再将得到的项目包,导入到android studio中。会提示报错,我们需要将项目根目录的build.gradle文件中的(可能你的android studio使用的gradle版本和gradle插件版本与我的有不同,建议更改成自己的所使用的版本)


dependencies {
    classpath 'com.android.tools.build:gradle:0.12+'
}
改为我们使用的新到gradle插件版本:


dependencies {
    classpath 'com.android.tools.build:gradle:1.3.0'
}

注意:如果有可能,可能还需要改项目根目录下/gradle/wrapper/gradle-wrapper.properties中的

7.重新编译运行

改完后,点击&ldquo;Sync now&rdquo;,重新编译项目,就会发现项目没有报错,在模拟器中测试,一切正常。
android studio版本的QQ sdk demo下载(最新版)

下面我们来为各位以图文的形式给各位介绍一篇关于android studio、eclipse分别导入新浪微博 Android sdk 第三方登录demo的例子。
1.下载解压sdk
先下载weibo android sdk 包:
打开网址:https://github.com/sinaweibosdk/weibo_android_sdk
将sdk下载到本地,解压后的目录结构:
点击进入“demo-src”目录,结构如下:
将上面的两个项目都导入到eclipse中!!
2.导demo到eclipse
分别修改两个项目的文件编码为UTF-8,保存。
3.修改 debug.keystore
MD5 工具是根据 keystore 来生成签名的,丌同的 keystore 生成的签名是丌一样的。此 Demo 的签名是用官网提
供的 keystore 生成的,若要顺利运行 Demo 程序,需要?行设置戒是替换 keystore,两种方法选择一种操作即可:
方式一:替换 keystore:把 Android 默认的 debug.keystore(在 C:\Users\XXXXX\.android 目录下)替换成官
方在 GitHub 上提供的 debug.keystore。
方式二:在 Eclipse 中设置工程 keystore:在 Eclipse 中点击“WindowsPreferencesAndroidBuild”,在
Custom debug keystore 中选择 Demo 中的 debug.keystore,如下图,点击 ApplyOK,Demo 即可正常运行。
注意:这一步是必须的,如果没有替换,demo 程序在运行时将无法正确的授权成功。用户在替换前,最好先备份
一下原始的 debug.keystore。GitHub 中 debug.keysotre 是新浪官方的,除了编译运行官方 DEMO 外,丌要直
接使用它,出于安全的考虑,用户应该为自己的应用提供一份 keysotre。 
 
4.修复依赖
如果修改完编码后,eclipse仍然显示报错,那么就要去看看是否是项目的依赖出了问题:
选中WeiboSDKdemo后鼠标右键单击——Properties——android——Add,如下图,将WeiboSDK添加为WeiboSDKdemo的依赖项目。(如果没有显示红色的问号,那么说明依赖没有问题)
5.将项目导入到Android studio
最关键的一步,如何将eclipse中的项目导入到Android studio中:
右键项目,选择“export”——android——generate gradle build files ——然后选中要到处都项目,得到导出的项目包。

再将得到的项目包,导入到android studio中。会提示报错,我们需要将项目根目录的build.gradle文件中的(可能你的android studio使用的gradle版本和gradle插件版本与我的有不同,建议更改成自己的所使用的版本):


dependencies {
    classpath 'com.android.tools.build:gradle:0.12+'
}

改为我们使用的新到gradle插件版本:

dependencies {
    classpath 'com.android.tools.build:gradle:1.3.0'
}

注意:如果有可能,可能还需要改项目根目录下/gradle/wrapper/gradle-wrapper.properties中的

 

6.重新编译运行
改完后,点击“Sync now”,重新编译项目,就会发现项目没有报错,在模拟器中测试,一切正常。
,代码就编译通过,然后在安卓模拟器中运行。如下图:
===================================
问题是,一切没有这么顺利,应为android studio使用的是gradle来编译的。而gradle编译成功的要求要严格一些,你会发现新浪微博的sdk demo运行后会报好几种错误:
错误A:
Error:The project is using an unsupported version of the Android Gradle plug-in (0.12.2). The recommended version is 1.5.0.
Fix plugin version and sync project

解决办法:把demo-src目录下的build.gradle中的gradle插件版本改成你android studio所使用的版本(我使用的是1.5.0):


Java
dependencies {
    classpath 'com.android.tools.build:gradle:1.5.0'
}
123 dependencies {    classpath 'com.android.tools.build:gradle:1.5.0'}

 

把demo-src/gradle/wrapper/gradle-wrapper.properties中的gradle版本改成android studio所使用的版本(我是用的最新的gradle版本,2.8):
Java
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
1 distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip

 

然后”sync now”,就不会报这个错误了。
 
错误B:
这个错误是因为新浪weibo的sdk开发人员偷懒导致的,出错的原因都是在图片的 问题上,所以,我这里将其归为一种错误。
错误如下:
Error:Execution failed for task ‘:WeiboSDKDemo:mergeDebugResources’.
> Crunching Cruncher ic_login_button_blue_normal.9.png failed, see logs
其实,看编译错误,还是要看gradle console里的错误和警告,如下:
AAPT err(Facade for 1170324693): ERROR: 9-patch image C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\res\drawable\ic_login_button_blue_normal.9.png malformed.
AAPT err(Facade for 1170324693):        Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT err(Facade for 1170324693):        Found at pixel #2 along top edge.
AAPT err(Facade for 1170324693): ERROR: 9-patch image C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\res\drawable\ic_login_button_blue_focused.9.png malformed.
AAPT err(Facade for 1170324693):        Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT err(Facade for 1170324693):        Found at pixel #2 along top edge.
AAPT err(Facade for 576922613): libpng error: Not a PNG file
AAPT err(Facade for 735358242): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-mdpi-v4\ic_com_sina_weibo_sdk_login_with_text.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT err(Facade for 576922613): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-hdpi-v4\ic_com_sina_weibo_sdk_logo.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT err(Facade for 735358242): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-ldpi-v4\ic_com_sina_weibo_sdk_logo.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT err(Facade for 576922613): ERROR: 9-patch image C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\res\drawable\ic_login_button_blue_pressed.9.png malformed.
AAPT err(Facade for 706899532): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-xhdpi-v4\ic_com_sina_weibo_sdk_logo.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT err(Facade for 576922613):        No marked region found along edge.
AAPT err(Facade for 576922613):        Found along top edge.
AAPT err(Facade for 1615154168): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-ldpi-v4\ic_com_sina_weibo_sdk_login_with_text.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT err(Facade for 1561367387): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-mdpi-v4\ic_com_sina_weibo_sdk_logo.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT err(Facade for 1561367387): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-hdpi-v4\ic_com_sina_weibo_sdk_login_with_text.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
上面的错误主要是两种(这里我忽略警告信息,因为警告不会导致编译失败。警告信息其实也是因为png的图片有问题,大家可以自行google原因和解决方法。):
1.AAPT err(Facade for 1170324693): ERROR: 9-patch image C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\res\drawable\ic_login_button_blue_normal.9.png malformed.
AAPT err(Facade for 1170324693):        Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT err(Facade for 1170324693):        Found at pixel #2 along top edge.
原因:报这个错,是因为WeiboSDKDemo中的图片有部分其实不是点9图片,只不过是改了后缀名。而前面说过,gradle编译要求高些,所以在eclipse中不会因为这个错误而编译失败,但是android studio却会导致失败。
解决办法:将所以提示不是点9图片的文件,使用android studio的点9图片编辑器,将其修复成点9图片。
2.AAPT err(Facade for 576922613): libpng error: Not a PNG file
原因:这个错误是因为,WeiboSDKDemo中的图片里有图片不是png格式的图片,而是jpg格式的图片,只不过是被新浪的开发人员的直接改成了 “.png”的后缀名,所以,android studio编译不通过。
解决办法:找到那个不是png格式的图片,windows系统貌似没有这个工具,即使是右键查看文件属性也是看不出的。所以,只能借助android studio的图片编辑器了,用android studio依次打开所有的.png文件,最终发现:/demo-src/WeiboSDKDemo/res/drawable/ic_share_music_thumb.png 并不是png格式的,而是jpg

 

然后将其转换为png图片即可。
错误C:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
at com.android.dx.command.dexer.Main.run(Main.java:277)
at com.android.dx.command.dexer.Main.main(Main.java:245)
at com.android.dx.command.Main.main(Main.java:106)
原因:是因为WeiboSDKDemo/build.gradle文件中的添加了两次WeiboSDK依赖,如下:

 


dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':WeiboSDK')
    compile project(':WeiboSDK')
}


而WeiboSDK/libs下有support-v4.jar,所以导致提示support-v4包多次导入,导致编译失败。
解决办法:删除重复的一行,该称下面的样子:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':WeiboSDK')
    
}


接着”sync now”,重新编译,就不会报这个错误了。

[!--infotagslink--]

相关文章

  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • Android开发中findViewById()函数用法与简化

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

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • js+css实现回到顶部按钮(back to top)

    这篇文章主要为大家详细介绍了js+css实现回到顶部按钮back to top回到顶部按钮,感兴趣的小伙伴们可以参考一下...2016-03-03
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • 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
  • iOS新版微信底部返回横条问题的解决

    这篇文章主要介绍了iOS新版微信底部返回横条问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-30
  • 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
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • Android 实现钉钉自动打卡功能

    这篇文章主要介绍了Android 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
  • Android 开发之布局细节对比:RTL模式

    下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02
  • Android中使用SDcard进行文件的读取方法

    首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!--...2016-09-20
  • Android开发之PhoneGap打包及错误解决办法

    下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20
  • iOS新版微信底部工具栏遮挡问题完美解决

    这篇文章主要介绍了iOS新版微信底部工具栏遮挡问题完美解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-30
  • 用Intel HAXM给Android模拟器Emulator加速

    Android 模拟器 Emulator 速度真心不给力,, 现在我们来介绍使用 Intel HAXM 技术为 Android 模拟器加速,使模拟器运行度与真机比肩。 周末试玩了一下在Eclipse中使...2016-09-20
  • Android判断当前屏幕是全屏还是非全屏

    在安卓开发时我碰到一个问题就是需要实现全屏,但又需要我们来判断出用户是使用了全屏或非全屏了,下面我分别找了两段代码,大家可参考。 先来看一个android屏幕全屏实...2016-09-20