Articles of 界面

实现View.IOnTouchListener接口

在Xamarin中,我编写了一个实现View.IOnTouchListener接口的类。 这是我的代码: public class OnTouchListener : View.IOnTouchListener { public bool OnTouch (View v, MotionEvent e) { return true; } void IDisposable.Dispose () { throw new NotImplementedException (); } IntPtr Android.Runtime.IJavaObject.Handle { get { throw new NotImplementedException (); } } } 我需要什么值的IDisposable.Dispose和Android.Runtime.IJavaObject.Handle代码项,而不是throw new NotImplementedException ()代码? 提前致谢

让一个button更容易点击

我有一个button,在某些手机是太难以点击,因为它的大小。 但是让它更大的rest布局。 有人可能解释说,它有一个比它的可见区域更大的“点击框”?

如何制作可以改变Android用户界面字体的应用程序?

我想知道如果有人有任何想法如何创build一个应用程序,可以更改三星手机的界面字体样式。 在TrueType格式中,我有我最喜欢的字体样式。 在Galaxy Apps商店有很多字体样式,但他们是付费的,而不是我想要的。 你可以看到这个应用程序作为一个例子是什么安装后,用户可以去设置>设备>字体样式>从列表中select字体和更改字体样式。 我试过反编译它,但没有得到很多。 换句话说,Flip Font应用程序。 反编译的源码 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="2" android:versionName="1.1" package="com.monotype.android.font.presentltroman" platformBuildVersionCode="23" platformBuildVersionName="6.0-2438415"> <uses-sdk android:minSdkVersion="7" /> <application android:label="@string/app_name" android:icon="@drawable/icon"> <provider android:name=".FontContentProvider" android:authorities="com.example.myfont" /> <support-screens android:largeScreens="true" android:xlargeScreens="true" /> </application> </manifest> 只有一个活动 import android.content.ContentProvider; import android.content.ContentValues; import android.content.UriMatcher; import android.content.res.AssetFileDescriptor; import android.content.res.AssetManager; import android.database.Cursor; import android.net.Uri; import android.os.ParcelFileDescriptor; import android.util.Log; import […]

Android,通过点击小部件的手势

我的应用程序包含一个充满button的区域。 我希望以这样的方式实现这个活动,在button区域上的扔手势将把它切换到另外两个区域中的一个(使用ViewFlipper)。 我已经做了两种检测手势的方法。 第一个涉及使用GestureDetector。 但是,button上的触摸动作事件并未引发onTouchEvent活动方法,因此 – 结果 – 我无法将其转发到GestureDetector类。 总之失败了。 第二种方法 – 涉及使用GestureOverlayView。 然而,这一次,我已经到了第二个极端:不仅手势被检测到,而且执行手势的button也报告了一个点击。 我希望界面按以下方式工作:如果用户触摸button并释放触摸(或仅移动一点手指),则button报告点击并且没有检测到手势。 另一方面,如果用户触摸屏幕并进行较长时间的移动,则应该检测手势,并且没有button报告的点击事件。 我已经实现了一个小的概念certificate应用程序。 活动XML代码如下所示: <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"> <android.gesture.GestureOverlayView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/overlay"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/display" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/button"/> </LinearLayout> </android.gesture.GestureOverlayView> </LinearLayout> 活动java代码如下: package spk.sketchbook; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; […]

如何在嵌套片段内的两个子片段之间进行通信

我可以很容易地通过callbackinterface在活动的两个fragment之间进行通信。 遵循这种方式,我已经在ParentFragment实现了一个接口来进行通信。 但是为了活动,我正在使用 – @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mCallback = (OnHeadlineSelectedListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnHeadlineSelectedListener"); } } 而在目前的情况下,我正在使用mCallback = (OnHeadlineSelectedListener) getParentFragment(); 而不是mCallback = (OnHeadlineSelectedListener) activity; 。 一切正常。 这种方法好吗? 或者,我应该做到另一个线程,而不是onAttach() ?

Java接口中的可选方法

我有几个方法定义的接口,我不想要求其中的一些。 这可能吗? 如果是的话,我该如何执行? 我曾尝试设置@Optional的注释,但这似乎并没有工作。 我是否需要在某处定义Optional注释?

确定多个Android屏幕尺寸/密度的图像大小

我一直在审查Android的支持多屏幕文件,我只是需要一些额外的澄清… 我的理解是,devise三个独特的接口(ldpi,mdpi和hdpi)将是支持所有潜在的android屏幕的最好的方式,只需最小的缩放/失真。 是的,我知道有类似的问题发布,但是…如果我创build一个基准mdpi的图像(假设我的图像是300×210,例如)如何确定我将需要什么大小的重build在ldpi &hdpi? 这篇文章以及谷歌search引导我相信,ldpi只是mdpi映像的75%,而hdpi是mdpi映像的150%。 这是准确的吗?

圆Android Wear模拟器是方形的

标题和图片说明了这一切 – 我的圆形android Wear模拟器显示矩形布局。 我会很感激任何提示,帮助我得到轮模拟器显示正确的界面。 使用以下指令创buildAVD: Android文档 Android Studio 0.8.1 Beta,SDK Tools 23.0.2,Wear目标是4.4W(API 20) 使用Wayne的命令行方法创buildAVD创build了一个显示正确UI的AVD

Android的JavascriptInterface安全?

从文档: http : //developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29 “使用addJavascriptInterface()允许JavaScript来控制你的应用程序,这可能是一个非常有用的function或者是一个危险的安全问题,当WebView中的HTML是不可信的(例如,部分或全部HTML是由某个人或进程提供的),那么攻击者可以注入HTML来执行你的代码,也可能是攻击者select的任何代码, 除非这个WebView中的所有HTML都是由你写的,否则不要使用addJavascriptInterface()。线程,而不是在它构build的线程中。 假设我有一个界面,只显示一个自定义对话框,或开始下载到SD卡。 这将是不安全的使用任何url? 攻击页面如何使用界面来运行攻击者select的任何代码? 更新:根据文档 : 可以使用此方法来允许JavaScript控制主机应用程序。 这是一个强大的function,但是对于API级别为JELLY_BEAN或更低级别的应用程序也会带来安全风险,因为JavaScript可以使用reflection来访问注入对象的公共字段。 在包含非信任内容的WebView中使用此方法可能允许攻击者以非预期的方式操纵主机应用程序,并使用主机应用程序的权限执行Java代码。 在可能包含不可信内容的WebView中使用此方法时要格外小心。 有没有这种情况发生的例子? 这只是说,如果这是该类的公共方法,可以调用DOWNLOADINTERFACE.dangerousfunction ? 更新: 我基于下面的漏洞利用示例进行了testing,站点可以通过Android 4.4,4.1和3.2的界面访问系统。 但是,我没有看到Android 2.2或2.3上的这个bug,黑客只会导致一个强制closures。 除了不使用JSInterface之外,防止这种黑客入侵的最好方法是什么? 我是否可以包含这样的伪function,以防止未经授权的函数调用? public Object getClass() { //throw error, return self, or something? } 或重写所有使用Ajax和拦截呼叫? 会导致更好/更差的performance? 更新: 我成功地删除了JS接口,并通过为所有窗口(接口)函数定义window.open(specialurl)命令来取代function,并覆盖了shouldOverrideUrlLoading中的那些。 奇怪的是,在某些情况下必须使用window.open(),或者webview中断显示(如javascript正在停止?),而在其他情况下,应该使用location.replace,否则它只会显示“interface:// specialdata “找不到消息。 (我设置settings.setJavaScriptCanOpenWindowsAutomatically(true),所以window.open从JS始终工作。) 任何人都知道用这种行为重写应用程序的最好方法?

如何使用界面来进行两个活动之间的沟通

我试图让两个活动Act1 and Act2之间的监听器接口。 Act1将启动Act2 。 如果在Act2发生了一些事件,它会通知Act1 。 问题是我正在使用Intent开始新的活动,那么Act1如何将自己指定为Act2界面的侦听器呢? Act1.java public class Act1 extends ActionBarActivity implements ActionBar.OnNavigationListener { ActionBar actionbar; Intent pizzaIntent; boolean visibleFirstTime = true; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.menutab); //set actionbar here } @Override public boolean onNavigationItemSelected(int arg0, long arg1)// item pos, // itemid { switch (arg0) { case 0: if(this.visibleFirstTime == […]