技术android
scucheri
乐观开朗
展开
-
在ListView的Item之间添加分割线
前言: 作为一名程序媛,并且是刚入职的小菜鸟,深知自己能力和天赋有限,因此开启这个技术博客,希望能够形成一个技术知识的积累,希望自己能够成为一名优秀的,高效的,不需要加班的程序员! 那么,现在开始吧,一定要坚持哦~问题:在ListView的Item之间添加分割线解决过程: 之前有实现过简单的listview显示数据,但是没有添加分隔你线的情况,因此,在不知道解决办法的情况原创 2015-08-17 09:50:00 · 7407 阅读 · 2 评论 -
自定义一个relativelayout
代码写一个relativelayout private View getConfigView() { LinearLayout l = new LinearLayout(this); l.setOrientation(LinearLayout.HORIZONTAL); TextView tv = new TextView(this);原创 2016-04-16 22:08:49 · 764 阅读 · 0 评论 -
纯代码实现dialog
public class SsPromptDialogMgr implements View.OnClickListener { public final static String TAG = SsPromptDialogMgr.class.getName(); private Context mContext; private Dialog dialog; publ原创 2016-08-13 10:45:53 · 801 阅读 · 0 评论 -
xml实现shape,作为背景
矩形:<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#ffffff" /> <!-- 设置几何图形四个角的弧度 --> <corners android:radius="3d原创 2016-08-13 10:53:09 · 516 阅读 · 0 评论 -
key event监听back键
private DialogInterface.OnKeyListener keylistener = new DialogInterface.OnKeyListener() { public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode ==原创 2016-08-13 11:06:56 · 1877 阅读 · 0 评论 -
写一个linearayout,并且使得它的宽度适应屏幕宽度
public class UpdateFloatView extends LinearLayout { private Context context; private LinearLayout container; private TextView closeView; private TextView confirmView; private TextVi原创 2016-08-13 11:42:29 · 575 阅读 · 0 评论 -
如何将png图片转换成.9.png格式,textview实现跑马灯效果
开发中发现设置了背景 图片的textview的wrap content特性无法生效,始终是图片的大小,后来查了后发现是需要先将图片转换成.9.png格式才行,下面介绍如何使用android studio(mac)实现图片的转换。1。在命令中输入 draw9patch 2。将需要转化的png图片拖入到打开的页面3。 开始编辑,shift+拖动是删除,command+拖动是添加4。 编辑之后,在原创 2016-09-19 19:07:31 · 3595 阅读 · 0 评论 -
实现可自由拖动的view
查了网上的资料,大部分实都是给view 设置一个ontouch listener,在ontouch中获取当前的坐标,然后调用layout()方法,实现view 的重新定位。后来发现这个方法有问题,当整个界面需要刷新的时候,页面重新绘制以下,这个被移动的view又回到了初始位置!令人头疼,大家都说是因为没有将layoutparams保存下来,找了半天也没找到保存的办法!终于在无意中看到了一个极简的方法原创 2016-09-19 19:27:42 · 587 阅读 · 0 评论 -
保持view宽高比,实现屏幕自适应
DisplayMetrics dm = getResources().getDisplayMetrics(); if (dm != null) { screenWidth = dm.widthPixels; screenHeight = dm.heightPixels; }原创 2016-09-19 19:29:30 · 1118 阅读 · 0 评论 -
webview容器属性
webview,归根到底也是一个普通的view,因此可以作为一个子view嵌入到其他的native页面中,webview要想正常地加载h5,需要完成以下基本的setttings配置。 mNineBoxWebview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); // 设置不用缓存,每一次loadUrl都重新刷新页面原创 2016-09-19 19:40:12 · 851 阅读 · 0 评论 -
设置弹出的动画
Animation inAnima = new TranslateAnimation(((Activity)mContext).getWindowManager().getDefaultDisplay().getWidth(), 0,0,0); //设置入动画 inAnima.setDuration(300); mNineBoxWebview.setAnimation原创 2016-09-19 19:41:10 · 376 阅读 · 0 评论 -
view 的移动和动画效果
(1)animate():可实现view从一个位置动画移动到另一个位置,且页面重新绘制时不会回到原位 v.animate() .y(rawY + offsetY) .setDuration(0) .start();(2)scrollTo也可以实现控件的移动,且不会回到原位,但修改的时scroll位置,貌似和手指滑动的方向相反? scrollBy(0,offsetY); inval原创 2016-09-21 11:56:06 · 2388 阅读 · 0 评论 -
android通过注册的className新建对象
BFInvoker invoker = null; Class RegisterInvoker = null; try { RegisterInvoker = Class.forName(registeredInvokerClass.get(invokerType)); } catch (Clas原创 2016-11-03 11:44:54 · 945 阅读 · 0 评论 -
NDK 调用 so 时的异常问题解决
这两天开始学习下android ndk的使用,给自己提了两个问题1。 .so文件时怎么生成的?2。 生成了so文件之后要怎么取调用呢3。 为什么要用so文件,为什么要用java调用c/c++代码呢?问题1: 站在巨人的肩膀上学习,大家可直接下载这位同学分享出来的项目学习和生成 https://github.com/wobiancao/NdkJniDemo问题2: (1)给我一个so文件原创 2017-07-17 20:21:19 · 810 阅读 · 0 评论 -
android新开一个单线程的后台线程
private Executor singleThreadExecutor = Executors.newSingleThreadExecutor(); singleThreadExecutor.execute(new Runnable() { @Override public void run() { });原创 2017-08-21 19:49:56 · 906 阅读 · 0 评论 -
Activity模拟Dialog
最近收到一个需求,需要实现一个全局的dialog,这个可以通过监听activity的生命周期实现,但是显然成本太大,对性能也有不好的影响。这时候需要用activity去模拟一个dialog的功能,废话不多说,见代码:模拟一个普通的dialog:public class PopupDialogActivity extends Activity { @Override prot...原创 2018-11-14 14:51:44 · 480 阅读 · 0 评论 -
Android如何监听输入框的出现和隐藏
类实现: public SoftKeyboardState(Activity activity) { this.decorView = activity.findViewById(android.R.id.content); initKeyboardListener(); } private void initKeyboardListener() { deco...原创 2018-11-14 14:56:01 · 1037 阅读 · 0 评论 -
RecyclerView的使用
定义adapter: class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private List<FeedbackReasons.FeedbackReasonItem> mDataset; // Provide a reference to...原创 2018-11-14 16:00:03 · 189 阅读 · 0 评论 -
activity或者window:addview
window添加view WindowManager windowManager = (WindowManager) getApplication().getSystemService(Context.WINDOW_SERVICE); DisplayMetrics displayMetrics = getWindowMetrics(); mParent原创 2016-04-16 21:54:47 · 699 阅读 · 0 评论 -
获得activity的rootview
@NonNull public static FrameLayout getRootFrame(@NonNull Activity activity) { View re = activity.findViewById(android.R.id.content); if (re != null && re instanceof FrameLayout) {原创 2016-04-16 21:46:07 · 2701 阅读 · 1 评论 -
crash现象的原因及避免与处理的方法
原因: (1)数组,list等没有进行new一个对象,直接进行使用,添加元素等等操作,会出现错误 (2)xml文件定义和activity中使用的控件不匹配,或者在activity中试图寻找其他xml文件的控件 (3)在onstart,onattach等函数中register了eventBus,却没有调用oneventMain,准备接收eventbus传输的事件 (4)复写onstart等方原创 2015-08-23 16:58:06 · 2939 阅读 · 0 评论 -
保存图片到文件
private void saveMyBitmapToFile(File filePath, Bitmap mBitmap) { if (filePath == null) { return; } if (!filePath.getParentFile().exists()) { filePath.get原创 2015-10-17 11:24:51 · 379 阅读 · 0 评论 -
涂鸦
实现功能:导入背景图片,感知用户的touch操作,实现在背景图片上的涂鸦功能。将canvas分为两层,一层时背景图片,一层是用户涂鸦的图片,将两层叠加返回新的view,并存储。public class HandWriteView extends View{ Paint paint = null; private Bitmap drawingBitmap = null;原创 2015-10-17 11:10:17 · 410 阅读 · 0 评论 -
内部类的使用toast
前面的话:当一个类中需要用到一个view的类,而这个类只有这个类自己会去调用,别的类不会去调用时,就可以使用内部类的方法,这样可以使的代码高内聚,低耦合,若别人想用到你这个类时,便可以直接复制这个类,而不需要再添加其他的附加类了。 前面所有set方法,都只是改变变量的值,而在show()方法中定义新建一个内部view类的方法并根据参数的值将view显示出来。 如下: public TMTo原创 2015-09-19 19:58:39 · 1528 阅读 · 0 评论 -
intent跳转
实现跳转到网页,到本app的其他页面,以及到其他的app的代码 private void jumpToUrl() { Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); Uri content_url = Uri.parse("http://fir原创 2015-11-04 14:27:54 · 322 阅读 · 0 评论 -
为一个activity新建一个进程
当crash发生时,某个进程已经挂掉,这时候,如果我们想要新启动一个activity去显示本次crash的详情,那么这个activity就不能属于这个crash掉的进程,而应该新建一个进程。为一个activity新建一个进程很简单,只需要在manifest文件中定义一个新的process即可: <activity android:name=".CrashInfoActiv原创 2015-11-14 14:35:02 · 963 阅读 · 0 评论 -
为一个dialog自定义布局文件
public static void showDialog(Context context) { mContext=context; dialog = new Dialog(context); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); Window window = di原创 2015-11-14 14:39:32 · 362 阅读 · 0 评论 -
为dialog添加单选列表控件
AlertDialog.Builder builder = new AlertDialog.Builder(TMTestActivity.this); builder.setTitle("https开关"); String[] array = {"开","关"}; int checkItem = 0原创 2015-11-14 14:43:08 · 546 阅读 · 0 评论 -
为dialog添加items,并且控制每个activity只能出现一个dialog,不会重复弹出
public static void showDialogex(final Context context) { final String items[]={"我要截屏反馈","禁用摇一摇反馈功能","没啥事"}; //dialog参数设置 AlertDialog.Builder builder=new AlertDialog.Builder(原创 2015-11-14 14:54:46 · 1844 阅读 · 0 评论 -
HandlerThread线程管理
使用过程: 1。新建一个HandlerThread对象:MyHandlerThread mHandlerThread = new MyHandlerThread("TestTrafficHandlerThread");2。 使用post方法将Runnable对象加入这个线程的队列 mHandlerThread.post(mStatsTrafficTestRunnable);3。注意Runnable原创 2015-12-22 11:33:28 · 562 阅读 · 0 评论 -
spinner 的使用
private void initTitleSpinner() { final ArrayList<String> titleNameList = new ArrayList<String>(); titleNameList.add(SIMPLE_VERSION_FEEDBACK); titleNameList.add(PROFESSIONAL_VER原创 2016-04-16 21:06:07 · 323 阅读 · 0 评论 -
Visible.GONE
有些情况下,会有这样的需求,对于不同的用户,需要展示不同的UI,因此就需要隐藏一些view,如果用setVisible为Visibile.Invisible的方法,这个view的尺寸还在,只是内容看不见了,如果要实现这个view的彻底隐藏,且不占用空间,就应该使用Visible.GONE原创 2016-04-16 21:11:22 · 289 阅读 · 0 评论 -
距离传感器的使用
public static void proximityStart() { if (VPVoicePlus.isVoicePlusOpen == false || TMAppStatusUtil.isAppOnForeground(VPVoicePlus.application) == false) { return; } if原创 2016-04-16 21:17:11 · 392 阅读 · 0 评论 -
从.json文件中初始化得到JsonObject对象
//根据读取到的string创建json对象 private static JSONObject getJsonObject(String fileName) { JSONObject object = null; String jsonStr = getJsonStr(fileName); if (jsonStr != null) {原创 2016-04-16 21:20:33 · 9113 阅读 · 0 评论 -
注册机制
实现注册和执行的类public class TMNavInterExecutorMgr { private static HashMap<String,ITMNavInterExecutor> interExecutorHashMap = new HashMap<String, ITMNavInterExecutor>(); public static void registerNavI原创 2016-04-16 21:28:16 · 494 阅读 · 0 评论 -
view 使用 setTag() 和getTag方法
<?xml version="1.0" encoding="utf-8"?><resources> <item type="id" name="teleport_level_tag" /></resources> mChild.setTag(R.id.teleport_level_tag, mChildLevel);Object oldChildLevelObjec原创 2016-04-16 21:42:36 · 427 阅读 · 0 评论 -
view的分层显示
private void insertChildToWindowParent(WindowManager windowManager, WindowManager.LayoutParams lp) { if (windowManager == null || mChild == null) { return; } for(View原创 2016-04-16 21:45:17 · 598 阅读 · 0 评论 -
修改view的Z-index实现修改view的层级
bringToFront方法,将view的层级设置到最前面:feedbackTypeContainer.bringToFront();其他:https://stackoverflow.com/questions/4182486/placing-overlappingz-index-a-view-above-another-view-in-android...原创 2019-02-17 10:43:36 · 7097 阅读 · 1 评论