从这个Android示例开始,我试图创建一个使用支持版本的应用程序(android.support.v4和android.support.v7).
该示例创建一个如下所示的菜单抽屉

我的代码得到了这个

请注意,图标是不同的,它的移动方式是不同的,在我的版本中,它不会移动.
示例代码
public class MainActivity extends Activity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
private String[] mPlanetTitles;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTitle = mDrawerTitle = getTitle();
mPlanetTitles = getResources().getStringArray(R.array.planets_array);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
// set a custom shadow that overlays the main content when the drawer opens
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
// set up the drawer's list view with items …Run Code Online (Sandbox Code Playgroud) android中有很多默认资源.我想用android.R.string.cancel和android.R.string.ok.
我可以很容易地在代码中执行此操作
getString(android.R.string.cancel)
Run Code Online (Sandbox Code Playgroud)
但是如何在layout.xml中做到这一点
@string/cancel
Run Code Online (Sandbox Code Playgroud)
试了几件事
@android.R.string/cancel
@android.string/cancel
Run Code Online (Sandbox Code Playgroud)
但这些都行不通.我确定我已经在开发教程中看到了这个,但现在找不到它.
我想过一些简单的测试只是运行一些命令我会尝试使用一些JavaScript并从Windows XP的命令行运行它.
因此,为了快速测试,我创建了一个脚本
alert('Hello, World!');
Run Code Online (Sandbox Code Playgroud)
然后试着运行它
D:\>Cscript.exe hello.js
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.
D:\hello.js(1, 1) Microsoft JScript runtime error: Object expected
Run Code Online (Sandbox Code Playgroud)
谷歌没有帮助,我相信我错过了一些愚蠢的东西,你们中的任何人都可以解释为什么这个简单的剧本不运行?
我的应用程序使用 OpenID 来验证用户身份。
第一页更像是一个启动屏幕,将用户带到网页以在需要时进行授权,或者仅执行令牌的后台刷新以导航到主屏幕。
我不确定如何在不单击按钮的情况下启动身份验证流程
@Composable
fun LoginScreen(viewModel: LoginViewModel) {
val ctx = LocalContext.current
AppTheme {
Screen()
}
viewModel.performLogin(ctx)
}
Run Code Online (Sandbox Code Playgroud)
执行上述操作是可行的,但当应用程序导航到主屏幕时,它会再次被调用。
fun loginComplete(navController: NavHostController) {
navController.navigate("main")
}
@Composable
fun MyApp(viewModel: LoginViewModel) {
val navController = rememberNavController()
viewModel.setOnLoginCompete(navController, ::loginComplete)
NavHost(navController, startDestination = "login") {
composable(route = "login") {
LoginScreen(viewModel)
}
composable(route = "main") {
MainScreen()
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为我不应该像在可组合函数中那样调用 PerformLogin 函数,但我看不到其他方法。我缺少什么?
我的活动中有一个WebView,使用Proguard进行混淆似乎打破了我的WebView,我不明白为什么.
代码非常简单,我在res/raw目录中有HTML文件,这里是调试时加载它的代码.
WebView mv = (WebView)findViewById(R.id.webView1);
mv.loadUrl("file:///android_res/raw/wesite.html");
Run Code Online (Sandbox Code Playgroud)
一旦我创建apk发布,通过proguard运行它不起作用,我只是得到无法加载页面.
我还没有在proguard配置文件中添加任何内容.
通过删除某些东西(我怀疑),我设法弄乱了我的一个Android项目.以下是我的清单和菜单资源.出于某种原因,当我运行应用程序时,我的操作栏没有显示菜单按钮.
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_settings"
android:title="@string/menu_settings"
android:orderInCategory="100"
android:showAsAction="never" />
</menu>
Run Code Online (Sandbox Code Playgroud)
表现:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp"
android:versionCode="6"
android:versionName="2.1.0" >
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MyActivity"
android:label="@string/title_activity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
我的活动代码中也有这个
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.menu_settings:
return true;
default:
return super.onOptionsItemSelected(item);
} …Run Code Online (Sandbox Code Playgroud) 然后,我向小部件添加了一个按钮,此按钮应启动服务,因此我将以下代码添加至了WidgetProvider
@Override
public void onEnabled(Context context) {
Log.e("ERROR", "REMOVE ME"); // TODO remove. This is for eclipse logcat recognition
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
Intent intent = new Intent(context, RepairService.class);
PendingIntent pi = PendingIntent.getService(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.widget_boost, pi);
}
Run Code Online (Sandbox Code Playgroud)
代码肯定会被调用,但服务不会启动。我确定我可能已经错过了服务PendingIntent的实现,但是我看不到什么。还有其他人知道吗?
android android-widget android-service android-pendingintent
我有一个Styles.xaml文件,我已经声明了各种颜色和样式.
<SolidColorBrush x:Key="MyColour" Color="#FFFF411E"/>
Run Code Online (Sandbox Code Playgroud)
我想在代码中访问它,因为我有控制权,我想将背景颜色绑定到对象中的Property.但是,这很容易实现,对象是根据对服务器调用的响应创建的,属性可以是多种颜色之一.我可以在代码中定义颜色,但是因为我在其他控件中使用相同的颜色,XAML我真的不想在应用程序中定义相同的颜色两次.所以我想要一种能够SolidColorBrush在代码中访问画笔以便能够使用它的方法.
任何想法是如何做到这一点?
我有一个应用程序,可以下载并显示来自URL的图像.这很好用
URLConnection conn = urls[i].openConnection();
conn.connect();
if(conn.getContentLength() > 0)
is = conn.getInputStream();
bis = new BufferedInputStream(is);
Bitmap temp = BitmapFactory.decodeStream(bis);
Run Code Online (Sandbox Code Playgroud)
我注意到WebView的下载和显示图像比上面的代码快得多,所以我想我会尝试.
String url = "http:\\image.jpg"
int mWidth = getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay().getWidth()
webView.loadData("<html><body> <img src=\"" + url + "\" width=\"" + mWidth + "px\" height=\"auto\"></body></html>", "text/html", null);
Run Code Online (Sandbox Code Playgroud)
虽然这样可以更快地获得图像,但是它不会将图像缩放到屏幕大小,因此大图像总是超出WebView的宽度并需要滚动才能正常查看.
有谁知道如何解决问题,以便在WebView中正确显示图像或如何加快图像的下载速度?
我希望加速下载,但如果我可以正确缩放图像,我很乐意使用WebView.