貌似所有设计到UI的程序原理都是一样的,子线程是不能够更新UI状态的,所以就必须使用UI自身或者第三方来更新UI. 如 在WinForm 中 就可以使用Control.Invoke(Action action) 方法来用UI自身更新状态.当然我不是做WinForm的,更新的方法还有很多. 在Andorid的世界里,同样的,想更新UI的状态,必须借助一个第三方势力来更新. 下面是一个简单的动态添加一个ImageView,并从网络上获得图片的简单的例子. [Activity(Label = "My…
引子 最近,在做产品的需求的时候,遇到 PM 要求在某个按钮上添加一个新手引导动画,引导用户去点击.作为 RD,我哗啦啦的就写好相关逻辑了.自测完成后,提测,PM Review 效果. 看完后,PM 提了个问题,这个动画效果范围能不能再大一点?PM 解释到按钮本身大小不是很大,会导致引导效果不够明显,也会导致用户的点击欲望不够.我想了想,似乎很有道理啊,但是这个能做到吗? 答案是当然可以呢.如果单纯从现在的布局上去将动画的尺寸去扩大,得改变原本的布局.这个引导只出现几次,为了引导,而去改动原有的…
LinearLayout提供了几个方法,用作动态添加View特别好用: 可以添加View.删除View.删除指定位置View.删除全部View: 看代码: public class MainActivity extends AppCompatActivity { private final String TAG = MainActivity.class.getSimpleName(); LinearLayout ll; private LayoutInflater mInflater; @Ove…
<view wx:for="{{array}}" wx:key="this" class="borderContainer"> <view class="borderContainer1"> <view class="firstBorder"> <view class="firstBorderInput"> <input maxlen…
Android的UI访问是没有加锁的,这样在多个线程访问UI是不安全的.所以Android中规定只能在UI线程中访问UI. 但是有没有极端的情况?使得我们在子线程中访问UI也可以使程序跑起来呢?接下来我们用一个例子去证实一下. 新建一个工程,activity_main.xml布局如下所示: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http:…
有时我们需要在程序中动态添加布局或控件等,下面用程序来展示一下相应的方法: 1.addView 添加View到布局容器 2.removeView 在布局容器中删掉已有的View 3.LayoutParams  设置View的大小位置 下面来看一个demo: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreat…
Fragment常用的三个类:android.app.Fragment 主要用于定义Fragmentandroid.app.FragmentManager 主要用于在Activity中操作Fragmentandroid.app.FragmentTransaction 保证一些列Fragment操作的原子性 获取FragmentManage的方式: getFragmentManager() getSupportFragmentManager //v4中FragmentActivity 主要的操作都…
需要注意几个方法:基本上所有的方法参数单位是px 1.设置View的宽高: LinearLayout.LayoutParams params = new LinearLayout().LayoutParams(width,height);//注意此处参数单位是px2.设置View的paddingview.setPadding(left,top,right,bottom);3.设置margin,在params上设置params.setMargins(20,0,20,0);往layout中添加Vie…
Android的UI更新只能在UI线程中,即主线程.子线程中如果要进行UI更新,都是要通知主线程来进行. 几种实现方式总结如下,欢迎补充. 1.runOnUiThread() 子线程中持有当前Activity引用(假如为Activity mActivity;),即可以调用mActivity的runOnUiThread(Runnable r)方法. 2.post()和postDelay() 子线程如果持有某个View的引用,要对该View进行更新,则可调用该View对象的post(Runnable…
Android单线程模型是这样描述的: Android UI操作并不是线程安全的,并且这些操作必须在UI线程执行 如果在其它线程访问UI线程,Android提供了以下的方式: Activity.runOnUiThread(Runnable) View.post(Runnable) View.postDelayed(Runnable, long) Handler 为什么呢?在子线程中就不能操作UI么? 当一个程序第一次启动的时候,Android会同时启动一个对应的主线程,这个主线程就是UI线程,也…