首页 文章 精选 留言 我的

精选列表

搜索[Eclipse],共2962篇文章
优秀的个人博客,低调大师

22.Eclipse下Ndk开发(使用ndk自带工具addr2line定位错误)

D:\application\java\android-ndk-r10e\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin>arm-linux-androideabi-addr2line -e C:\rzm\code\workspace-android\ndk_openSL\obj\local\armeabi\libOpenSLAudioPlayer.so 00001d4b C:\rzm\code\workspace-android\ndk_openSL/jni/OpenSLAudioPlayer.cpp:230 进入ndk目录下 D:\application\java\android-ndk-r10e\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin> 使用工具arm-linux-androideabi-addr2line执行命令 arm-linux-androideabi-addr2line -e C:\rzm\code\workspace-android\ndk_openSL\obj\local\armeabi\libOpenSLAudioPlayer.so 00001d4b 其中-e表示的是错误级别 C:\rzm\code\workspace-android\ndk_openSL\obj\local\armeabi\libOpenSLAudioPlayer.so表示的是发生错误的so文件 00001d4b表示的是logcat打印出来的地址 也就是说只要你能定位到发生错误的地址,那么就可以使用这个命令将这个地址转换成代码中的具体在第几行, D:\application\java\android-ndk-r10e\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin>arm-linux-androideabi-addr2line -e C:\rzm\code\workspace-android\ndk_openSL\obj\local\armeabi\libOpenSLAudioPlayer.so 00001d4b C:\rzm\code\workspace-android\ndk_openSL/jni/OpenSLAudioPlayer.cpp:230 可以看到错误发生在\rzm\code\workspace-android\ndk_openSL/jni/OpenSLAudioPlayer.cpp文件的第230行 具体的平台根据实际开发选择,这里是以arm为例

优秀的个人博客,低调大师

(android开源库android-gif-drawable)第一篇 eclipse使用这个开源库

如果想显示gif图片 推荐使用Glide开源库 android-gif-drawable我就不推荐了 android开源库android-gif-drawable的使用 android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的gif图片 不会内存溢出,于是我就想试试这个开源库,我下了作者的源代码和例子,但是我却跑不起来。不知道为什么,我又到网上去找使用这个开源库的例子发现有一个,我也下载了下来,发现还是跑不起来。我决定自己好好试试这个源代码,终于在我的努力下现在可以用了。废话完了 现在教大家怎么用这个库。大家不想看怎么做的 可以到后面下载DEMO代码。 1.android-gif-drawable的源代码下载地址:https://github.com/koral--/android-gif-drawable 2.点开它,如下图所示 3.点击下载后,我们可以看到下面这个界面 PS:是下载.aar文件 我写错了 4.下载好这个文件后,我们右键选择打开方式为 5.然后解压这个文件到一个空的文件夹,复制也可以 6.然后得到如下 7.点开jni文件夹得到如下 8.复制这4个文件夹和开源库的JAR包(classes.jar)到你android代码中位置如下图所示 9.下面是作者教大家的使用方法 PS: 想看原版的 请到这里来看:https://github.com/koral--/android-gif-drawable From XML The simplest way is to use GifImageView (or GifImageButton) like a normal ImageView: <pl.droidsonroids.gif.GifImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/src_anim" android:background="@drawable/bg_anim" /> If drawables declared by android:src and/or android:background are GIF files then they will be automatically recognized as GifDrawables and animated. If given drawable is not a GIF then mentioned Views work like plainImageView and ImageButton. GifTextView allows you to use GIFs as compound drawables and background. <pl.droidsonroids.gif.GifTextView android:layout_width="match_parent" android:layout_height="match_parent" android:drawableTop="@drawable/left_anim" android:drawableStart="@drawable/left_anim" android:background="@drawable/bg_anim" /> From Java code GifImageView, GifImageButton and GifTextView have also hooks for setters implemented. So animated GIFs can be set by calling setImageResource(int resId) and setBackgroundResource(int resId) GifDrawable can be constructed directly from various sources: //asset file GifDrawable gifFromAssets = new GifDrawable( getAssets(), "anim.gif" ); //resource (drawable or raw) GifDrawable gifFromResource = new GifDrawable( getResources(), R.drawable.anim ); //byte array byte[] rawGifBytes = ... GifDrawable gifFromBytes = new GifDrawable( rawGifBytes ); //FileDescriptor FileDescriptor fd = new RandomAccessFile( "/path/anim.gif", "r" ).getFD(); GifDrawable gifFromFd = new GifDrawable( fd ); //file path GifDrawable gifFromPath = new GifDrawable( "/path/anim.gif" ); //file File gifFile = new File(getFilesDir(),"anim.gif"); GifDrawable gifFromFile = new GifDrawable(gifFile); //AssetFileDescriptor AssetFileDescriptor afd = getAssets().openFd( "anim.gif" ); GifDrawable gifFromAfd = new GifDrawable( afd ); //InputStream (it must support marking) InputStream sourceIs = ... BufferedInputStream bis = new BufferedInputStream( sourceIs, GIF_LENGTH ); GifDrawable gifFromStream = new GifDrawable( bis ); //direct ByteBuffer ByteBuffer rawGifBytes = ... GifDrawable gifFromBytes = new GifDrawable( rawGifBytes ); InputStreams are closed automatically in finalizer if GifDrawable is no longer needed so you don't need to explicitly close them. Calling recycle() will also close underlaying input source. Note that all input sources need to have ability to rewind to the begining. It is required to correctly play animated GIFs (where animation is repeatable) since subsequent frames are decoded on demand from source. Animation control GifDrawable implements an Animatable and MediaPlayerControl so you can use its methods and more: stop() - stops the animation, can be called from any thread start() - starts the animation, can be called from any thread isRunning() - returns whether animation is currently running or not reset() - rewinds the animation, does not restart stopped one setSpeed(float factor) - sets new animation speed factor, eg. passing 2.0f will double the animation speed seekTo(int position) - seeks animation (within current loop) to given position (in milliseconds) Only seeking forward is supported getDuration() - returns duration of one loop of the animation getCurrentPosition() - returns elapsed time from the beginning of a current loop of animation Using MediaPlayerControl Standard controls for a MediaPlayer (like in VideoView) can be used to control GIF animation and show its current progress. Just set GifDrawable as MediaPlayer on your MediaController like this: @Override protected void onCreate ( Bundle savedInstanceState ) { super.onCreate( savedInstanceState ); GifImageButton gib = new GifImageButton( this ); setContentView( gib ); gib.setImageResource( R.drawable.sample ); final MediaController mc = new MediaController( this ); mc.setMediaPlayer( ( GifDrawable ) gib.getDrawable() ); mc.setAnchorView( gib ); gib.setOnClickListener( new OnClickListener() { @Override public void onClick ( View v ) { mc.show(); } } ); } Retrieving GIF metadata getLoopCount() - returns a loop count as defined in NETSCAPE 2.0 extension getNumberOfFrames() - returns number of frames (at least 1) getComment() - returns comment text (null if GIF has no comment) getFrameByteCount() - returns minimum number of bytes that can be used to store pixels of the single frame getAllocationByteCount() - returns size (in bytes) of the allocated memory used to store pixels of given GifDrawable getInputSourceByteCount() - returns length (in bytes) of the backing input data toString() - returns human readable information about image size and number of frames (intended for debugging purpose) 10.DEMO下载地址:http://pan.baidu.com/s/1gdd27v1

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。