我正在尝试在我的应用程序中为一个简单的ImageView设置动画,我希望它从屏幕底部滑入并进入静止位置,其中视图的顶部50px离开屏幕顶部(例如最终位置)在X中,ImageView应该是-50px.我曾尝试使用AbsoluteLayout来做到这一点,但这实际上切断了ImageView的前50px,使得前50px永远不会被渲染.我需要让ImageView的前50px可见/渲染,同时它是动画,然后让它稍微离开屏幕.我希望我已经解释得那么好了.
这是我目前正在使用的布局和幻灯片动画(这当前不会渲染ImageView的前50px):
布局:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:id="@+id/QuickPlayClipLayout">
<ImageView android:id="@+id/Clip"
android:background="@drawable/clip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_y="-50dp">
</ImageView>
</AbsoluteLayout>
Run Code Online (Sandbox Code Playgroud)
动画:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="100%p"
android:toYDelta="0"
android:duration="1000"/>
<alpha android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="1000" />
</set>
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我正试图在我的应用程序中将发布集成到一个人的墙上.我已经有一个区域,用户可以保存他/她的用户名和密码(加密).我希望我的程序能够回忆起保存的用户名和密码,将其传递给Facebook进行身份验证,然后允许应用程序将简单文本(也可能是链接)发布到用户的墙上.
也就是说,我已经阅读了Facebook开发者页面上的所有内容(api看起来对我来说完全陌生......我以前从未做过任何类型的网络应用程序开发......只是桌面应用程序),并尝试使用Java 这里的库但说实话,我不理解任何各种实现.有些人声称使用起来很简单,但显然它们远远超出我的想象.
我甚至试过搞乱官方的Facebook Android SDK,但是使用了webview界面,我无法传递用户名和密码以便于身份验证.另外,即使经过正确的身份验证,我仍然无法知道如何发布到墙上.
请帮忙.谢谢.
哦,顺便说一下,我已经有了一个Facebook API密钥和应用程序ID.
[更新1]
有关进一步说明:如果我将以下代码片段与官方Facebook Android SDK http://github.com/facebook/facebook-android-sdk一起使用,我应该在接下来做什么(在用户登录后)?我不清楚这一点.
Facebook facebookClient = new Facebook();
facebookClient.authorize(this, "[APP ID]", new String[] {"publish_stream", "read_stream", "offline_access"}, this);
Run Code Online (Sandbox Code Playgroud)
其中"this"是实现DialogListener的Activity,"[APP ID]"是我的Facebook应用程序ID.
谢谢.
[更新2]
我找到了一个解决方案(见下文),但唯一缺少的是能够使用我存储在应用程序中的数据自动填充登录文本框.官方Facebook Android SDK可能不允许这样做.我会继续调查.
我正在尝试创建一种方法来调整多行文本的大小TextView,使其适合于(在X和Y维度)的范围内TextView.
目前,我有一些东西,但它所做的只是调整文本大小,使文本的第一个字母/字符填充尺寸TextView(即只有第一个字母是可见的,而且它是巨大的).我需要它来适应TextView边界内的所有文本行.
这是我到目前为止:
public static void autoScaleTextViewTextToHeight(TextView tv)
{
final float initSize = tv.getTextSize();
//get the width of the view's back image (unscaled)....
float minViewHeight;
if(tv.getBackground()!=null)
{
minViewHeight = tv.getBackground().getIntrinsicHeight();
}
else
{
minViewHeight = 10f;//some min.
}
final float maxViewHeight = tv.getHeight() - (tv.getPaddingBottom()+tv.getPaddingTop())-12;// -12 just to be sure
final String s = tv.getText().toString();
//System.out.println(""+tv.getPaddingTop()+"/"+tv.getPaddingBottom());
if(minViewHeight >0 && maxViewHeight >2)
{
Rect currentBounds = new Rect();
tv.getPaint().getTextBounds(s, 0, s.length(), currentBounds);
//System.out.println(""+initSize);
//System.out.println(""+maxViewHeight);
//System.out.println(""+(currentBounds.height())); …Run Code Online (Sandbox Code Playgroud) 我有一个网页,我试图在我的Android设备上显示(从项目的资产目录加载)使用PhoneGap(使用普通的WebView设置为"appview"),但webview完全忽略以下内容:
<meta name = "viewport" content = "user-scalable=no,width=device-width" />
Run Code Online (Sandbox Code Playgroud)
无论我在这一行中设置什么(我已经尝试明确设置缩放,设置宽度/高度,以像素为单位等),设备完全忽略它并使网站非常小并锚定在左上角的屏幕.我可以使用捏合手势放大(即使我明确禁用了上面的html代码中的缩放),但我希望页面可以放大以正确适应设备的负载.
这是有趣的一点......如果我在我的网络服务器上放置完全相同的网站并使用我的测试设备上的默认浏览器导航到它,页面正确加载(缩放到设备的正确大小).
请帮忙.
谢谢.
EDIT1:
我目前的设置是:
<meta name="viewport" content="width=device-width,height=device-height,user-scalable=no,target-densitydpi=device-dpi,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" />
Run Code Online (Sandbox Code Playgroud)
这也完全被忽略了.
EDIT2:
这里有点有趣......
<meta name="viewport" content="width=device-width, initial-scale=2.0, maximum-scale=2.0, user-scalable=no" />
Run Code Online (Sandbox Code Playgroud)
以上行在模拟器中将页面缩放到2x,但在我的设备上没有任何变化(Samsung Epic运行2.2.1).尽管如此,即使是2倍,页面也没有缩放到模拟器的宽度......我必须将其设置为"initial-scale = 2.5".
我这里有代码,允许我连接到https服务器并传输数据.它工作得很好,但我想知道我是否正确地做到这一点,而我实际上正在建立一个安全的连接.请检查我的工作.谢谢.
public class HTTPSClient extends DefaultHttpClient
{
public HTTPSClient()
{
}
@Override
protected ClientConnectionManager createClientConnectionManager()
{
SchemeRegistry registry = new SchemeRegistry();
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
final SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
//socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", socketFactory, 80));
registry.register(new Scheme("https", socketFactory, 443));
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "UTF-8");
return new SingleClientConnManager(params, registry);
}
}
Run Code Online (Sandbox Code Playgroud)
我像这样使用这段代码:
HttpResponse response = mConnection.httpsClient.execute(new HttpHost("www.somehostname.com", 80), new HttpGet("https://someaddress")));
Run Code Online (Sandbox Code Playgroud)
然后我从那里读了回应.再次感谢.
我正在尝试创建一个使用webview的Android应用程序,允许用户输入他们的用户名/密码,但在点击输入框时,他们会加倍(见下图).我正在使用iScroll jQuery插件,允许用户在键盘出现时滚动页面并阻止输入区域.这是layout/css:
CSS:
#scroller{
position:absolute;
overflow:hidden;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index:0;
}
#scroll_content {
margin-top: 70px;/*must match the topbar height*/
padding-bottom:70px;
}
Run Code Online (Sandbox Code Playgroud)
HTML:
...
<div id="scroller">
<div id="scroll_content">
<!-- page content here -->
</div>
</div>
...
Run Code Online (Sandbox Code Playgroud)
我注意到,无论我在Android平台上查看哪个网页,它都会在我刚刚点击的输入上覆盖一个额外的输入框.我想,关键是在这种情况下禁用webview的默认值?你是怎么做到的,或者你甚至可以吗?
谢谢

这是一个简单的问题.有没有办法允许用户直接在我的应用程序中输入我的应用的评论和/或评级,并将这些数据发回到Android电子市场?如果是这样,如果我使用EditText视图来允许用户输入,那么代码会是什么样的呢?如果没有,那么这是我唯一的另一个选择直接链接到我在市场中的应用程序(即用户单击我的应用程序中的链接,或按钮,市场应用程序启动时显示我的应用程序页面)?例如:
view.setOnClickListener( new OnClickListener(){
public void onClick(View v) {
startActivity( new Intent( Intent.ACTION_VIEW,
Uri.parse("market://details?id=packagename") ) );
}
}
Run Code Online (Sandbox Code Playgroud)
*其中"packagename"被我的应用程序的清单中的包名替换.
谢谢.
我在使用XML创建一个简单的圆角矩形时遇到了麻烦.每当我尝试将"角落"元素添加到自定义形状时,我得到:
在android.view.View.View.draw(View.java)的android.graphics.drawable.RedientDrawable.draw(GradientDrawable.java:314)上的android.graphics.Path.addRoundRect(Path.java:514)的java.lang.UnsupportedOperationException 6520)...
RES/dawable/rounded_rectangle.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#ffffff"/>
<stroke android:width="3dp"
android:color="#ff000000"/>
<padding android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp"/>
<corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp" android:topRightRadius="7dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
使用上面的形状的简单layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<View android:id="@+id/View01"
android:background="@drawable/rounded_rectangle"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</View>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
Fyi,我正在尝试为Android 2.1编译,我已经安装了Eclipse和Android SDK的所有最新更新.这个形状是我在另一个网站上看到的东西的直接副本,但由于某种原因它不想为我工作.
谢谢.
我有一个应用程序开始播放声音并开始/恢复游戏中的onResume()方法,但我注意到,如果我的应用程序是最后一个运行的应用程序,当我把手机进入待机状态(屏幕关闭),我只需按菜单按钮查看时间,然后手机开始播放游戏并在后台发声(应用程序实际上看不到,只有带日期/时间的屏幕,但是必须在我的应用程序中调用onResume ).我该怎么办?有没有办法辨别什么是重新激活应用程序,然后添加条件语句只在应用程序实际可见时启动游戏?
这是我的onResume的一个片段:
@Override
protected void onResume()
{
mySaveGame = Utilities.loadSavegame(this);
//check the savegame
if(mySaveGame!=null)
{
//start game using savegame values
this.startFromSavedGame(mySaveGame.getIsLevelComplete());
}
else
{
//run the 1st-run components
this.startFirstRun();
}
super.onResume();
}
Run Code Online (Sandbox Code Playgroud)
我唯一想到的就是防止游戏在屏幕开启时启动(即使应用程序不可见)是将this.finish()作为onPause()中的最后一行...但是每次你想要回到它时都会强制你重新启动应用程序因为进程本身被杀死了(这很好,因为我的onPause保存了持久数据,但这不是一个优雅的解决方案).
请帮忙.
我正在尝试为Android创建一个使用加密来保存用户信息的应用程序,我无法弄清楚我做错了什么.我正在尝试使用"PBKDF2WithHmacSHA1"算法创建SecretKeyFactory的实例,但是应用程序会继续在程序中的那一点抛出异常(无论是在模拟器中还是在真实硬件上都无关紧要).
码:
SecretKeyFactory secretFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
Run Code Online (Sandbox Code Playgroud)
例外:
java.security.NoSuchAlgorithmException:未找到SecretKeyFactory PBKDF2WithHmacSHA1实现...
这是奇怪的事情......如果我把这个代码编译成普通的Java应用程序,它就可以工作......没有抛出任何异常,我可以创建加密文件(并解密它们)而不会出错.
我也尝试输入其他算法(例如AES,PBEWithHmacSHA1AndDESede,PBEWithMD5AndDES等),它们都在代码中的那一行产生相同的错误/异常(编译Android时).
我安装了最新版本的Java(JDK 1.6.0.18),所有更新都应用于Eclipse和插件,以及最新版本的Android SDK.我也在运行Windows 7 64位.
请帮助,我在两天的互联网搜索中找不到答案.谢谢.