Android软键盘遮挡输入框
遇到Android软键盘遮挡输入框的问题,按如下方法解决:
在Activity的onCreate方法中设置软键盘模式:在Activity的onCreate方法中的setContentView之前,可以通过以下代码设置软键盘的模式:
12345getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);这会将软键盘的模式设置为调整窗口位置以避免遮挡输入框。在AndroidManifest.xml中设置windowSoftInputMode属性:在AndroidManifest.xml文件中,对应的活动(Activity)标签中可以添加以下属性来设置软键盘的模式:
12android:windowSoftInputMode="stateVisible|adjustResize"这样设置后,软键盘会根据需要调整屏幕大小,避免遮挡输入框。
使用SoftHideKeyBoardUtil工具类:可以使用一个工具类来动态调整布局高度以避免软键盘遮挡输入框。这个工具类会 ...
android 进度条两边半圆
如下该类实现了两边半圆形状进度条:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950public class SemiCircleDrawable extends Drawable { private Paint paint; private int arcWidth; private int color; public SemiCircleDrawable(int arcWidth, int color) { this.arcWidth = arcWidth; this.color = color; paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(color); paint.setStyle(Paint.Style.FILL); } @Overrid ...
Android倒计时进度条
这里使用CountDownTimer类来实现了一个倒计时进度条的库:
123456789101112131415161718192021222324252627282930313233import android.os.CountDownTimer;import android.widget.ProgressBar; public class CountdownProgressBar { private ProgressBar progressBar; private CountDownTimer countDownTimer; public CountdownProgressBar(ProgressBar progressBar, long countDownInterval) { this.progressBar = progressBar; startCountdown(countDownInterval); } private void startCountdown(long coun ...
蝴蝶式分数加减法
数的加减,以往会找出两分母的最小公倍数再计算。但其实只要在算式上画只蝴蝶就解决了。把蝴蝶翅膀圈在一起的部分相乘写在触角里面,彼此相加就是答案的分子,再把分母彼此相乘,就是答案的分母。减法也是一样的方式,只要把触角里的数字改成相减即可。
摄氏度华氏度转换
摄氏度华氏度快速转换:
Android动画设置
Android开发中经常要设置动画,如下方法可以快速的设置动画.
定义动画xml
12345678910111213<!-- res/anim/slide_in_right.xml --><set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="300" /> <!-- 定义动画的其它属性,如alpha, rotate等 --></set> <!-- res/anim/slide_out_left.xml --><set xmlns:android="http://schemas.android.com/apk/res/android"> <tr ...
Java排序算法性能对比
数据量非常小的情况如果数据量非常小,堆排序、归并排序、快速排序、桶排序、timeSort排序、计数排序的表现都是非常优异的;那么数据量非常小的情况下,我们应该选择哪种排序算法进行排序呢?笔者推荐堆排序或归并排序或快速排序或timesort排序,以下是参考条件
冒泡排序属于暴力排序,对cpu的运算负载非常大,直接忽略插入排序,希尔排序,选择排序属于低阶排序算法,在本轮测试中表现不是非常好,而且其一般用于其他排序算法的辅助性工具,所以忽略堆排序没有用到辅助性的数组,所以它占用的空间可以忽略为待排序数组的大小,测试中耗时最短,对栈的依赖适中,可以接受归并排序用到了辅助性数组,所以它占用的空间可以忽略为两倍的待排序数组的大小,测试中耗时最短,对栈的依赖适中,比堆排序稍差快速排序没有用到辅助性的数组,所以它占用的空间可以忽略为待排序数组的大小,测试中耗时偏短,但对栈的依赖最高,所以递归深度最深,比堆排序稍差桶排序严格意义上说是一种策略,一种思想,且桶排序的执行效率与编码人员的综合素质息息相关,是一种下限极低,上限极高的极度自由的排序算法,用到小数据量的排序有点大材小用timeSort是 jdk ...
TimeSort算法
Timesort是一种基于时间序的排序算法,其核心思想是利用时间的局部性进行优化。在Java中默认的排序算法就是Timesort,所以是非常优秀的。
以下是一个简化的Java实现示例,该实现将演示如何使用PriorityQueue和Future来并发处理不同时间区间的数据。
import java.util.concurrent.*;
import java.util.PriorityQueue;
public class Timesort {
public static void main(String[] args) throws ExecutionException, InterruptedException {
// 假设我们有一个模拟的数据源,其中包含(时间戳, 数据)对
PriorityQueue<Event> eventQueue = new PriorityQueue<>();
// 填充队列...
// 设置线程池
Execu ...
Boyer-Moore-Horspool算法
Boyer-Moore算法该算法是Boyer和Moore提出了。将被搜索内容与从右到左而不是从左到右的文本进行比较,同时保持移位方向相同.
1234567891011121314151617public static int BoyerMooreHorspoolSimpleSearch(char[] pattern, char[] text) { int patternSize = pattern.length; int textSize = text.length; int i = 0, j = 0; while ((i + patternSize) <= textSize) { j = patternSize - 1; while (text[i + j] == pattern[j]) { j--; if (j < 0) return i; } i++; } ...
位图算法
在处理大数据时,采用位图可以很大的节约内存。但是Java处理bit还是很麻烦的,幸好Java有提供BitSet类,可以很方便的处理位图,实现位图算法。
123456789101112131415161718192021222324252627282930import java.util.BitSet; public class BitmapAlgorithm { private BitSet bitSet; public BitmapAlgorithm(int size) { this.bitSet = new BitSet(size); } // 将整数n添加到位图中 public void add(int n) { bitSet.set(n); } // 判断整数n是否在位图中 public boolean contains(int n) { return bitSet.get(n); } public ...